1Script – язык для автоматизации рутины в жизни специалиста по 1С

Публикация № 548028

Разработка - Математика и алгоритмы

Мы все здесь – автоматизаторы бизнеса. Мы занимаемся этим каждый день и делаем это хорошо. Но практика показывает, что специалисты по 1С очень редко, очень мало автоматизируют сами себя. Есть много мелких задач, которые мы, 1С-ники, привыкли делать руками, хотя большой класс из этих задач можно было бы переложить на работу машины. Именно об этом и хотелось бы сегодня поговорить.

Что можно автоматизировать?

Что такое вообще «автоматизация специалиста по 1С»? Что такое автоматизация автоматизатора? Что он может делать автоматически?

  • Самое очевидное – это бэкапы. Автоматические бэкапы приходят в голову в первую очередь.
  • Сюда же относятся такие простые, но очень важные и очень экономящие время вещи, как:
    • автоскачивание релизов;
    • обновления;
    • какие-то выгрузки, которые не нужны бизнесу, но нужны вам лично, и т.д.

Эти задачи встречаются абсолютно у каждого, и очень многие 1С-ники делают их руками. Как вы обычно делаете выгрузку базы? Заходите в конфигуратор, нажимаете «Выгрузить» и т.д.? А почему бы не сделать себе кнопку, которая будет запускать выгрузку автоматически? Эти вещи вообще не должны делаться руками.

Мы можем автоматизировать и более интересные задачи – например, собирать для себя такие показатели, как:

  • Статистику качества кода по различным метрикам;
  • Как часто изменяется тот или иной объект метаданных;
  • Какая корреляция между количеством изменений и количеством ошибок в этом объекте метаданных.
  • А если мы интегрируем получение этой статистики в процесс автоматических сборок, мы сможем отслеживать даже такие важные показатели, как, например - кто чаще и полезнее всего коммитит в наше хранилище 1С и т.д.

На каком языке удобнее всего писать скрипты автоматизации?

Ни для кого не секрет, что современная автоматизация IT-шников преимущественно выполняется на скриптах. Скрипты – это сценарии, которые написаны в обычных текстовых файлах. Для них не нужен отдельный компилятор, не нужно создавать проект в VisualStudio – это просто текстовики, которые можно запускать на исполнение. Это просто несложные программы, написанные в текстовом виде.

На чем можно писать скрипты автоматизации применительно к 1С? Существует масса инструментов для скриптинга:

  • Есть замечательный PowerShell, которым можно сделать очень много всего интересного и полезного. Правда, он есть только на Windows и у него довольно специфичный синтаксис.
    Не знаю, кому как, но мне, когда я что-то делал на Powershell (сейчас уже не делаю, потому что у меня есть OneScript), его синтаксис показался очень неудобным. Если оставить его использование на пару месяцев, то потом при возвращении приходится изучать его заново – настолько он быстро забывается из-за своей необычной специфики.
  • Есть VBScript, который также доступен только на Windows. Это довольно «бедный язык» и без обвязок в виде COM-объектов на нем писать не очень интересно. Он не то чтобы не мощный – он, скорее, просто скучный.
  • Есть прекрасные Python и Ruby, которые работают уже не только на Windows. Они кроссплатформенные, у них богатейшая библиотека объектов, огромные возможности – это прекрасные языки. Но они, опять же, требуют от 1С-ника специальной квалификации, поскольку это – отдельная область знаний, которую нужно изучить дополнительно к тем задачам по автоматизации бизнеса, которые у нас уже есть. И когда помимо бизнеса, который требует от нас автоматизации, нам нужно автоматизировать еще и самих себя, нам приходится изучать для этого целый отдельный спектр языков и их библиотек. Это неудобно.
  • Поэтому и появился OneScript. Это скриптовый язык, который выполняет текстовые файлы (маленькие, большие, какие угодно), но при этом не требует изучения нового языка и новых библиотек. Это – язык 1С, который выполняется независимо от платформы: может выполняться в Windows, в Linux, даже под управлением HTTP-сервера – где угодно. При этом он может расширяться, может добавлять новые библиотеки и т.д. Это – средство написания скриптов для 1С-ников на любимом нами языке 1С.

Что такое 1Script?

Итак, OneScript – это независимый от платформы 1С (никаким образом не использующий библиотеки платформы), кроссплатформенный интерпретатор языка 1С с полнофункциональной прикладной библиотекой.

Там есть работа с сетью, работа с файлами, с операционной системой.

Есть несколько режимов, несколько окружений работы.Это может быть:

  • Независимый скриптинг.
  • Разработка самостоятельных модульных консольных утилит.
  • А также несложные веб-службы, которые позволяет запускать специальный режим работы в качестве CGI-приложения под управлением HTTP-сервера. В этом режиме мы можем даже писать на 1С сайты. Но это, конечно, не самое правильное применение OneScript, потому что для написания сайтов есть соответствующие инструменты.

Как мы используем 1Script?

Мы уже больше года успешно применяем OneScript в режиме боевой эксплуатации в рамках одной крупной компании. С его помощью мы решаем три класса пересекающихся задач и наблюдаем при этом эффект синергии, поскольку, решая одну задачу, мы автоматически получаем средство для решения другой.

  • Итак, самое основное и самое полезное, что мы делаем – это синхронизация хранилища 1С с GIT. Решение этой задачи дало нам очень много дополнительных возможностей.
  • Кроме этого, с помощью скриптов на OneScript мы строим нашу непрерывную интеграцию:
    • В частности, мы автоматизировали сборку для наших решений на базе 1С.
    • И настроили автоматическое развертывание из собранного дистрибутива в рабочий контур.
  • И наконец, мы автоматически собираем метрики кода. Это позволяет нам анализировать общую статистику по качеству того кода, который выдают наши разработчики 1С.

Синхронизация с GIT

Итак, синхронизация хранилища 1С с GIT. Зачем нам это вдруг понадобилось?

Ответ, на самом деле, простой: такая синхронизация позволяет увеличить скорость доступа к истории кода.

Как мы привыкли работать с хранилищем 1С? Например, придя рано утром на работу, мы поняли, что у нас в коде есть некая строчка, которая все ломает. Кто внес эту строчку и когда? Мы открываем историю кода, отматываем пару версий назад, запускаем сравнение, идем пить чай, возвращаемся, смотрим: не та версия, строчка все еще есть. Выбираем новую историю, запускаем сравнение, выпиваем чай, смотрим: не та версия. Ругаемся матом, выбираем другую версию и т.д. Получается, что из-за несовершенства инструмента мы тратим наше драгоценное время, неэффективно расходуем его, выполняя разбор полетов – кто и когда внес эту строчку.

А имея код исходников 1С в GIT, мне достаточно написать: git blame, и через секунду я уже вижу, кто внес эту строчку и когда. Таким образом, синхронизация хранилища 1С с GIT не заставляет меня пить чай литрами.

Для синхронизации хранилища с GIT мы используем специальное приложение на OneScript, о нем – чуть позже.

Пример выгруженных в GIT исходников 1С показан на скриншоте. В качестве сервера репозиториев мы используем Stash (это корпоративный аналог BitBucket).

У нас в компании внедрен стек Atlassian – это Stash, Jira, Codereview в виде Crucible и т.д., причем все эти инструменты  замечательно интегрированы. Это дает очень полезный совокупный эффект.

Синхронизируясь с хранилищем, я уже прямо в веб-интерфейсе Stash вижу всю историю. Когда я хочу сравнить одну версию с другой, мне не нужно ждать – я просто кликаю по ссылкам и получаю сравнение за секунды.

Особенности синхронизации:

  • Для каждого коммита в таблице указан его автор – ссылка на соответствующего пользователя домена Stash.
    Естественно, что в хранилище 1С свои пользователи, они сохраняют туда результаты своей работы и пишут комментарии к закладкам. Причем пользователи хранилища 1С могут называться совсем по-другому,  чем соответствующие им пользователи Stash. А при запуске приложения gitsync пользователи хранилища 1С автоматически отображаются на пользователей домена Stash. И результаты мы видим уже в разрезе доменных пользователей – кто сделал закладку и когда.
  • Также для каждого коммита отображается соответствующий ему текст закладки из хранилища 1С
  • А если в комментарии к закладке был указан код задачи, то мы в отдельной колонке видим ссылку для ее открытия в Jira.И наоборот, рассматривая задачу в Jira, мы можем увидеть, какие строки кода были изменены в ходе работы над ней.

Самое главное здесь то, что мы при этом ничего не ждем. В мире и так сделано очень много полезных инструментов, и мы можем успешно их друг с другом интегрировать. Например, изобретен GIT, а с ним уже по умолчанию работает масса инструментов, включая и те, о которых я говорю. Поэтому, получая исходники в GIT, мы автоматически получаем доступ ко всем наработкам мирового сообщества. Это очень удобно.

Точно так же доступен быстрый контроль изменений в рамках коммита – я сразу вижу, кто, что и где менял, по каким модулям.

Еще один момент, от которого мы получили пользу практически сразу, как только внедрили – это обзоры кода. Это та штука, которая дала моментальный положительный эффект– мы сразу сказали: «Вау, как классно получается!»

Обзор кода мы выполняем с помощью Atlassian Crucible. Это продукт также из стека Atlassian, он тоже успешно интегрируется.

Какие положительные моменты мы получаем? Их несколько.

  • В первую очередь, это обмен знаниями, даже на нескольких уровнях. Мы выделили экспертную группу, которой команда доверяет, разрешая смотреть и критиковать код:
    • во-первых, идет обмен знаниями от экспертов к менее опытным коллегам, когда они передают какой-то опыт и говорят – так делать можно, а так нельзя и т.д.
    • а во-вторых, когда эксперты комментируют одну и ту же задачу, они еще и обучают друг друга: один заметил одно, другой – другое, научили друг друга. Это активизирует обмен знаниями и накопление опыта в команде.
  • При проведении обзоров кода удалось решить еще одну важную проблему. Дело в том, что разработчики, когда пишут, не знают, что делает их коллега. Они в соседний модуль не лезут: «я там ничего не знаю, ничего не понимаю, и знать не хочу». А сейчас, после внедрения обзоров кода, они волей-неволей становятся в курсе проблем своих коллег. И в случае, например, какого-то форс-мажора или чьей-то болезни, они тоже могут подключиться к разработке, потому что теперь они также владеют темой этого модуля (хотя, в принципе, это произошло автоматически – их никто не заставлял). Получается, что, изучая код, разработчики учатся тому, что происходит в соседних модуляхлучше понимают архитектуру системы, меньше пишут костылей, меньше копипаста и т.д.
    Этот полезный эффект мы получили практически в первые дни после внедрения обзоров кода.
  • И третий момент – у нас стали быстро находиться баги. Они стали находиться еще даже до попадания в сборку, не говоря уже про рабочий контур. Это стало возможным именно благодаря таким просмотрам кода. Когда смотришь свой код, в нем тяжело найти ошибку, но стоит отдать его чужому человеку, он находит ошибки очень быстро. Это очень эффективно, попробуйте!

Как мы получили все эти прелести?

Мы взяли инструмент  v83unpack, который написал очень уважаемый мною Евгений Сосна. Если кто не знает, v83unpack – внешняя обработка, которая выложена на github. А поскольку она написана на 1С, то мы обычным копированием через буфер обмена можем просто перенести ее код в скрипт и выполнять там (с небольшими изменениями). На базе этой обработки и было написано приложение gitsync.

Приложение gitsync – это именно консольная утилита. Поэтому запуская ее, вы даже не думаете, на каком языке она написана, вы прямо в командной строке пишете:

gitsync <путь к хранилищу> <url удаленного репозитория>

Нажимаете Enter – и все, пошла синхронизация.

Сборка релиза

У нас внедрено релизное управление – это означает, что на рабочий контур накатывается не какая-то закладка в хранилище 1С, а выпускается специальный новый релиз, для которого мы собираем полноценный setup.exe (такой же полноценный дистрибутив, с каким поставляются типовые конфигурации и который устанавливается в каталог шаблонов).

Этот дистрибутив включает в себя не только код, но и документацию, приемочные тесты, какие-то внешние обработки и т.д. Все это мы также храним в GIT. Получается, что у нас не только код, но и вся сопроводительная документация, все материалы к релизу также версионируются в едином хранилище.

И, когда мы запускаем цикл сборки, все это компонуется в файл релиза (файл setup.exe), который мы выкладываем на сетевое хранилище, чтобы команда поддержки могла его оттуда забрать и развернуть в рабочей базе.

Развертывание релиза

Сценарий развертывания у нас довольно простой и, в принципе, стандартный: билд-сервер загружает релиз, который ему выложили разработчики, отключает пользователей и выполняет развертывание. Это все, в принципе, понятно.

На скриншоте показан скрипт, который выполняет развертывание. Как вы видите, проверяется число попыток отключений, и если пользователь все еще есть, мы выводим сообщение, ждем немного, пытаемся опять его отключить и т.д.

Здесь показана выдержка из лога билд-сервера. Обратите внимание, что в результатах сборки отображается сообщение о работающих сеансах, которое было прописано в скрипте – соответственно, мы можем отследить, как происходил процесс развертывания.

Билд-сервер для непрерывной интеграции

В качестве билд-сервера мы у себя используем TeamCity – он показан на скриншоте. Здесь можно увидеть наши проекты и состояние по ним. Например:

  • по первому проекту показано, что его код уже синхронизирован с GIT,
  • а по второму – релиз уже развернут в нужный контур и в нем успешно проведены тесты.

Просто открываем браузер и смотрим статистику, где какая версия в каком состоянии у нас находится, и т.д.

Чтобы раскатать релиз в базу, нам достаточно нажать кнопку Runв консоли билд-сервера, и мы получаем либо развертывание, либо сборку нового релиза.

Метрики кода

Что касается метрик кода, мы в основном используем уже существующие инструменты – либо с Инфостарта, либо те, которые получили в сообществе.

  • Например,у нас идет расчет покрытия кода тестами, которое реализовано, опять же, силой таланта Леонида Паутова и Евгения Сосны.
  • Есть анализ цикломатической сложности кода, когда мы смотрим, какие модули у нас наиболее запутанные и наиболее плохие – мы каждую сборку собираем статистику по цикломатике и, если она куда-то прыгает, значит, где-то кто-то что-то плохо, непонятно написал.
  • Еще мы используем известную обработку «Копипастамер» от ildarovich – это анализ повторяющихся фрагментов кода по всей конфигурации. В результате мы можем видеть  статистику, и если какой-то показатель превышает порог, значит, кто-то, не разобравшись в коде соседа или в общих модулях, просто взял и что-то «скопипастил», хотя эту процедуру надо было просто вынести с директивой Экспорт в отдельный модуль для повторного использования. Ну и начинается сразу разбор.

Как разрабатывать скрипты?

Мы для этого используем программу Notepad++. На Инфостарте можно найти подсветку синтаксиса языка 1С для Notepad++, а всплывающая подсказка там есть прямо «из коробки».

Необходимо сделать всего лишь пару настроек, и программа Notepad++ превращается в неплохую среду разработки, которая позволяет:

  • Писать код с подсветкой синтаксиса и со всплывающей подсказкой;
  • В отдельной панели видеть файлы проекта;
  • И, что самое главное: прямо отсюда мы можем запустить этот код на выполнение и увидеть внизу его непосредственные результаты. Например, я написал код, нажал F6 и внизу пронаблюдал результат его выполнения.

Я никуда не переключаюсь – это одно окно, где есть все, что нужно для разработки скриптов. Буквально в три нажатия кнопки Notepad++ превращается в такой редактор кода. Очень удобно.

Устройство языка 1Script. Доступная документация по проекту

Как устроен OneScript внутри?

  • Это – приложение.NET, которое довольно стабильно работает и под LinuxMono 3.12 и под .NET 4.0.
  • Он написан на C#.
  • Его исходные коды открыты.
  • Есть встроенная стандартная библиотека для взаимодействия с операционной системой.
  • И еще есть набор полезных наработок – инструментов, уже написанных на OneScript.

Есть сайт – oscript.io, на котором находится вся документация по проекту.

Там описан процесс установки, запуска: как разрабатывать, расширять и т.д.

Также, что мне кажется наиболее важным, там есть онлайн синтаксис-помощник. Поэтому, когда вы захотите поподробнее узнать возможности глобального контекста, а также какие свойства и методы есть у того или иного класса, и т.д., достаточно зайти на oscript.io и посмотреть подсказку по синтаксису.

Новое в проекте. Библиотеки. Пакеты приложений

В прошлом году я уже делал доклад по OneScript, но тогда это был просто анонс инструмента, наработок непосредственно на скриптах на тот момент было еще очень мало, но мы уже довольно успешно использовали его у себя внутри, и нам это очень нравилось.

Постепенно накопилась кодовая база, которую захотелось использовать повторно.

Поэтому я добавил в движок возможность использовать библиотеки – была внедрена нестандартная директива препроцессора, которая так и называется: #Использовать (на скриншоте ее видно).

И теперь, если мы вначале скрипта пишем:

#Использовать <некую библиотеку>

у нас в области видимости скрипта появляются объекты этой библиотеки (классы или модули).

Например, если мы пишем:

#Использовать tempfiles

У нас подключается модуль «временные файлы», который содержит полезные функции для работы с временными файлами (автоудаление и пр.).

А для того, чтобы подключить мощную библиотеку строковых функций, нужно написать:

#Использоватьstrings

Более того, с тех пор появились пакеты программ:

  • Это уже не просто какие-то отдельные скрипты, которые где-то лежат. Это модульные приложения с точкой входа, они могут содержать наборы модулей самых разных видов.
  • Эти пакеты могут быть упакованы и распространяться в виде дистрибутивов. Причем предусмотрена автоматическая установка этих дистрибутивов с помощью пакетного менеджера.
  • Внутренняя структура приложения ничем не ограничена, автор пакета может строить свое приложение, как ему заблагорассудится.
  • Сам движок OneScript никак не диктует то, как библиотека должна быть устроена внутри - есть определенная инфраструктура загрузки библиотек, только и всего.

Схема загрузки библиотек

Как организована инфраструктура для загрузки библиотек?

  • В системе есть каталог, в котором лежат установленные пакеты. Их может быть несколько – это прописывается в конфигурации.
  • И есть модуль загрузчика (это тоже скрипт), который эти пакеты загружает в область видимости движка, в область видимости скриптов.

При этом, как я уже сказал, внутреннее устройство отдельной библиотеки никак не регламентируется, никак не диктуется.

Единственное, чтобы упростить задачу разработчика, есть стандартное соглашение о том, как строить пакет так, чтобы с ним было удобно работать.

В соответствии с этим соглашениеммы можем складывать зависимые скрипты пакета в предопределенные каталоги «Классы» и «Модули»: если скрипт лежит в каталоге «Классы», значит, что это объект, который можно создавать с помощью оператора«Новый».

Допустим, если у нас там лежит файл Пользователь.os, то в основном скрипте библиотеки мы сможем создавать класс с помощью конструкции:

Новый Пользователь().

А если мы положим скрипт в папку «Модули», то мы сможем использовать его как общий модуль (сразу через точку, как свойство глобального контекста):

УправлениеПользователями.Удалить();
РаботаСФайлами.Существует(“log.txt”);

Если автор пакета захочет структурировать свои модули согласно этой схеме, ему надо всего лишь разложить соответствующие файлы в нужные папочки и добавить в свой пакет отдельный модуль загрузчика package-loader.os (помимо основного файла загрузчика, который лежит в корневой папке библиотек). Стандартный код такого «дополнительного» загрузчика показан на следующем слайде. При желании, его можно кастомизировать – внести туда свои правки или вообще написать свой вариант.

Что такое загрузчик? Это тоже скрипт. Поскольку вся логика загрузки библиотеки не прошита в движке, а точно так же заскриптована, мы можем просто поправить в этом скрипте событие ПриЗагрузкеБиблиотеки (здесь видно, что оно заключается в банальном переборе файлов каталога).

Как происходит загрузка библиотеки?

Когда компилятор встречает в скрипте директиву #Использовать, он ищет каталог, в котором лежит эта библиотека,инициализирует еемодуль загрузчика и выполняет его обработчик события ПриЗагрузкеБиблиотеки (там прописан алгоритм интерпретации загрузкиэтой библиотеки).

Пакетный менеджер

У нас есть облачное онлайн-хранилище пакетов, куда мы выкладываем сформированные нами наработки – вы можете их устанавливать и повторно использовать.

Для удобной работы с этими наработками есть пакетный менеджер, я назвал его opm (OneScriptPackageManager). Он также написан на OneScript и представляет собой консольную утилиту.

Вы открываете консоль и сразу пишете:

opm install gitsync

И дальше приложение запускается, идет в облако, скачивает приложение gitsync и устанавливает его. Поэтому следующим вашим шагом будет:

gitsync <хранилище такое-то> <urlрепозитория такой-то>

Это уже не просто скрипты, это приложения, которые запускаются сразу в командной строке под собственным именем.

Для того, чтобы opm мог как-то идентифицировать пакет при скачивании, автору пакета достаточно подготовить специальный файл манифеста, который пишется в стиле «конфигурирование через код». По сути, это код, но он выглядит, как конфигурационный файл.

Мы пишем в нем:

  • имя пакета такое-то,
  • версия такая-то,
  • зависит от пакетов 1, 2, 3…
  • И, если это – приложение с исполняемой точкой входа, то мы прописываем еще и эту точку входа (исполняемый файл).

В случае, если у приложения прописана исполняемая точка входа, при установке через пакетный менеджер автоматически сгенерируется shell-скрипт, который будет эту точку входа запускать. И в результате мы получаем утилиту командной строки, пользователю которой неважно, на каком языке она написана – он просто ее запускает.

Примеры библиотек

Немного о тех библиотеках, которые у нас уже есть.

Самой полезной по отдаче для нас стала библиотека v8runnerобъектная обертка для конфигуратора.

Все знают, что у конфигуратора есть параметры запуска, позволяющие выгрузить конфигурацию, загрузить конфигурацию, разложить на файлы – очень много команд. И мы написали объектную обертку, которая позволяет нам удобно вызывать эти команды конфигуратора.  Для этого мы подключаем библиотеку v8Runner и пишем:

Конф = Новый УправлениеКонфигуратором();

Конф.ЗагрузитьКонфигурациюИзФайла(ПутьКФайлу)

И она загружает этот файл конфигурации в нужную базу.

Мы можем создать информационную базу и указать версию платформы, которая должна быть при этом использована: v8runner сам определит, где установлена платформа, каких версий, найдет максимальную или определит наиболее близкую по маске. Эти низкоуровневые и неинтересные вещи закрыты там внутри, они не отвлекают ваш мозг от решения основной задачи.

Эта библиотека оказалась очень полезной – мы ее активно применяем.

Даже если вы не будете использовать OneScript (что делать нельзя), вы можете просто использовать этот код в своих разработках 1С – поскольку синтаксис одинаковый, код можно портировать просто переносом через буфер обмена.

Вторая библиотека, которая имела такой же полезный эффект – это библиотека логирования logos, которая была написана под впечатлением от log4j (библиотека логирования для Java). Получилось логирование в стиле log4j на языке 1С.

Выглядит это так: мы у себя в коде приложения прописываем сообщения разного уровня, говорим, что это сообщение – об ошибке, это – вообще отладочное сообщение (оно нам не нужно) и т.д. А потом уже при эксплуатации приложения мы просто регулируем его «болтливость», устанавливая уровень лога (сейчас хочу отладочные сообщения, а сейчас – не хочу). Мы получаем нужный нам в данный момент уровень детализации лога, не переписывая код. Это очень удобно.

Если я не ошибаюсь, сейчас уже накоплено порядка десяти библиотек, которые родились в процессе применения OneScript в нашей компании. А поскольку мы ничего не прячем, то в проекте появляются библиотеки повторно используемого кода.

Заключение

В заключение, хотелось бы резюмировать:

  • Все, что мы делаем руками, нужно постараться автоматизировать. Если вы несколько раз подряд что-то проделали вручную, нажимая мышкой, надо задуматься: если вы сделали какую-то последовательность действий один раз – бог с ней, а если вы ее сделали два и даже три раза –надо писать скрипт автоматизации.
  • Для этого есть инструмент – OneScript, который достаточно стабильно работает (уже больше года в крупной компании в режиме боевой эксплуатации).
  • Этот инструмент – уже не просто скриптовый движок, это уже некая экосистема наработок для автоматизации 1С-ников.
  • В этой экосистеме естьоблачный пакетный менеджер, с помощью которого мы можем инсталлировать или удалять пакеты по мере необходимости, выполняя пару команд в консоли.

Язык 1С – это такая linguafranca для 1С-ников. Когда наши коллеги в соседнем отделе внедряли у себя непрерывную интеграцию, я отдал им наши скрипты и какую-то документацию. Потом через пару дней встречаю в коридоре: «ну как, получилось?» Он говорит: «да, было что-то непонятно, но я посмотрел в код и разобрался». Смысл в том, что мы говорим с ним на одном языке и, когда ему непонятно, он может просто посмотреть в код. А если бы я написал это, не дай бог, на ruby, то он бы посмотрел в код и сказал: «Что это? Не буду я разбираться, внедрять не буду». А здесь он смог посмотреть в код, разобраться и внедрить у себя полезный инструмент непрерывной интеграции (о ее пользе мы говорить не будем, она очевидна).

Ресурсы проекта:

  • В первую очередь, это oscript.ioсайт проекта, на котором есть синтаксис-помощник и документация,
  • Также это hub.oscript.iohub пакетов. Пока не богатый, но я думаю, что он будет развиваться.
  • Это https://github.com/oscript-library –репозиторий скриптов
  • И https://github.com/EvilBeaver/OneScript  – репозиторий самого движка.

 

****************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2015 CONNECTION 15-17 октября 2015 года.

Приглашаем вас на новую конференцию INFOSTART EVENT 2019 INCEPTION.

От автора:

За год, прошедший с момента данного выступления, часть информации несколько потеряла актуальность, мы не стояли на месте и многое улучшили. В частности, активные участники сообщества @nixel2007, @bambr1975, @pumbaEO (кого забыл, напомните), создали новый редактор кода на 1С, взамен упомянутого здесь Notepad++. Рекомендую пользоваться именно этим редактором на базе Visual Studio Code.

https://github.com/xDrivenDevelopment/vsc-language-1c-bsl/blob/master/README.md

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1184 14.09.16 12:42 Сейчас в теме
+1 Хорошее выступление и хорошее статья
kraynev-navi; +1 Ответить
22. Evil Beaver 6754 15.09.16 11:24 Сейчас в теме
2. infosoft-v 462 14.09.16 15:01 Сейчас в теме
на сайте http://www.oscript.io/ выводится:

No Application Found

Unable to find a matching application for request:

Host www.oscript.io
Port 80
Request Path /Home
Physical Path /var/www/oscript.io/Home


Инфостарт эффект?
8. white-mount 14.09.16 18:05 Сейчас в теме
20. Evil Beaver 6754 15.09.16 11:10 Сейчас в теме
3. infosoft-v 462 14.09.16 15:09 Сейчас в теме
Спасибо за отличную статью.
Коллеги, поделитесь опытом, как отлаживать скрипты? Какие инструменты доступны?
5. pumbaE 634 14.09.16 15:19 Сейчас в теме
(3) infosoft-v, отлаживать принтами, скажите спасибо, что не алертами.
6. infosoft-v 462 14.09.16 15:39 Сейчас в теме
4. infosoft-v 462 14.09.16 15:11 Сейчас в теме
Ещё вопрос. Разработка в среде VSC возможна?
9. kirillkr 28 14.09.16 18:52 Сейчас в теме
7. json 14.09.16 16:39 Сейчас в теме
А существует ли аналог процедуры Состояние() для индикации долговыполняющихся процессов?
10. ret-Phoenix 474 14.09.16 20:40 Сейчас в теме
(7) yurii_host, Можно реализовать используя GUI библиотеку. синтаксис практически идентичен 1С: https://github.com/ret-Phoenix/oscript-simple-gui
Vladimir Litvinenko; vasiliy_b; +2 Ответить
12. json 15.09.16 00:24 Сейчас в теме
(10) ret-Phoenix, спасибо
Круто что даже формы есть (правда пока обычные)) )
13. ret-Phoenix 474 15.09.16 00:31 Сейчас в теме
(12) yurii_host, а какие хочется?
для решения текущих задач этого хватает, даже больше чем нужно.
11. davdykin 24 14.09.16 23:27 Сейчас в теме
Спасибо! Интересно и познавательно
14. tormozit 5824 15.09.16 00:46 Сейчас в теме
С ростом количества и сложности кода на любом языке будет расти и потребность в отладчике. У всех распространенных скриптовых языков есть отладка. Так что по-прежнему очень ждем ее.
Также была бы полезна и подсказка после точки. Какие здесь перспективы?
shalimski; alanto23; artbear; ABudnikov; Evil Beaver; pumbaE; +6 Ответить
15. pumbaE 634 15.09.16 09:15 Сейчас в теме
Мы помним свой вопрос (14)
19. Evil Beaver 6754 15.09.16 11:09 Сейчас в теме
(14) tormozit, если помнишь, на хабре я писал про проблему роста. Я бы с удовольствием занялся отладчиком, но куча более актуальных дел (поддержка библиотеки скриптов, багфиксы, работа, личная жизнь) не дают задаче вспыть на поверхность.
cleaner_it; +1 Ответить
23. Evil Beaver 6754 15.09.16 11:26 Сейчас в теме
(14) tormozit, А что ты про подсказку после точки спрашивал? Есть же она.
24. tormozit 5824 15.09.16 11:54 Сейчас в теме
25. Evil Beaver 6754 15.09.16 13:16 Сейчас в теме
(24) tormozit, я имел в виду VSC, она не такая умная, какую ты хочешь, но ее хватает за глаза
16. kraynev-navi 461 15.09.16 09:15 Сейчас в теме
В разделе "На каком языке удобнее всего писать скрипты автоматизации?" еще можно упомянуть AutoIt. Вторая колонка как у PowerShell ))

(0)
Необходимо сделать всего лишь пару настроек, и программа Notepad

Я бы сюда ссылку на вашу же статью подставил
18. baton_pk 401 15.09.16 10:24 Сейчас в теме
(0)
И https://bitbucket.org/EvilBeaver/1script/ – репозиторий самого движка.

я понимаю, что это по мотивам 2015-го года, но как бы это... https://github.com/EvilBeaver/OneScript


и https://github.com/oscript-library
21. Evil Beaver 6754 15.09.16 11:12 Сейчас в теме
(18) baton_pk, да, это чистый транскрипт выступления 2015 года, сделанный командой Инфостарта. Помимо того, что ты сказал, еще и Notepad++ стал неактуален, с выходом Visual Studio Code.

Поправлю.
26. LeXXuS_ju 15.09.16 15:39 Сейчас в теме
Доброго времени суток.
Вот решил попробовать Gitsync, но опыта нет. Может ткнете носом почему может выдавать ошибку как на скрине.
Прикрепленные файлы:
vasiliy_b; +1 Ответить
39. vasiliy_b 281 16.09.16 11:22 Сейчас в теме
(26) LeXXuS_ju, У Вас не установлен Git
42. LeXXuS_ju 16.09.16 15:54 Сейчас в теме
(39) vasiliy_b, да так и было))
Теперь выдает ошибку 128.
У меня возник вопрос как скрипт получает доступ к гитхабу, если мы нигде пароль не указываем?
Я пробовал генерировать ключ SSH и он даже мне отозвался через Git Bash, но после вызова
gitsync init <каталог или файл хранилища> <локальный каталог git> [-email домен почты пользователей]
пишет: Не удалось получить изменения с удаленного узла (код : 128).
Прописал еще это:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
P.S. [-email домен почты пользователей] - это просто email,под которым зарегистрирован на Гитхабе?
43. vasiliy_b 281 16.09.16 18:07 Сейчас в теме
(42) LeXXuS_ju, пароль будет спрашиваться тогда когда вы будете выполнять обмен с сервером например после команды "git push -u origin master"
27. capitan 1672 15.09.16 16:57 Сейчас в теме
Все скриптовые языки рано или поздно упираются в отсутствие форм.
А затем в отсутствие БД в которой можно хранить настройки/результаты.
Но если в упомянутых выше и упомянутом всуе AutoIt, который я например считаю самым быстрым стартом в автоматизацию рутинных операций, их изначально не было, то в 1С изначально все это есть.
И упрощение - это на любителя.
ИМХО при всех упомянутых выше операциях было бы неплохо хранить результаты их выполнения.
В чем выигрыш по сравнению с БД 1С в которой живут те же скрипты, кроме свободной лицензии?
Хотя задания по администрированию обычно запускаются при отключенных пользователях и проблемы с этим не должно быть.
28. ret-Phoenix 474 15.09.16 17:05 Сейчас в теме
(27) capitan,
для OneScript есть и формы (ссылка ранее приводилась https://github.com/ret-Phoenix/oscript-simple-gui) и работа с БД (https://github.com/ret-Phoenix/oscript-sql). При этом поддерживаются СУБД: MS SQL Server, PostgreSQL, MySQL, Sqlite. Операции DDL + DML

Создание бекапов - самое простое применение. сейчас на язые OneScript написано много чего, стоит глянуть библиотеку скриптов.
Vladimir Litvinenko; afanasko; +2 Ответить
31. capitan 1672 15.09.16 18:25 Сейчас в теме
(28) ret-Phoenix, сегодня и ежедневно вчера оба сайта oscript.io в уставшем состоянии.
Но это только подтверждает мои слова - вы делаете аналог БСП, только почему то за пределами базы 1С.
32. ret-Phoenix 474 15.09.16 18:37 Сейчас в теме
(31) capitan, Аналог БСП? Что за бред?
БСП - каркас для конфигураций.
На OneScript у многих из нас сделано
- бекапирование
- проверка обновлений
- чистка кеша
- управление списком баз
- синхронизация с git (как вместе с хранилищем так и без, например для внешних отчетов)
- различные схемы разворота рабочего места как пользователя так и разработчика
и много прочего. Тот же парсинг текста, приведение его в порядок. расширения конфигуратора как снегопатовские, так и мои.
35. Evil Beaver 6754 16.09.16 01:47 Сейчас в теме
(31) capitan, сайт работает, падений не залогировано. Что именно не работает? Он не открывается по префиксу www, но это так и задумано.
38. zqzq 21 16.09.16 10:22 Сейчас в теме
(27) capitan, у меня вот уже более 1.5 года живёт "карманная" база 1С для административных работ: обмены, обновления и т.д..
Плюсы: быстрый старт, всё в одном месте (без внешних программ и текстовых файликов) в одной базе, можно код версионировать стандартным хранилищем и настройки забивать в справочники и логи хранить в журнале регистрации.
Минусы: так и не смог настроить, чтобы из регламентного задания 1С запускался exe конфигуратора, что-то с правами, поэтому из планировщика винды запускаю толстый клиент базы с параметрами запуска, а он уже парсит параметры и выполняет обработки.
40. capitan 1672 16.09.16 12:57 Сейчас в теме
(38) zqzq, аналогично, шеф.
Я думаю, у каждого, у кого за плечами около полсотни баз имеет такую базу.
63. grumagargler 662 05.08.17 00:30 Сейчас в теме
(27)
В чем выигрыш по сравнению с БД 1С в которой живут те же скрипты, кроме свободной лицензии?

- есть версия платформы для обучения, она бесплатна.
29. necropunk 7 15.09.16 17:56 Сейчас в теме
Задумываюсь о полноценной работе с git, но c v8unpack не хватило времени разобраться, а без нее git не очень для меня полезен. В основном работаю не с самой конфигурацией, а с внешними обработками и алгоритмами в Инструментах разработчика, то есть все хранится вне базы, с промежуточными версиями в каталоге разработки. Можно ли с помощью 1Script связать каталог с git, чтобы в версиях хранился именно код внешних обработок? Если кто делал, подскажите, где почитать об этом? Пока попробую с 1Script поразбираться.
30. ret-Phoenix 474 15.09.16 17:59 Сейчас в теме
33. comol 4321 16.09.16 00:05 Сейчас в теме
По-моему этой публикацией ты лишил денег с десяток консалтинговых компаний :)))
34. comol 4321 16.09.16 00:08 Сейчас в теме
Ещё бы подсветку синтаксиса 1С при codereview кто-нибудь доделал либо в gitlab либо в Atlassian
36. Evil Beaver 6754 16.09.16 01:48 Сейчас в теме
(34) comol, насколько я знаю, в гитлабе уже сделали подсветку
37. ret-Phoenix 474 16.09.16 09:53 Сейчас в теме
(36) На GitLab есть, но какая-то плохенькая, до того, что сделали на GitHub далеко.
41. emc2 16.09.16 15:36 Сейчас в теме
Спасибо! За огромный труд в облегчении рутинной работы. Спасибо! Жду дальнейших новинок!
44. tehas 48 19.09.16 17:21 Сейчас в теме
Крутая вещь!
Есть маленький недочет (я так думаю).
Что бы передать переменную с текстом (например) а = "1C:Enterprise 8.3 Server Agent";
Приходится писать примерно так:
Служба = Символ("34") + "1C:Enterprise 8.3 Server Agent"+Символ("34");

Иначе на выходе имеем 1C:Enterprise 8.3 Server Agent (то есть уже без кавычек).
Может не совсем ясно описал, попробую привести пример:

Так команда не выполнится, так как есть пробелы между слов:
Служба = "1C:Enterprise 8.3 Server Agent";
ЗапуститьПриложение("net stop "+Служба,,Истина);

Сейчас выполнится, так как передастся именно с кавычками:
Служба = Символ("34") + "1C:Enterprise 8.3 Server Agent"+Символ("34");
ЗапуститьПриложение("net stop "+Служба,,Истина);
45. vasiliy_b 281 19.09.16 17:55 Сейчас в теме
(44) tehas, я тоже пока изучаю возможности, поэтому задам наводящий вопрос, а так писать пробовали:
Служба = """1C:Enterprise 8.3 Server Agent""";
?
т.е как в 1с поставить 3 кавычки в начале и 3 в конце
46. tehas 48 19.09.16 21:24 Сейчас в теме
(45) нашел у них в скриптах функцию
Функция ОбернутьВКавычки(Знач Строка);
	Если Лев(Строка, 1) = """" и Прав(Строка, 1) = """" Тогда
		Возврат Строка;
	Иначе
		Возврат """" + Строка + """";
	КонецЕсли;
КонецФункции

Думаю не зря именно ее используют.
47. vasiliy_b 281 20.09.16 10:28 Сейчас в теме
(46) tehas, Все правильно, там как раз используется принцип двойных кавычек. Так что все отрабатывается как в 1с
50. Evil Beaver 6754 21.09.16 23:54 Сейчас в теме
(44) (46) tehas, экранирование кавычек работает точно так же, как в 1С. Дублированием символа кавычки.

Непонятно, почему у вас возникла необходимость использовать Символ( 34 ).
48. raevsky@e1.ru 20.09.16 14:24 Сейчас в теме
Так и не открывается:

При получении URL http://oscript.io/downloads произошла следующая ошибка

Соединение с 212.116.121.15 не удалось

Система вернула: (113) No route to host

Удаленный узел или сеть недоступен. Повторите запрос позднее
49. Evil Beaver 6754 21.09.16 23:49 Сейчас в теме
(48) raevsky@e1.ru, ну я не знаю....



http://prntscr.com/cksi5h

Вот сайт на текущий момент. Позавчера действительно был остановлен на несколько часов, но это только и всего.
51. baton_pk 401 22.09.16 10:41 Сейчас в теме
(49) было-было. не ругайте человека. не был вчера сайт доступен.
52. Evil Beaver 6754 22.09.16 14:20 Сейчас в теме
(51) baton_pk, не ругаю ) Кстати, если нужно просто скачать дистрибутив, то на гитхабе есть раздел releases, куда также выкладываются файлы программы.
53. dreadlord 22.09.16 14:56 Сейчас в теме
Оч познавательная статья, спасибо. Инструмент обновляем
54. Brawler 469 24.09.16 20:41 Сейчас в теме
Не зря 1С навела паники по поводу вирусов)))
Скоро их реально станет больше и их налобают даже на 1Script )))
55. Evil Beaver 6754 26.09.16 19:43 Сейчас в теме
(54) Brawler, ну да. Чтобы заразить машину нужно поставить движок, скачать вредный файл, запустить его с полными правами... А так, конечно, язык виноват, что на нем вирусы пишут, да )
56. necropunk 7 04.10.16 15:12 Сейчас в теме
Пытаюсь осваивать потихоньку, но есть проблемы.
Поставил Notepad++, подсветку, поставил плагин NppExec, по F6 прописал oscript "$(FULL_CURRENT_PATH)" но у меня при запуске любого файла, даже просто с кодом Сообщить("!"); выдается ошибка:
oscript "C:\Work\test.os"
CreateProcess() failed with error code 2:
Не удается найти указанный файл.

Не подскажете в чем может быть дело? И подсказок через точку нет, можно их как-то включить?
57. necropunk 7 04.10.16 16:49 Сейчас в теме
(56) necropunk, Хм, я запускал из тоталкоммандера, по F4, а надо запускать от администратора. Не особо удобно, но ладно, будем дальше попробовать.
58. serg_infostart 328 07.10.16 16:21 Сейчас в теме
Пытаюсь начать пользоваться gitsync....
Получаю следующую ошибку:
E:\test_gitsync_src\001>git status
fatal: Not a git repository (or any of the parent directories): .git

E:\test_gitsync_src\001>gitsync -init "E:\test_gitsync\001"
ИНФОРМАЦИЯ - Начинаю синхронизацию хранилища 1С и репозитария GIT
ИНФОРМАЦИЯ - Получение изменений с удаленного узла (pull)
ИНФОРМАЦИЯ - fatal: Not a git repository (or any of the parent directories): .gi
t

ОШИБКА - {Модуль C:\Program Files (x86)\OneScript\lib\gitsync\src\gitsync.os / О
шибка в строке: 321 / Не удалось получить изменения с удаленного узла (код: 128)
}

E:\test_gitsync_src\001>
Показать


Обратил внимание, что
E:\test_gitsync_src\001>gitsync
Синхронизация хранилища конфигураций 1С с репозитарием GIT.
Использование:
        gitsync <storage-path> <git-url> [local-dir] [ключи]
        gitsync <команда> <параметры команды> [ключи]
Параметры:
 <ПутьКХранилищу> - Файловый путь к каталогу хранилища конфигурации 1С.
 <URLРепозитория> - Адрес удаленного репозитория GIT.
 <ЛокальныйКаталогГит> - Каталог исходников внутри локальной копии git-репозитар
ия.
 -email - <домен почты для пользователей git>
 -v8version - Маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)
 -debug - <on|off>
 -verbose - <on|off>
 -branch - <имя ветки git>
 -format - <hierarchical|plain>

Возможные команды:
 clone        - Клонирует существующий репозиторий и создает служебные файлы
 init         - Создает новый репозиторий и создает служебные файлы
 all          - Запускает синхронизацию по нескольким репозиториям
 set-version  - Устанавливает необходимую версию в файл VERSION
 help         - Вывести справку по параметрам команды
 export       - Выполнить локальную синхронизацию, без pull/push
Для подсказки по конкретной команде наберите gitsync help <команда>
ОШИБКА - Указаны некорректные аргументы командной строки
Показать


Пытаюсь без "-" выполнить:
E:\test_gitsync_src\001>gitsync init "E:\test_gitsync\001"
ОШИБКА - {Модуль C:\Program Files (x86)\OneScript\lib\gitsync\src\gitsync.os / О
шибка в строке: 201 / Метод объекта не обнаружен (ПроверитьНаличиеРепозитарияГит
)}

E:\test_gitsync_src\001>
59. Evil Beaver 6754 10.10.16 12:32 Сейчас в теме
(58) serg_infostart, для gitsync и других полезных пакетов есть отдельный канал обсуждения - https://gitter.im/EvilBeaver/oscript-library.

Там будет быстрее и продуктивнее.
60. su_mai 88 19.10.16 11:51 Сейчас в теме
Подскажи, что можно придумать для эмуляции нажатия кнопок экранных форм, например, по координатам. Может есть что-то уже готовое в 1Script? Может есть готовый подход, попроще?
61. Evil Beaver 6754 19.10.16 16:02 Сейчас в теме
(60) su_mai, есть AutoIt и Sikuli. Последнее активно используется в vanessa-behavior, примеры можно посмотреть там же.
62. aromait 19.10.16 16:52 Сейчас в теме
Спасибо. Отличная статья. Надо обязательно посмотреть, более подробно, что он из себя представляет.
64. c1nil 08.09.17 14:47 Сейчас в теме
PowerShell доступен для Linux, исправьте.
65. TuneSoft 19.10.17 10:49 Сейчас в теме
Интересная разработка.
А кто использует в реальных проектах и для каких целей ?
Насколько стабильно работает ?
66. Evil Beaver 6754 19.10.17 13:44 Сейчас в теме
(65) О, добро пожаловать! Использует в реальных проектах уже более сотни компаний (это минимум), включая крупный энтерпрайз. Работает стабильно, быстро и вообще, вещь хорошая.

Посмотрите на библиотеку наработок https://github.com/oscript-library там же и цели применения, в-общем.

В-основном, это автоматизация самих 1С-ников: обновление баз, развертывание на рабочий контур, тестирование, и вообще, это язык общего назначения. Есть, например, даже простенькие игры. Например, вот "Змейка": http://www.oscript.io/downloads/examples/snake.os

Проекту 5 лет почти. Основное ядро движка не менялось уже около двух лет по причине стабильности и надежности. В готовящейся к выходу версии появился отладчик и в ядро пришлось внести изменения, но они тоже достаточно стабильны, все тесты и боевые приложения на доработанном ядре работают без нареканий.

Что касается библиотек окружения, то тут примерно, как у 1С. Все отлично работает, но иногда не работает, зато быстро исправляется. Ну а чей код всегда стабилен? Дайте-ка я брошу в него камень :)
TuneSoft; artbear; +2 Ответить
67. tormozit 5824 19.10.17 14:37 Сейчас в теме
О, отладчик будет наконец то. К НГ ждать?
68. artbear 1184 19.10.17 15:10 Сейчас в теме
(67) В соседней статье по 1скрипт я сегодня написал - отладчик уже есть в ночной сборке 18 релиза
69. Evil Beaver 6754 19.10.17 18:01 Сейчас в теме
(67) Уже сейчас можно смотреть: http://oscript.io/downloads/night-build/oscript-debug-0.1.0.vsix

Устанавливаешь свежий ночник и вот этот плагин к vsc
70. victor_k 26.07.19 04:37 Сейчас в теме
Расписано на 10 листов, много возни, а реальной автоматизации нет. Только время потерял.
71. Evil Beaver 6754 27.07.19 08:14 Сейчас в теме
(70) Мне даже подробности стали интересны. Что означает "реальной автоматизации нет?" Есть только нереальная?

Знаете, если вы за 5 лет существования проекта только лишь сейчас услышали про 1Script, в то время, когда пол-отрасли пользуется вовсю и активно участвует в развитии инструмента, а потом говорите "возня есть, автоматизации нет", то... ну расскажите, что-ли подробнее, что вы имели в виду?
72. victor_k 92 27.07.19 11:24 Сейчас в теме
(71)Все что под заголовком "Что можно автоматизировать?" не впечатлило.
73. ildary 29.07.19 09:47 Сейчас в теме
(72) это (что вас не впечатлило) больше говорит о вашем профессионализме, чем о качестве 1script.
74. Brawler 469 29.07.19 10:09 Сейчас в теме
(73) коллеги, переставайте вести пустой треп, у человека явно просто никаких потребностей в данном продукте нет, и это ни коем образом не говорит, о профессионализме, а всего лишь об отсутствии потребности/задач решаемых при помощи него
у нас кстати пока именно в 1Script тоже потребности нет ибо что уже нужно было, уже запилено на AutoIt
76. victor_k 92 30.07.19 11:08 Сейчас в теме
(73) IT - директор, знания по вершкам )
75. Evil Beaver 6754 29.07.19 14:19 Сейчас в теме
(72) Ну ок, не впечатлило. Бывает :)
77. maklyak 10.11.19 17:22 Сейчас в теме
обрабатывая скрипт:
// Получаем COMConnector
Коннектор = Новый COMОбъект("v" + ПараметрыЗапуска.ВерсияПлатформы + ".COMConnector");

получаю ошибку:
ПолучитьСписокСеансов: {Модуль C:\Program Files (x86)\OneScript\lib\TRun1C\src\Classes\ТЗапуск1С.os / Ошибка в строке: 531 / Внешнее исключение (System.Runtime.InteropServices.COMException): Не удалось получить фабрику класса COM для компонента с CLSID {181E893D-73A4-4722-B61D-D604B3D67D47} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).}

при этом коннектор V83Com.Connector определен в реестре.
При запуске обработки в 1С предприятии кусок кода
АдресКластера = "localhost";
ПортАгента = "1540";
Коннектор = Новый COMОбъект("v83.COMConnector");
// Получаем Соединение с агентом сервера
СоединениеСАгентомСервера = Коннектор.ConnectAgent(АдресКластера + ":" + ПортАгента);
// Получаем список кластеров		
КластерыСерверов = СоединениеСАгентомСервера.GetClusters(); 
отрабатывает без проблем.

Вопрос: Как побороть ошибку ?
Прикрепленные файлы:
78. Evil Beaver 6754 11.11.19 15:46 Сейчас в теме
Скорее всего у вас стоит 64битная платформа 1с. И советую отказаться от COM в пользу RAS
79. ahyahy 03.12.19 18:08 Сейчас в теме
Для OneScript есть библиотека для создания gui. Да, простите, ещё одна. Ну не мог остановиться. Кому интересно приходите на https://onescriptgui.teriy.com/
Только что закончил. Скриптим на русском, создаём формы на русском. Справка подробная, все свойства и методы с примерами.
Используется библиотека KiXforms.NET v3.2.16.0 написанная Shawn Tassie.
80. tormozit 5824 27.04.20 08:03 Сейчас в теме
Есть задача из простого кода (генератор плейлиста на флешке) на 1С без методов сгенерировать консольное приложение для Windows. Может ли 1Sсript мне здесь помочь?
81. Evil Beaver 6754 27.04.20 20:23 Сейчас в теме
(80) не совсем понял задачу... на 1Скрипт можно написать и скомпилировать в консольное win приложение.
82. tormozit 5824 27.04.20 20:27 Сейчас в теме
(81) Все получилось. Сгенерировал исполняемый файл. Пришлось через командную строку это делать. В GUI такая возможность как я понял отсутствует?
83. Evil Beaver 6754 27.04.20 20:33 Сейчас в теме
(82) Ты про какой GUI, про TestApp?
84. tormozit 5824 27.04.20 21:19 Сейчас в теме
85. tormozit 5824 28.04.20 06:51 Сейчас в теме
Есть ли возможность генерации исполняемого файла с движком на английском языке?
86. Manticor 64 12.05.20 16:16 Сейчас в теме
https://oscript.io/ - сайт недоступен.

Есть работающий адрес ресурса???
Оставьте свое сообщение

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32404    0    ids79    40    

Применение математических достижений в решении сложных задач бизнеса

Математика и алгоритмы Бесплатно (free)

Как правило, самые сложные задачи решаются с точки зрения математики очень легко. Но чтобы найти правильное решение, важно понять бизнес-цель, которую достигает эта задача. О практическом применении математических достижений для эффективного решения сложных задач бизнеса на конференции Infostart Event 2019 Inception рассказал Дмитрий Мишнов.

25.05.2020    2780    0    Mishnov    17    

Улучшение пооперационного планирования в 1С:ERP 2.4 внешними средствами

Математика и алгоритмы Производительность и оптимизация (HighLoad) Бесплатно (free)

Задача построения оптимального производственного расписания требует сравнения тысяч и десятков тысяч вариантов. Выполнять такие вычисления средствами платформы 1С Предприятие нецелесообразно. Как реализовать пооперационное планирование с использованием генетических алгоритмов и параллельных вычислений в докладе на конференции Infostart Event 2019 Inception рассказал генеральный директор компании «ИНТЕХ» Сергей Сафаров.

02.03.2020    4402    0    ildarovich    7    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    4201    0    randomus    18    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    53572    0    pahich    82    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    24403    0    YPermitin    24    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Сентябрьская серия статей про то, как начинающий разработчик Вася проходит путь от простой задачки к созданию своего механизма. На этот раз - открытие значения из текущей колонки.

02.09.2019    9246    0    SeiOkami    35    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    11335    0    ildarovich    19    

КопиПастаМер Промо

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Предлагается отчет, который за приемлемое время находит и показывает ВСЕ повторяющиеся фрагменты в текстах программных модулей анализируемой конфигурации. Приводятся подробности реализации отчета, основанного на алгоритме Манбера и Майерса построения суффиксного массива и на алгоритме Касаи построения LCP-массива. В данной реализации поиск повторов ведется до уровня строк. Отчет можно применять для определения повторяющихся последовательностей строк и в любых других текстах.

1 стартмани

30.07.2014    42370    120    ildarovich    76    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    13490    0    ids79    8    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    40271    4    AlbinaAAA    27    

Как проводятся документы в типовых конфигурациях от 1С

Математика и алгоритмы Практика программирования Разработка v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    25667    0    skv_79    35    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    44404    0    ildarovich    116    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    15440    0    Stepa86    33    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    22377    0    YPermitin    34    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    45960    0    ids79    25    

Telemonitor - объединяем Telegram и 1С Промо

Сервисные утилиты Администрирование данных 1С Мобильная разработка v8 1cv8.cf Абонемент ($m)

Не так давно Telegram предоставил API для создания ботов. Telemonitor - программа, позволяющая легко настроить собственного бота для работы с 1С.

1 стартмани

09.08.2015    75023    208    salexdv    178    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    13382    0    RonX01    65    

Почему вообще работает мой запрос? или Ещё раз о планах запросов

Математика и алгоритмы Практика программирования Разработка v8::Запросы Бесплатно (free)

Другие статьи на эту тему объясняют, что такое план выполнения запроса, но не рассказывают о том, как его получить. Эта заметка призвана заполнить этот пробел. Её цель - популяризировать общедоступные инструменты получения плана запроса среди разработчиков, которые ещё не начали их использовать.

10.06.2019    9041    0    DataReducer    12    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    7296    0    Oleg_nsk    96    

Метод Кларка-Райта. Оптимальное планирование маршрутов грузоперевозок Промо

Математика и алгоритмы Бесплатно (free)

Одной из наиболее важных задач каждого предприятия, осуществляющего доставку грузов в крупных населенных пунктах, является сокращение издержек. Возможное решение данной проблемы заключается в сокращении пробега автотранспорта и, как следствие, уменьшении расхода ГСМ. Появляются такие вопросы ... - СКОЛЬКО НУЖНО МАШИН ДЛЯ РАЗВОЗКИ КОНКРЕТНОГО ОБЪЕМА ГРУЗА ПО АДРЕСАМ ДОСТАВКИ ? - КАК РАЗБИТЬ ТОЧКИ ДОСТАВКИ НА ОПТИМАЛЬНЫЕ ПО ПРОБЕГУ И ЗАГРУЗКЕ МАШИН МАРШРУТЫ ? ... В этой статье Вы найдете один из многих способов получить ответ на эти вопросы.

10.02.2016    58759    0    mi1man    20    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    24354    0    YPermitin    7    

Выдержки из книги Чистый код

Математика и алгоритмы Бесплатно (free)

Недавно я прочитал книгу "Чистый код" Роберта Мартина (Robert Cecil Martin). В ней описываются принципы организации и форматирование исходного кода программы так, чтобы в дальнейшем было легко поддерживать такой код. Эта книга является библией для многих программистов, но вот в среде программистов 1С, к сожалению, не очень распространено чтение подобной фундаментальной литературы. Книга более 400 страниц и так много порой лениво читать, да и времени всегда не хватает. По этому я решил выделить в виде цитирования по разделам самые важные моменты. А также снабдил текст своими примерами кода.

16.05.2019    9703    0    FreeArcher    105    

Что такое алгоритм?

Математика и алгоритмы Бесплатно (free)

Как ответить на этот вопрос и не попасть пальцем в небо.

25.02.2019    7456    0    mkalimulin    274    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    65739    0    tormozit    27    

Криптовалюты, а также иные взгляды на природу денег в терминах 1С

Математика и алгоритмы Бесплатно (free)

Это отчасти полемическая статья. Я задумал написать ее как ответ на другую хорошую статью о криптовалютах. Хотелось поспорить с некоторыми утверждениями автора, а ещё больше с некоторыми комментариями. А чтобы текст был более понятным для местной аудитории, я решил использовать, где только возможно, терминологию и практику 1С.

28.01.2019    5996    0    mkalimulin    89    

Как писать код? Технологии древних цивилизаций, или все новое - это хорошо забытое старое

Математика и алгоритмы Бесплатно (free)

Все современные технологии - это развитие и доведение до ума (или маразма) древних идей. За последнее время не придумали ничего нового - все, что мы видим, было придумано тысячи лет назад. Не является исключением и программирование, которое в сути своей является переводом с языка условностей технического задания или заявки пользователя в формализованный и абсолютно точный язык математической логики. А логику придумали (по крайней мере первыми опубликовались в ведущих научных журналах) еще древние греки.

23.01.2019    11340    0    starik-2005    43    

Роберт Мартин: "Будущее программирования" / Robert Martin: "The Future of Programming"

Математика и алгоритмы Блоги Бесплатно (free)

Перевод-транскрибация выступления.

14.01.2019    15117    0    Vladimir Litvinenko    38    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    286361    0    Evil Beaver    173    

Многоязычное программирование: создание систем с использованием нескольких языков

Математика и алгоритмы Россия Бесплатно (free)

В мире существует несколько тысяч языков программирования. Несмотря на то, что многие из них крайне непопулярны, очень специфичны или уже созданы очень давно, они продолжают существовать, а новые языки продолжают появляться. Похоже, нет оснований полагать, что количество языков когда-нибудь начнет уменьшаться и в конечном счете будет создан один универсальный язык программирования. Большое количество языков может пугать своей необъятностью, но новое понимание идеи многоязычных проектов позволяет не только ориентироваться в этом разнообразии, но и видеть очевидную выгоду для всех.

09.01.2019    10838    0    kalyaka    36    

Размышления о хороших практиках, навеянные одной статьей

Математика и алгоритмы Бесплатно (free)

Прочитал статью "Ректальное программирование: основы для практикующих 1С-программистов". Статья очень хорошая и своевременная. Но у меня возникло некоторое сомнение. А достаточно ли автор любит и понимает предмет, о котором пишет? Насколько богат его опыт ректального программирования и занимался ли он им вообще? Как человек обладающий многолетним опытом РП, я решил представить вам необходимые дополнения к статье.

21.12.2018    6595    0    mkalimulin    61    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    108319    0    bpc222    327    

Ректальное программирование: основы для практикующих 1С-программистов

Математика и алгоритмы Бесплатно (free)

Одной из самых популярных и зарекомендовавших себя методологий программирования в 1С является так называемое ректальное программирование. Редкий проект внедрения и сопровождения учётных систем на платформе 1С обходится без его использования. Зачастую без знания данной методологии программистам даже бывает сложно найти работу в сфере 1С, потому что работодатели, особенно фирмы-франчайзи, в основном отдают предпочтение классическим, зарекомендовавшим себя методикам, а не новомодным заграничным веяниям.

19.12.2018    41734    0    for_sale    349    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    12556    0    _ASZ_    33    

КопиПастаМер v.2 (универсальный)

Инструментарий разработчика Рефакторинг и качество кода v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка для поиска повторов строк - находит одинаковые строки в разных текстовых файлах. Легко настраивается - Мин.порог одинаковых строк, выбор по типу / маске файла, Поиск по вложенным под-каталогам, выбор кодировки UTF-8 / ANSI ...Удобное отражение кода 1С в привычной "раскраске" и открытие файлов в одно нажатие в любом редакторе, таких как NotePad++, Visual Studio Code...или стандартных Блокноте, или Word-е Текст обработки - открыт для доработок.

1 стартмани

30.11.2018    8236    34    Serg O.    13    

Предметно-ориентированное проектирование (3D) в 1С. Виртуальная машина. Промо

Математика и алгоритмы Бесплатно (free)

Проектирование программного обеспечения - это постоянная битва за простоту.

03.06.2014    39797    0    Evgen.Ponomarenko    88    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

У многих начинающих 1С программистов часто возникают вопросы про клиент-серверное взаимодействие в 1С и чтобы разобраться в непростых механизмах платформы, необходимо понять, что же такое контекст, для чего предназначены директивы компиляции, что представляют собой контекстные/внеконтекстные вызовы и как наиболее оптимально описывать прикладные задачи в модулях управляемых форм.

23.08.2018    36440    0    Rain88    46    

Учебный курс. Повышение качества разработки. Ошибки программы

Практика программирования Математика и алгоритмы Рефакторинг и качество кода Бесплатно (free)

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Лекции № 3,4,5. Эти лекции посвящены ошибкам программ, их классификации и способам исправления

10.07.2018    19141    0    Артано    92    

Що там у них в Java

Математика и алгоритмы Бесплатно (free)

Развенчание мифа о тяжёлой жизни не 1С программистов на примере создания веб сервиса редактирования таблички с использованием framework spring в Java.

24.05.2018    10945    0    van_za    62    

Решение транспортной задачи запросом Промо

Математика и алгоритмы v8 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    34643    10    bforce    22    

Учебный курс. Повышение качества разработки. Вводная лекция, часть 2

Практика программирования Математика и алгоритмы Бесплатно (free)

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Лекция №2. Эта лекция посвящена абстракциям, их свойствами и практическому применению в рамках классических парадигм программирования.

24.05.2018    12653    0    Артано    36    

Учебный курс. Повышение качества разработки. Вводная лекция

Математика и алгоритмы Бесплатно (free)

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста.

10.05.2018    17571    0    Артано    51    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    18693    0    ildarovich    19    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы v8 Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    30292    5    juntatalor    49    

Правила программирования и автоматизации

Математика и алгоритмы Бесплатно (free)

Изложил свой опыт программирования, больше десяти лет.

21.02.2018    18009    0    Dzenn    127    

Творим Историю вместе

Математика и алгоритмы Бесплатно (free)

Расширяем границы, выходим за рамки, ставим новые цели - все, как вы любите.

17.01.2018    17181    0    1c-intelligence    108    

Использование git при разработке на 1С

Математика и алгоритмы Россия Бесплатно (free)

Продолжение цикла статей по основам CI. Данная статья расскажет о реализации возможности хранения кода продукта в системе управления версиями git и познакомит со специализированным инструментарием, предназначенным для решения этой и других смежных задач.

27.12.2017    31584    0    real_MaxA    57    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    49353    0    bpc222    51    

Об уровне абстракции и сложности системы

Математика и алгоритмы Бесплатно (free)

В среде 1С почти не приходится слышать таких терминов, как уровень абстракции, декомпозиция и управление сложностью. Тем не менее, эти термины следует понимать, а подходы применять на практике, поскольку правильно выбранный уровень абстракции ведет к упрощению и увеличению устойчивости программного кода на порядки.

21.12.2017    12082    0    m-rv    15    

Двоичное дерево, двоичное дерево поиска, двоичная куча, B-дерево

Математика и алгоритмы Бесплатно (free)

В большинстве реляционных СУБД в качестве структуры данных для индексов (та или иная их реализация) используются именно деревья. И не просто деревья, а сбалансированные деревья поиска. В этой статье как раз о них.

24.11.2017    15437    0    Irwin    4    

Введение в CI для 1С

Математика и алгоритмы v8 Россия Бесплатно (free)

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

21.11.2017    23028    0    real_MaxA    22