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

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

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

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

302

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

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

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

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

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

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



http://prntscr.com/cksi5h

Вот сайт на текущий момент. Позавчера действительно был остановлен на несколько часов, но это только и всего.
51. baton_pk 392 22.09.16 10:41 Сейчас в теме
(49) было-было. не ругайте человека. не был вчера сайт доступен.
52. Evil Beaver 6286 22.09.16 14:20 Сейчас в теме
(51) baton_pk, не ругаю ) Кстати, если нужно просто скачать дистрибутив, то на гитхабе есть раздел releases, куда также выкладываются файлы программы.
53. dreadlord 22.09.16 14:56 Сейчас в теме
Оч познавательная статья, спасибо. Инструмент обновляем
54. Brawler 448 24.09.16 20:41 Сейчас в теме
Не зря 1С навела паники по поводу вирусов)))
Скоро их реально станет больше и их налобают даже на 1Script )))
55. Evil Beaver 6286 26.09.16 19:43 Сейчас в теме
(54) Brawler, ну да. Чтобы заразить машину нужно поставить движок, скачать вредный файл, запустить его с полными правами... А так, конечно, язык виноват, что на нем вирусы пишут, да )
56. necropunk 6 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 6 04.10.16 16:49 Сейчас в теме
(56) necropunk, Хм, я запускал из тоталкоммандера, по F4, а надо запускать от администратора. Не особо удобно, но ладно, будем дальше попробовать.
58. serg_infostart 311 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 6286 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 6286 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 217 19.10.17 10:49 Сейчас в теме
Интересная разработка.
А кто использует в реальных проектах и для каких целей ?
Насколько стабильно работает ?
66. Evil Beaver 6286 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 5591 19.10.17 14:37 Сейчас в теме
О, отладчик будет наконец то. К НГ ждать?
68. artbear 1156 19.10.17 15:10 Сейчас в теме
(67) В соседней статье по 1скрипт я сегодня написал - отладчик уже есть в ночной сборке 18 релиза
69. Evil Beaver 6286 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 6286 27.07.19 08:14 Сейчас в теме
(70) Мне даже подробности стали интересны. Что означает "реальной автоматизации нет?" Есть только нереальная?

Знаете, если вы за 5 лет существования проекта только лишь сейчас услышали про 1Script, в то время, когда пол-отрасли пользуется вовсю и активно участвует в развитии инструмента, а потом говорите "возня есть, автоматизации нет", то... ну расскажите, что-ли подробнее, что вы имели в виду?
72. victor_k 87 27.07.19 11:24 Сейчас в теме
(71)Все что под заголовком "Что можно автоматизировать?" не впечатлило.
73. ildary 29.07.19 09:47 Сейчас в теме
(72) это (что вас не впечатлило) больше говорит о вашем профессионализме, чем о качестве 1script.
74. Brawler 448 29.07.19 10:09 Сейчас в теме
(73) коллеги, переставайте вести пустой треп, у человека явно просто никаких потребностей в данном продукте нет, и это ни коем образом не говорит, о профессионализме, а всего лишь об отсутствии потребности/задач решаемых при помощи него
у нас кстати пока именно в 1Script тоже потребности нет ибо что уже нужно было, уже запилено на AutoIt
76. victor_k 87 30.07.19 11:08 Сейчас в теме
(73) IT - директор, знания по вершкам )
75. Evil Beaver 6286 29.07.19 14:19 Сейчас в теме
(72) Ну ок, не впечатлило. Бывает :)
Оставьте свое сообщение

См. также

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

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

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

02.09.2019    3796    SeiOkami    35       

Кодогенерация и метагенерация в 1С 24

Статья Программист Нет файла Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

В своем докладе на конференции INFOSTART EVENT 2018 EDUCATION Дмитрий Белозеров рассказал о разработке инструмента, позволяющего программно работать с метаданными 1С и писать скрипты для выполнения тех же действий, которые выполняет разработчик в конфигураторе –  с какими сложностями и нюансами пришлось столкнуться, и что получилось в итоге.

26.08.2019    3927    kirovsbis    28       

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

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

22.08.2019    4219    ildarovich    16       

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

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

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

22.08.2019    3226    ids79    7       

Запрос SQL для нахождения самого большого простого числа меньше заданного 6

Статья Программист Нет файла Windows Бесплатно (free) Математика и алгоритмы

Данный запрос MS SQL демонстрирует некоторые возможности MS SQL Server, о которых часто неизвестно большинству программистов 1С. В тексте постараюсь объяснить интерес данного запроса (или скрипта).

16.08.2019    1169    alex_bitti    18       

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

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

25.07.2019    10028    4    AlbinaAAA    22       

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

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

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

24.07.2019    14709    skv_79    32       

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

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

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

22.07.2019    6785    Stepa86    23       

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

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

16.07.2019    6484    YPermitin    29       

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

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

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

25.06.2019    16923    ids79    16       

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

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

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

24.06.2019    7018    RonX01    63       

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

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

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

10.06.2019    5472    DataReducer    12       

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

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы

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

28.05.2019    3543    Oleg_nsk    93       

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

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

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

20.05.2019    9623    YPermitin    4       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

16.05.2019    5496    FreeArcher    82       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

25.02.2019    2851    mkalimulin    272       

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

Статья no Нет файла Бесплатно (free) Математика и алгоритмы

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

28.01.2019    3548    mkalimulin    89       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

23.01.2019    8551    starik-2005    43       

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

Статья Программист Нет файла Россия Бесплатно (free) Математика и алгоритмы

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

09.01.2019    5523    kalyaka    33       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

21.12.2018    4382    mkalimulin    61       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

19.12.2018    30326    for_sale    340       

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

Инструменты и обработки Системный администратор Программист Стажер Внешний отчет (ert,erf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика

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

1 стартмани

30.11.2018    5910    31    Serg O.    13       

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

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

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

10.11.2018    20588    ids79    40       

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

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

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

23.08.2018    20904    Rain88    42       

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

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

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

10.07.2018    15667    Артано    90       

Що там у них в Java 19

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

24.05.2018    9139    van_za    62       

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

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

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

24.05.2018    10628    Артано    36       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

10.05.2018    15503    Артано    51       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

21.02.2018    16182    Dzenn    127       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

17.01.2018    14812    1c-intelligence    108       

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

Статья Программист Нет файла Россия Бесплатно (free) Математика и алгоритмы

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

27.12.2017    25778    real_MaxA    57       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

21.12.2017    9619    m-rv    15       

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

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

24.11.2017    12326    Irwin    4       

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

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы

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

21.11.2017    18742    real_MaxA    22       

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

Статья Программист Нет файла v8::УФ Бесплатно (free) Математика и алгоритмы

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

18.11.2017    42657    pahich    75       

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода 43

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

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

12.10.2017    14418    for_sale    58       

Некоторые особенности разработки ММО-игр на платформе 1С:Предприятие 25

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

Добрый день, уважаемые коллеги! На первый взгляд может показаться, что статья посвящена довольно необычным вещам, но поверьте мне, эти вещи всем нам вполне привычны, просто мы их обычно видим под другим углом зрения. Поговорим о том, что такое MMO. Многие из вас уже знают, что это такое, потому что существует такая игра, как World of Tanks, а те, кто в нее напрямую не играл, безусловно, о ней слышали. Игра World of Tanks является классическим MMO. MMO расшифровывается как Массивная Многопользовательская Online-игра. С технологической точки зрения это – нагрузки, нагрузки и еще раз нагрузки.

08.09.2017    9336    Inkasor    21       

Групповая разработка конфигураций в крупном холдинге 68

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

15.08.2017    16993    stas_ganiev    15       

Применение нейронных сетей и генетических алгоритмов в прикладных решениях на платформе 1С 170

Статья Программист Нет файла Бесплатно (free) Математика и алгоритмы

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

03.07.2017    31773    comol    63       

OneStyle. Улучшенное форматирование кода в конфигураторе 118

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Инструментарий разработчика

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

1 стартмани

19.06.2017    17308    24    Stepa86    45       

Автоматизация процесса 1С-разработки 91

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

07.06.2017    22481    ekaruk    9       

Пишем игру Минер. Обработка событий ActiveX в 1С 29

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

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    12371    user621724_Dimav1979    11       

Как я доступ на kb.1c.ru получал 90

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

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    21981    ikekoval    33       

"Распределение в запросе" или "избавляемся от перебора" 182

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Математика и алгоритмы Универсальные функции

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    27702    alexandersh    45       

Некоторые принципы оптимизации запросов 1С (+SQL) 115

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Разработка нового функционала часто связана с созданием новых таблиц в базе и написанием запросов. Собственно, размышляя о запросах, мы и формируем в голове содержание таблиц, индексы и количество таблиц и индексов. Заранее можно уверенно рассуждать о том, какая нужна архитектура, если задачу удалось понять. На этом этапе важно привлекать свой опыт. Что же делать, если его нет? Как рассуждать о запросах и формате хранения?

17.11.2016    8583    ture    40       

Использование git для доработки типовых конфигураций 1С 229

Статья Программист Нет файла v8 Беларусь Украина Россия Бесплатно (free) Математика и алгоритмы

Рассмотрены способы доработок типовой конфигурации 1C для различных изменений, и на картинках продемонстрирован подход к разработке с использованием git и частично с тестами.

11.10.2016    185732    pumbaE    31