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

14.09.16

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

Мы все здесь – автоматизаторы бизнеса. Мы занимаемся этим каждый день и делаем это хорошо. Но практика показывает, что специалисты по 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

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1714    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

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

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4316    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7343    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7817    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4414    fishca    13    

36

Интересная задача на Yandex cup 2021

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

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8793    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

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

31.08.2021    7713    dusha0020    8    

70
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1447 14.09.16 12:42 Сейчас в теме
+1 Хорошее выступление и хорошее статья
kraynev-navi; +1 Ответить
22. Evil Beaver 8100 15.09.16 11:24 Сейчас в теме
2. infosoft-v 867 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 8100 15.09.16 11:10 Сейчас в теме
3. infosoft-v 867 14.09.16 15:09 Сейчас в теме
Спасибо за отличную статью.
Коллеги, поделитесь опытом, как отлаживать скрипты? Какие инструменты доступны?
5. pumbaE 14.09.16 15:19 Сейчас в теме
(3) infosoft-v, отлаживать принтами, скажите спасибо, что не алертами.
6. infosoft-v 867 14.09.16 15:39 Сейчас в теме
4. infosoft-v 867 14.09.16 15:11 Сейчас в теме
Ещё вопрос. Разработка в среде VSC возможна?
9. kirillkr 29 14.09.16 18:52 Сейчас в теме
(4) infosoft-v, да.
Подробнее на github.
7. json 3294 14.09.16 16:39 Сейчас в теме
А существует ли аналог процедуры Состояние() для индикации долговыполняющихся процессов?
10. ret-Phoenix 529 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 3294 15.09.16 00:24 Сейчас в теме
(10) ret-Phoenix, спасибо
Круто что даже формы есть (правда пока обычные)) )
13. ret-Phoenix 529 15.09.16 00:31 Сейчас в теме
(12) yurii_host, а какие хочется?
для решения текущих задач этого хватает, даже больше чем нужно.
11. davdykin 25 14.09.16 23:27 Сейчас в теме
Спасибо! Интересно и познавательно
14. tormozit 7133 15.09.16 00:46 Сейчас в теме
С ростом количества и сложности кода на любом языке будет расти и потребность в отладчике. У всех распространенных скриптовых языков есть отладка. Так что по-прежнему очень ждем ее.
Также была бы полезна и подсказка после точки. Какие здесь перспективы?
shalimski; alanto23; artbear; ABudnikov; Evil Beaver; pumbaE; +6 Ответить
15. pumbaE 15.09.16 09:15 Сейчас в теме
Мы помним свой вопрос (14)
19. Evil Beaver 8100 15.09.16 11:09 Сейчас в теме
(14) tormozit, если помнишь, на хабре я писал про проблему роста. Я бы с удовольствием занялся отладчиком, но куча более актуальных дел (поддержка библиотеки скриптов, багфиксы, работа, личная жизнь) не дают задаче вспыть на поверхность.
cleaner_it; +1 Ответить
23. Evil Beaver 8100 15.09.16 11:26 Сейчас в теме
(14) tormozit, А что ты про подсказку после точки спрашивал? Есть же она.
24. tormozit 7133 15.09.16 11:54 Сейчас в теме
(23) Это в каком редакторе?
25. Evil Beaver 8100 15.09.16 13:16 Сейчас в теме
(24) tormozit, я имел в виду VSC, она не такая умная, какую ты хочешь, но ее хватает за глаза
16. kraynev-navi 647 15.09.16 09:15 Сейчас в теме
В разделе "На каком языке удобнее всего писать скрипты автоматизации?" еще можно упомянуть AutoIt. Вторая колонка как у PowerShell ))

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

Я бы сюда ссылку на вашу же статью подставил
18. dmpas 417 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 8100 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 284 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 284 16.09.16 18:07 Сейчас в теме
(42) LeXXuS_ju, пароль будет спрашиваться тогда когда вы будете выполнять обмен с сервером например после команды "git push -u origin master"
27. capitan 2461 15.09.16 16:57 Сейчас в теме
Все скриптовые языки рано или поздно упираются в отсутствие форм.
А затем в отсутствие БД в которой можно хранить настройки/результаты.
Но если в упомянутых выше и упомянутом всуе AutoIt, который я например считаю самым быстрым стартом в автоматизацию рутинных операций, их изначально не было, то в 1С изначально все это есть.
И упрощение - это на любителя.
ИМХО при всех упомянутых выше операциях было бы неплохо хранить результаты их выполнения.
В чем выигрыш по сравнению с БД 1С в которой живут те же скрипты, кроме свободной лицензии?
Хотя задания по администрированию обычно запускаются при отключенных пользователях и проблемы с этим не должно быть.
28. ret-Phoenix 529 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 написано много чего, стоит глянуть библиотеку скриптов.
SagittariusA; Vladimir Litvinenko; afanasko; +3 Ответить
31. capitan 2461 15.09.16 18:25 Сейчас в теме
(28) ret-Phoenix, сегодня и ежедневно вчера оба сайта oscript.io в уставшем состоянии.
Но это только подтверждает мои слова - вы делаете аналог БСП, только почему то за пределами базы 1С.
32. ret-Phoenix 529 15.09.16 18:37 Сейчас в теме
(31) capitan, Аналог БСП? Что за бред?
БСП - каркас для конфигураций.
На OneScript у многих из нас сделано
- бекапирование
- проверка обновлений
- чистка кеша
- управление списком баз
- синхронизация с git (как вместе с хранилищем так и без, например для внешних отчетов)
- различные схемы разворота рабочего места как пользователя так и разработчика
и много прочего. Тот же парсинг текста, приведение его в порядок. расширения конфигуратора как снегопатовские, так и мои.
35. Evil Beaver 8100 16.09.16 01:47 Сейчас в теме
(31) capitan, сайт работает, падений не залогировано. Что именно не работает? Он не открывается по префиксу www, но это так и задумано.
38. zqzq 23 16.09.16 10:22 Сейчас в теме
(27) capitan, у меня вот уже более 1.5 года живёт "карманная" база 1С для административных работ: обмены, обновления и т.д..
Плюсы: быстрый старт, всё в одном месте (без внешних программ и текстовых файликов) в одной базе, можно код версионировать стандартным хранилищем и настройки забивать в справочники и логи хранить в журнале регистрации.
Минусы: так и не смог настроить, чтобы из регламентного задания 1С запускался exe конфигуратора, что-то с правами, поэтому из планировщика винды запускаю толстый клиент базы с параметрами запуска, а он уже парсит параметры и выполняет обработки.
40. capitan 2461 16.09.16 12:57 Сейчас в теме
(38) zqzq, аналогично, шеф.
Я думаю, у каждого, у кого за плечами около полсотни баз имеет такую базу.
63. grumagargler 723 05.08.17 00:30 Сейчас в теме
(27)
В чем выигрыш по сравнению с БД 1С в которой живут те же скрипты, кроме свободной лицензии?

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

Думаю не зря именно ее используют.
47. vasiliy_b 284 20.09.16 10:28 Сейчас в теме
(46) tehas, Все правильно, там как раз используется принцип двойных кавычек. Так что все отрабатывается как в 1с
50. Evil Beaver 8100 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 8100 21.09.16 23:49 Сейчас в теме
(48) raevsky@e1.ru, ну я не знаю....



http://prntscr.com/cksi5h

Вот сайт на текущий момент. Позавчера действительно был остановлен на несколько часов, но это только и всего.
51. dmpas 417 22.09.16 10:41 Сейчас в теме
(49) было-было. не ругайте человека. не был вчера сайт доступен.
52. Evil Beaver 8100 22.09.16 14:20 Сейчас в теме
(51) baton_pk, не ругаю ) Кстати, если нужно просто скачать дистрибутив, то на гитхабе есть раздел releases, куда также выкладываются файлы программы.
53. dreadlord 22.09.16 14:56 Сейчас в теме
Оч познавательная статья, спасибо. Инструмент обновляем
54. Brawler 453 24.09.16 20:41 Сейчас в теме
Не зря 1С навела паники по поводу вирусов)))
Скоро их реально станет больше и их налобают даже на 1Script )))
55. Evil Beaver 8100 26.09.16 19:43 Сейчас в теме
(54) Brawler, ну да. Чтобы заразить машину нужно поставить движок, скачать вредный файл, запустить его с полными правами... А так, конечно, язык виноват, что на нем вирусы пишут, да )
56. necropunk 9 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 9 04.10.16 16:49 Сейчас в теме
(56) necropunk, Хм, я запускал из тоталкоммандера, по F4, а надо запускать от администратора. Не особо удобно, но ладно, будем дальше попробовать.
58. serg_infostart 386 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 8100 10.10.16 12:32 Сейчас в теме
(58) serg_infostart, для gitsync и других полезных пакетов есть отдельный канал обсуждения - https://gitter.im/EvilBeaver/oscript-library.

Там будет быстрее и продуктивнее.
60. su_mai 90 19.10.16 11:51 Сейчас в теме
Подскажи, что можно придумать для эмуляции нажатия кнопок экранных форм, например, по координатам. Может есть что-то уже готовое в 1Script? Может есть готовый подход, попроще?
61. Evil Beaver 8100 19.10.16 16:02 Сейчас в теме
(60) su_mai, есть AutoIt и Sikuli. Последнее активно используется в vanessa-behavior, примеры можно посмотреть там же.
62. aromait 19.10.16 16:52 Сейчас в теме
Спасибо. Отличная статья. Надо обязательно посмотреть, более подробно, что он из себя представляет.
64. emakei 08.09.17 14:47 Сейчас в теме
PowerShell доступен для Linux, исправьте.
65. TuneSoft 246 19.10.17 10:49 Сейчас в теме
Интересная разработка.
А кто использует в реальных проектах и для каких целей ?
Насколько стабильно работает ?
66. Evil Beaver 8100 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 7133 19.10.17 14:37 Сейчас в теме
О, отладчик будет наконец то. К НГ ждать?
68. artbear 1447 19.10.17 15:10 Сейчас в теме
(67) В соседней статье по 1скрипт я сегодня написал - отладчик уже есть в ночной сборке 18 релиза
69. Evil Beaver 8100 19.10.17 18:01 Сейчас в теме
(67) Уже сейчас можно смотреть: http://oscript.io/downloads/night-build/oscript-debug-0.1.0.vsix

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

Знаете, если вы за 5 лет существования проекта только лишь сейчас услышали про 1Script, в то время, когда пол-отрасли пользуется вовсю и активно участвует в развитии инструмента, а потом говорите "возня есть, автоматизации нет", то... ну расскажите, что-ли подробнее, что вы имели в виду?
72. victor_k 95 27.07.19 11:24 Сейчас в теме
(71)Все что под заголовком "Что можно автоматизировать?" не впечатлило.
73. ildary 21 29.07.19 09:47 Сейчас в теме
(72) это (что вас не впечатлило) больше говорит о вашем профессионализме, чем о качестве 1script.
74. Brawler 453 29.07.19 10:09 Сейчас в теме
(73) коллеги, переставайте вести пустой треп, у человека явно просто никаких потребностей в данном продукте нет, и это ни коем образом не говорит, о профессионализме, а всего лишь об отсутствии потребности/задач решаемых при помощи него
у нас кстати пока именно в 1Script тоже потребности нет ибо что уже нужно было, уже запилено на AutoIt
Seaflame; +1 Ответить
76. victor_k 95 30.07.19 11:08 Сейчас в теме
(73) IT - директор, знания по вершкам )
75. Evil Beaver 8100 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 8100 11.11.19 15:46 Сейчас в теме
Скорее всего у вас стоит 64битная платформа 1с. И советую отказаться от COM в пользу RAS
79. ahyahy 90 03.12.19 18:08 Сейчас в теме
Для OneScript есть библиотека для создания gui. Да, простите, ещё одна. Ну не мог остановиться. Кому интересно приходите на https://onescriptgui.teriy.com/
Только что закончил. Скриптим на русском, создаём формы на русском. Справка подробная, все свойства и методы с примерами.
Используется библиотека KiXforms.NET v3.2.16.0 написанная Shawn Tassie.
80. tormozit 7133 27.04.20 08:03 Сейчас в теме
Есть задача из простого кода (генератор плейлиста на флешке) на 1С без методов сгенерировать консольное приложение для Windows. Может ли 1Sсript мне здесь помочь?
81. Evil Beaver 8100 27.04.20 20:23 Сейчас в теме
(80) не совсем понял задачу... на 1Скрипт можно написать и скомпилировать в консольное win приложение.
82. tormozit 7133 27.04.20 20:27 Сейчас в теме
(81) Все получилось. Сгенерировал исполняемый файл. Пришлось через командную строку это делать. В GUI такая возможность как я понял отсутствует?
83. Evil Beaver 8100 27.04.20 20:33 Сейчас в теме
(82) Ты про какой GUI, про TestApp?
84. tormozit 7133 27.04.20 21:19 Сейчас в теме
85. tormozit 7133 28.04.20 06:51 Сейчас в теме
Есть ли возможность генерации исполняемого файла с движком на английском языке?
89. Evil Beaver 8100 25.02.21 19:26 Сейчас в теме
86. Manticor 66 12.05.20 16:16 Сейчас в теме
https://oscript.io/ - сайт недоступен.

Есть работающий адрес ресурса???
88. Evil Beaver 8100 25.02.21 19:26 Сейчас в теме
87. zels 171 21.02.21 09:49 Сейчас в теме
Установил 1Script , в папке lib 29 папок, причем в подпапке oscript_modules есть все что в lib плюс еще штук 70.
Зачем такое дублирование и какая папка "правильная"?
90. Evil Beaver 8100 25.02.21 19:29 Сейчас в теме
(87) - Рекомендую прочитать статью https://infostart.ru/1c/articles/791568/ Там все объяснено
91. k.dm.v@mail.ru 21.12.23 11:59 Сейчас в теме
Скажите пож-та где можно почитать по 1cscript с нуля? И еще вопрос умеет ли он работать с нативными dll?
92. Evil Beaver 8100 21.12.23 12:09 Сейчас в теме
(91) на инфостарте много статей по нему. И в телеграме можно спрашивать. С произвольными нативными dll работать не умеет, но умеет работать с внешними компонентами 1С, сделанными по технологии NativeApi
93. k.dm.v@mail.ru 21.12.23 14:37 Сейчас в теме
Оставьте свое сообщение