Гонка конфигураторов с помощью экзекутора

Публикация № 1757140 16.11.22

Разработка - Инструментарий разработчика

Выгружать конфигурацию в файлы в последнее время стало супер модно. Контроль версий, Git, CI/CD и вот это вот все. Исходники как тексты сегодня нужны всем. Но возникают вопросы: а каким методом лучше и быстрее выгружать конфигурацию в файлы, а какая версия платформы справляется с этой задачей оперативнее? Моя статья постарается ответить на эти вопросы. Как говорится, заставим попотеть ваши конфигураторы. С помощью 1С Исполнителя 2.0 мы выгрузим конфигурацию ЗУП, используя платформу пяти версий, от 8.3.18 до 8.3.22.

Итак, сразу к делу.

 

Методы выгрузки конфигурации в файлы

Выгрузить конфигурацию в файлы можно:

 Вопрос?

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

 Важно!

Для повторения эксперимента на своей машине, требуется при установке платформы отмечать установку сервера 1С Предприятие, иначе автономный сервер работать не будет. Я советую, всем кто не знаком с автономным сервером посмотреть видео Первого учебного центра 1С, а именно уроки с 37 по 40:

 

Платформы, участвующие в забеге

Сегодня на нашей арене за звание "Самая быстрая" соревнуются платформы:

  • 8.3.18.1902 от 20.09.2022
  • 8.3.19.1665 от 19.09.2022
  • 8.3.20.2076 от 19.09.2022
  • 8.3.21.1607 от 28.10.2022
  • 8.3.22.1681 (beta) от 04.11.2022

Как видите, самый свежак. Все для вас.

Платформы будут тестироваться под операционной системой Windows 11.

Вы скажете, почему в забеге не участвует 8.3.17? Я думаю, эта версия уходит из эксплуатации. Старушка - сверстница COVID-19. Похоже, пора ей на покой, как ни как с апреля 2020 года вкалывает.

Информация!

Статья была подготовлена до массового выпуска исправительных версий платформ. Подробнее: Срочное сообщение от фирмы «1С»: обновите платформу как можно скорее. Я не стал перезапускать тестирование на этих новых платформах. Судя по письмам от компании 1С в этих версиях исправлялась уязвимость без развития платформы.

 

Как будем испытывать?

Эксперимент будет построен следующим образом: каждая платформа участвующая в забеге выполнит следующие действия:

  • Пять раз выгрузка конфигурации методом BATH
  • Пять раз выгрузка конфигурации методом AGENT
  • Пять раз выгрузка конфигурации методом IBCMD

Почему пять раз? Причины две:

  • Сгладить погрешность измерения
  • Уменьшить влияние «прогрева» системы при выгрузке

В качестве подопытной конфигурации, которую мы будем выгружать в файлы, аж целых 75 раз выступает ЗУП редакции 3.1.24.25 от 27.10.2022. Подключаться будем к файловой ИБ, которая располагается на SSD диске.

Вы спросите, почему именно ЗУП? Хорошо, я отвечу. Во-первых, в этой конфигурации почти нет бинариников. Это вам не УТ11 с сотней драйверов торгового оборудования. Во-вторых, как не странно, это очень небольшая конфигурация. Она меньше БП, УТ, УНФ. Признаюсь, сперва я тестировал выгрузку на конфигурации, которая идет в составе БСП, но она очень маленькая и на ней не так ярко видны колебания времени выгрузки.

 Важно!

Для повторения эксперимента на своей машине вам потребуется в базе ЗУП добавить пользователя с полными правами, с именем “admin” и паролем “123”

 

Кто будет испытывать

Конечно, 75 раз запускать разные командные строки, это так себе удовольствие. Поэтому пишем скрипт. Да не просто скрипт, а на новом Исполнителе 2.0. Вауу!

Детали скрипта будут разобраны ниже.

 

Результат испытаний

Как всегда самое интересное в конце, ну почти в конце.

И так, перед вами результат гонки конфигураторов. В двух словах, что вы видите.

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

 

 

Во-вторых, диаграмма, где по горизонтали отображены наши платформы, а по вертикали среднее время выгрузки конфигурации в файлы в миллисекундах. Цветом столбца выделен метод выгрузки. Обратите внимание на легенду "Mode" справа от диаграммы.

 

 

В-третьих, для самых пытливых, под спойлером приведены исходные данные измерений.

 
 Сырые данные тестирования платформ

 

Вывод и итог

Во всех хороших статьях есть выводы. Моя статья хорошая.

И так выводы.

  1. Есть прогрев конфигуратора. То есть, вторая и далее выгрузка происходят быстрее первой. Чьи кэши заполняются при прогреве конфигуратора или Windows не понятно.
  2. Новые версии конфигуратора работают быстрее во всех режимах. Браво!
  3. Автономный сервер на платформах с 8.3.20 самый быстрый! Это работает многопоточный режим выгрузки. В процессе выгрузки в диспетчере задач видно, как процессор шуршит всеми своими ядрами.
  4. Начиная с версии 8.3.20 скорость выгрузки в пакетном режиме и в режиме агента практически сравнялись. Думаю, в первую очередь это произошло из-за уменьшения времени открытия окна конфигуратора в пакетном режиме.
  5. Конфигуратор в режиме агента показывает самые маленькие колебания времени от версии к версии.
  6. Даже самая медленная выгрузка конфигурации в файлы вполне терпимая.

 

Экзекутор

В процессе тестирования нам все время помогал Исполнитель 2.0. Пришло и его время. И так, подробнее о скрипте, который выгружал конфигурацию.

 

Исполнитель 2.0

В статье использовался Исполнитель 2.0.1.16, который вышел 18.10.2022

Документация: (1С:Исполнитель)
Объектная модель (1C:Исполнитель)
Книжка от ХРУСТАЛЕВОЙ (кем бы она не была) (1С:Предприятие.Элемент)

 

Разработка и отладка

Разработка скриптов ведется в ЛУЧШЕМ редакторе кода, а именно в VSCode (Visual Studio Code)

Для комфортной разработки потребуются установить плагины:

 

Скрипт для тестирования платформ различных версий

Скрипт помимо статьи так же выложен на GitHub.

Структура скрипта:

  • Метод Скрипт – стартовая точка. Содержит настройки путей и версии тестируемых платформ
  • Метод bath – выгрузка конфигурации используя пакетный режим
  • Метод agent – выгрузка конфигурации используя режим агента конфигуратора
  • Метод ibcmd – выгрузка конфигурации с использованием автономного сервера
  • Метод ОчиститьКаталог – очистка каталога с файлами выгруженной конфигурации
  • Метод ЗаписатьВЛог – запись результатов тестирования в текстовый лог файл
 
 Текст скрипта

 

Любителям этого самого, интересного

Скрипт для тестирования выгрузки конфигурации в файлы был написан в качестве учебного примера при освоении мною нового языка.

Ниже приведу несколько моментов, на которые я обратил внимание при написании скрипта.

 

Литералы в массивах

Очень удобная вещь. В одной строке массив объявляется и инициализируется данными. Исполнитель сам определяет размерность массива, а так же сам выводит тип элементов массива.

знч ВерсииПлатформы = ["8.3.18.1902", "8.3.19.1665", "8.3.20.2076", "8.3.21.1607", "8.3.22.1681"]

 

Компактность языка

Эта фишка из той темы, что пока сам не попробуешь не поймешь. Оказывается, очень приятно НЕ писать «Тогда - КонецЕсли» и «Цикл - КонецЦикла»
Теперь можно писать так.

если ЛогФайл.Существует()
    Файлы.Удалить(ПолныйПутьКЛогФайлу)
;

Красота!

 

Интерполяция строк

Незаменимая вещь в скриптах. Посмотрите, как изящно можно писать:

пер Аргументы = ["DESIGNER", "/F %ИБ", "/N admin", "/P 123", "/DumpConfigToFiles %CF_FILES"]

При исполнении в строки на места %ИБ и %CF_FILES подставятся значения соответствующих переменных. Вот так просто и удобно. Подсаживаешься на интерполяцию сразу.

 

Управляющие последовательности

Еще про строки. В Исполнителе в строках работают управляющие последовательности, например «\т» для табуляции. Как результат, красивый вывод результата работы скрипта. За вывод в терминал отвечает следующий код:

пер РезультатВыгрузки =
        "IBCMD\т%ВерсияПлатформы\т$ВремяСтарта\т$ВремяЗавершения\т%Длительность\т%{Длительность.ВМиллисекундах()}"
Консоль.Записать(РезультатВыгрузки)

 

 

Соединение по SSH

Стандартная библиотека Исполнителя имеет объекты для подключения к удаленным серверам по SSH. Можно подключиться к серверу Linux или, как в скрипте, к конфигуратору, который работает в режиме агента.

исп СоединениеSsh = новый СоединениеSsh("127.0.0.1", 1543, "admin", "123")

После того, как Исполнитель подключился к удаленному серверу он может на этом сервере открыть консоль.

исп КонсольSsh = СоединениеSsh.ОткрытьКонсоль()

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

КонсольSsh.СтрокаПриглашения = "designer> "
КонсольSsh.ОжидатьПриглашение(5с)
КонсольSsh.Выполнить("common connect-ib", 2с)
 

 

Тип Длительность

Удобный тип для передачи в объекты информации о длительности. У типа есть человеко-читаемый литерал, например 73с или 1м13с.

КонсольSsh.ОжидатьПриглашение(5с)

 

Отладка

Плагин 1C:Executor для VSCode имеет полноценный отладчик, который умеет все, а именно:

  • Точка останова
  • Информация о переменных в окне "Локальные переменные". Причем, обратите внимание, если переменная это объект то полноценно показываются значения свойств этого объекта
  • Информация о стеке вызова в окне "Стек вызовов"
  • Информация о точках останова в окне "Точки останова"
  • Шагания с заходом и без захода в метод
  • В json файле в котором описывается конфигурация отладки можно указать аргументы командной строки и отлаживать скрипт с передачей в него параметров.

Ну и скриншот, как это все выглядит:

 

Итог и вывод

Статью пора завершать. Итак, какой можно подвести итог:

  • Исполнитель, как скриптовый язык очень неплох. Язык имеет развитую систему типов и богатую стандартную библиотеку.
  • Писать на Исполнителе легко и приятно. Язык компактный. Написанный код легко читается.
  • Порог входа очень небольшой. Опытный программист начинает писать код сразу.
  • Есть поддержка в Телеграмм чате https://t.me/e1c_executor/2

Всем спасибо, кто дочитал статью до конца. К статье приложен файл с кодом программы скрипта и Excel файл с результатами тестирования. Вы можете скачать эти файлы в качестве благодарности за мою статью.

Скачать файлы

Наименование Файл Версия Размер
Гонка конфигураторов с помощью экзекутора: программа - скрипт

.sbsl 7,85Kb
1
.sbsl 7,85Kb 1 Скачать
Гонка конфигураторов с помощью экзекутора: результат тестирования

.xlsx 24,61Kb
1
.xlsx 24,61Kb 1 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ImHunter 274 16.11.22 08:49 Сейчас в теме
Поправьте BATH -> BATCH :) Bath - это не про конфигуратор и исходники:))
Ну а по сути статьи... Немного познавательно. Но практического смысла просто в выгрузке исходников - немного. По результатам выгрузки ведь важно знать автора участка кода. В случае Конфигуратора и хранилища для этого используем gitsync.
check2; anatox24; Evil Beaver; kuntashov; Somebody1; NiGMa; +6 Ответить
10. infosoft-v 737 17.11.22 08:40 Сейчас в теме
(1) Добрый день.
Автор участка кода устанавливается не во время выгрузки а во время коммита. Когда программист будет коммитить свою часть работы, git для каждой строчки подставит автора.
2. kser87 2363 16.11.22 10:05 Сейчас в теме
Спасибо, познавательно
zqzq; infosoft-v; +2 Ответить
3. nixel 1321 16.11.22 11:40 Сейчас в теме
Странно, что вспомнили про precommit1c, но забыли про vanessa-runner и v8runner)
Дмитрий74Чел; Yashazz; Darklight; +3 Ответить
6. infosoft-v 737 16.11.22 13:36 Сейчас в теме
(3) Никита, поправьте меня, если я не прав.
В библиотеках *runner при выгрузке конфигурации в файлы под капотом запускается конфигуратор в пакетном режиме. Исходя из этого я не стал тестировать *runner а сразу протестировал конфигуратор в этом режиме.

Напротив в библиотеке precommit1c реализован собственный алгоритм разбора конфигураций. Но причину, по которой я не стал тестировать precommit1C указан в статье.
4. Darklight 30 16.11.22 12:09 Сейчас в теме
Хорошая статья - прям два в одном - и замер производительности инструментов выгрузки, и новые примеры по 1С Исполнителю.
Но два замечания:
1. Жаль, что сбросили со счетов precommit1c (хотя не знаю что там за проблемы с управляемыми формами; пока выглядит как явно предвзятое отстранение прямого стороннего конкурента; думаю можно было бы замерить и им тоже, если там уж явно есть косяки с упр формами - то взяли бы примера ещё и другу конфигурацию без упр форм - правда такую поискать надо - сейчас в типовых почти везде есть хотя бы несколько уро. форм, даже в неуправляемых конфигурациях). Вроде бы есть ещё несколько сторонних сервисов по выгрузки конфигурации в xml файлы.
2. Автор проверил выгрузку, но почему-то не протестировал загрузку, а это тоже важно!
3. Автор говорит об усилении роли внешних инструментов в обработке исходников конфигураций 1С. В таких сценариях часто происходит не полная выгрузка/загрузка, а частичная синхронизация (и у 1С есть поддержка такого режима, в т.ч. с автоанализом изменившихся файлов) - вот в таком режиме было бы неплохо тоже протестировать. В том числе при пакетной работе (несколько выгрузок/загрузок) - тут, думаю, Агент конфигуратора проявит себя более эффективно, так что сбрасывать со счетов его не стоит.
А то получается в статье большая её часть собственно не посвящена непосредственно самим тестам - и было бы правильно её дополнить именно информацией по расширенным тестам!
kpotoyalo; +1 Ответить
11. infosoft-v 737 17.11.22 08:53 Сейчас в теме
(4) Спасибо за такой подробный комментарий.

1. Если я ничего не путаю, то precommit1C :
-- раpбирает конфигурацию в свой формат, отличный от формата 1С-XML
-- формат precommit1C не иерархический а линейный

2, 3 Скрипт для тестирования выгрузки, как учебный пример, помог мне прикоснуться к Исполнителю. Я попробовал его в деле решая реальную задачу. Результат этого эксперимента - понимание, того, что исполнитель вполне удобный и мощный инструмент. Вряд ли я буду развивать тему сравнения платформ, цели такой не было. Однако, я точно буду использовать Исполнитель для реальной автоматизации разработки. И вот этими скриптами, думаю можно и нужно будет поделиться.
5. JohnyDeath 300 16.11.22 12:26 Сейчас в теме
IBCMD тоже может работать в режиме агента (не помню с какой именно версии).
Включи в замеры и этот способ. Должно получится еще быстрее.
infosoft-v; +1 Ответить
7. starik-2005 2834 16.11.22 22:36 Сейчас в теме
Батюшке, петон на русском языке? Они придумали разделение блоков отступами?
Дмитрий74Чел; +1 Ответить
12. infosoft-v 737 17.11.22 08:54 Сейчас в теме
(7) Нет, отступы по желанию. Разделитель блоков кода знак ; (точка с запятой)
23. starik-2005 2834 17.11.22 20:18 Сейчас в теме
(12) Инфаркт с миокардом - от такой рубец! )))
8. Asmody 16.11.22 23:29 Сейчас в теме
Раз пошла такая пьянка, кто-нибудь знает, почему конструктор АдминистрированиеСервераV8() пишет "Ошибка при обращении к кластеру. Отсутствует соединение", хотя rac с теми же параметрами цепляется нормально?
13. infosoft-v 737 17.11.22 08:55 Сейчас в теме
(8) Думаю, что скорее всего подскажут тут: https://t.me/e1c_executor/2
15. Asmody 17.11.22 09:16 Сейчас в теме
(13) Спасибо, пойду спрошу туда
9. PerlAmutor 129 17.11.22 06:33 Сейчас в теме
Антивирус отключали на время выгрузки? По моему опыту он влияет очень сильно на скорость загрузки/выгрузки такого количества мелких файлов. Но скорость выгрузки не самая проблемная часть во всем этом. Самое тяжелое это когда запускаешь трехстороннее объединение с файлом обновления, вот тут и 2 часа может идти сравнение.
tormozit; +1 Ответить
14. infosoft-v 737 17.11.22 08:56 Сейчас в теме
(9) Нет, антивирус не отключал. Даже не подумал об этом. Спасибо за уточнение.
16. Darklight 30 17.11.22 09:35 Сейчас в теме
(9)Вы выполняете сравнение-объединение через xml файлы? Это эффективнее, чем встроенный механизм платформы (в т.ч. в EDT)? Даже при обновлении с файла поставки (cfu)? Каким инструментом пользуетесь?
17. infosoft-v 737 17.11.22 10:04 Сейчас в теме
(16) При разработке конфигурации пользуюсь EDT
При разработке обработок Git + VSCode
22. PerlAmutor 129 17.11.22 20:01 Сейчас в теме
(16) Использую Git и mergetool (2 штуки). Это эффективней в любом случае, т.к. сравнить и объединить можно даже то, что не дает сделать конфигуратор. А главное это промежуточное сохранение и возврат к процессу объединения в любой момент без необходимости запускать сравнение заново. Ни конфигуратор ни EDT не могут эффективно справляться с задачей обновления таких конфигураций как ERP. Плюс поведение конфигуратора при сравнении не всегда очевидное, в зависимости от релиза платформы появляются сюрпризы. Т.ч. делаем объединение через гит, а затем запускаем контрольное сравнение через конфигуратор, сначала с конфигурацией поставщика, а затем со старой конфигурацией, чтобы убедиться что не забыли никаких реквизитов документов или не сократили набор составных типов. Главное помнить, что конфигурация из демо-базы не подходит для объединения и обновления. Уже не раз сталкивался с тем, что конфигурация демо-базы отличается от конфигурации оригинальной конфигурации поставщика. Ну и допиливание роли ПолныеПрава головнняка преподносит.
А и еще один плюс - даже если начали процесс объединения месяц назад и весь месяц коллега допиливал рабочую базу, то его доработки потом очень легко и быстро докидываются после полного мержа. Часто даже на автомате, без необходимости решать мерж конфликты. Конфигуратор так не умеет.
18. Tavalik 2934 17.11.22 13:52 Сейчас в теме
Хорошая статья. И выводы есть.

Я выгружаю через пакетный режим конфигуратора, и платформа у нас 8.3.19.1665. Оказывается, это самый медленный из всех возможных способов )
infosoft-v; +1 Ответить
19. Tavalik 2934 17.11.22 13:55 Сейчас в теме
Тоже хочется попробовать в деле 1С:Исполнитель, но все уже давным-давно автоматизировано, отлажено и работает как часы на OScript. Все нет подходящей задачи.
20. Evil Beaver 7875 17.11.22 17:03 Сейчас в теме
21. Tavalik 2934 17.11.22 17:14 Сейчас в теме
(20)
Вот от кого точно не ожидал такого предложения ))
JohnyDeath; dhurricane; Darklight; infosoft-v; +4 Ответить
24. cdiamond 228 18.11.22 08:47 Сейчас в теме
Тесты плохие, только на скорость, без проверки качества. Не сделано самого интересного - сравненение загруженных из XML конфигураций с эталонной выгрузкой в CF с выводом в диаграмму количества расхождений.
Кто хоть раз делал такое тот поймёт. На ЗУП это особенно хорошо проявляется.
28. infosoft-v 737 18.11.22 09:35 Сейчас в теме
(24) У вас, похоже, готовая тема для отличной статьи - исследования! С удовольствием ее почитаю. Маякните, пожалуйста, когда будет готова.
25. cdiamond 228 18.11.22 09:21 Сейчас в теме
(24)
Для живущих в мире розовых пони прилагаю скрин результата сравнения выгрузки XML и CF на платформе 8.3.22.1709
Сравнение ЗУП Корп
Поверье мне, там покорёжено почти всё. Чем новее платформа, тем результаты хуже.
26. Darklight 30 18.11.22 09:23 Сейчас в теме
(25)А вот с этого момент поподробнее - что там расходится?
27. cdiamond 228 18.11.22 09:25 Сейчас в теме
(26) Расходятся конфиги загруженные с XML и CF
29. infosoft-v 737 18.11.22 09:50 Сейчас в теме
(25) "покорёжено" - что обозначает этот термин?
Если я прогоню конфигурацию через преобразование CF v.1 -> XML -> CF v.2 , то, не смотря на то, сто CF v.1 и CF v.2 отличаются, как будет вести себя CF v.2?
-- не будет запускаться в пользовательском режиме?
-- не будет запускаться в режиме конфигуратора?
-- некоторые алгоритмы будут работать по другому?
-- некоторые формы, макеты, роли... будут работать и выглядеть по другому?

На все вопросы ответ один, конфигурация CF v.2 будет вести себя корректно, равно как и конфигурация CF v.1

Bторой момент, методологический.
Раз уж вы сделали преобразование CF v.1 -> XML, то все дальнейшие сравнения и объединения конфигураций проводите только с XML.
Преобразование XML -> CF v.2 нужно только для одной задачи, а именно накатить обновление на информационную базу.
Нет такой нужды или задачи, что бы сравнивать CF v.1 и CF v.2. Или я не знаю такую задачу.
30. cdiamond 228 18.11.22 09:57 Сейчас в теме
(29) Ну вы сами все тесты проводили с базой ЗУП. Это значит что доработки выполняются со вскрытием замка (иначе зачем его выгружать), и естественно эта база требует постоянного обновления. С тотально расходящимися объектами трудозатраты на обновление растут в десятки раз.
То есть мораль проста - если база своя самописка, то наверно можно применять XML. Хотя на чем основывается уверенность что проблем не будет не ясно. Лично я вообще не уверен ни насчет существования проблемы, ни насчет его отсутствия. Если же сопровождаете "вкрытую" типовую требующую обновлений, то будут очень неприятные сюрпризы
33. Dach 361 20.11.22 23:44 Сейчас в теме
(29) "некоторые формы, макеты, роли... будут работать и выглядеть по другому"

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

Так что да, мне понятна "боль" комментатора выше, когда нужно сравнить cf_1 и cf_2, чтобы убедиться, что в cf_2 ничего не сломалось
38. JohnyDeath 300 01.12.22 14:10 Сейчас в теме
(25) а теперь можешь выгрузить CF_2 на исходники и сравнить их с результатом первой выгрузки?
Сравнить, например, тем же kdiff3
Есть подозрение, что там просто некоторые свойства поменяны местами и/или какие-то свойства по-умолчанию просто не выгружались/загружались
31. IT_Avito 18.11.22 10:41 Сейчас в теме
32. infosoft-v 737 19.11.22 20:10 Сейчас в теме
(31) Спасибо за уточнение. Тогда требуется найти объяснение такому скачку скорости с 8.3.20 для автономного сервера. Есть мысли?
34. VladC# 64 22.11.22 05:58 Сейчас в теме
если ЛогФайл.Существует()
    Файлы.Удалить(ПолныйПутьКЛогФайлу)
;

Вопрос по синтаксису Если - т.е. если начала блока не видно, то лезть вверх и искать что это условный оператор или цикл?
35. Darklight 30 22.11.22 09:48 Сейчас в теме
(34) Да лезть, раз IDE это не показывает. Да - в этом есть некоторое неудобство - но не оно на самом деле надуманное - ситуаций, где конкретизации окончания блока вида "КонецЕсли" "КонецЦикла" реально пригодились бы в чтении кода, не так и много.
А вообще - практика "чистого кода" декларирует правило не писать длинные блоки кода и блоки большой вложенности - проводя декомпозицию кода. Тогда любой блок кода должен условно помещаться примерно "на один экран" листинга, а число вложений (локальных блоков кода; обычно тривиальные 1-2 инструкции вложения не учитывают) не должно быть больше 4-5. Вот эти правила (а не именованные индивидуальные концевики) повышают читаемость кода. Хотя и являются, в общем-то, спорными, т.к. требуют большей упаковки кода в функции, т.е. сокрытия реализации вообще от беглого просмотра. Но всё-равно, это лучше, чем простыни блоков на несколько экранов с неимоверным уровнем вложенности, да ещё и без поясняющих комментариев.
В остальном современная IDE должна интерактивно показывать и границы блоков, и что какой было начало у блока, уметь их сворачивать и разворачивать, и уметь быстро показывать содержимое функции и/или её описание, без смены основной позиции просмотра кода
36. VladC# 64 22.11.22 12:19 Сейчас в теме
(35) Вы являетесь членом команды разработчиков 1С:Исполнитель?
37. Darklight 30 22.11.22 13:06 Сейчас в теме
(36)нет, но разрабатываю другой ЯП
39. sa1m0nn 28 17.01.23 10:20 Сейчас в теме
Скажите, вот это у вас прям работает с ожиданием выполнения?
пер ВремяСтарта: Время = Время.Сейчас()
    Конфигуратор.Запустить()
    Конфигуратор.ОжидатьЗавершения()
    пер ВремяЗавершения: Время = Время.Сейчас()


Почему это дерьмо у меня пролетает за секунду без ожидания, а только потом конфигуратор сам себе запускается и чото делает?!!!
40. sa1m0nn 28 17.01.23 11:20 Сейчас в теме
(39) Сам себе отвечу. Ошибка банальная, но не очевидная. Скрипт с ожиданием едет лесом, если запускать им исполняемый файл стартера C:\Program Files\1cv8\common\1cestart.exe, что допустимо в иных сценариях и мегаудобно, чтобы не выбирать версию платформы. В случае с ожиданием завершения нужно обращаться напрямую к 1cv8.exe.
infosoft-v; +1 Ответить
Оставьте свое сообщение

См. также

Infostart Toolkit

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Простые и удобные инструменты: Консоль запросов, СКД, Редактор объекта, Поиск ссылок и другие. Редактор запросов и кода с раскраской и контекстной подсказкой. Улучшенный конструктор тонкого клиента и др.

10000 руб.

02.09.2020    81189    396    366    

471

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

2400 1920 руб.

14.01.2013    164998    1013    0    

771

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    93744    229    95    

276

Управление сборкой. Расширение для конфигурации СППР

DevOps и автоматизация разработки Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Подсистема «Управление сборкой GLI» предназначена для динамического формирования сборочных линий Gitlab и отслеживания процесса доработок систем на базе1С:Предприятия Позволяет упростить выпуск новых релизов системы, подготовить описание доработок системы. Интегрируется с GitLab API по событиям Push, Merge-request, Pipeline. Уведомляет пользователей о результатах сборки/тестирования сборочных конвейеров через СВ, либо при её недоступности или отсутствию по E-Mail. Поможет при отправке исправлений ошибок в общую базу тестирования, сформирует запросы на слияние в ветку версии только по протестированному и подтверждённому функционалу. Подсистема рассчитана исключительно на клиент - серверную архитектуру тестовых ИБ. Поддерживаемая версии СППР 2.0.4.15, платформа не ниже 8.3.17.1549, 2.0.7.3 / не ниже 8.3.21.1664

7000 руб.

26.08.2022    6812    3    5    

23

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    20020    11    14    

19

Универсальная обработка создания связанных документов (универсальный "ввод на основании")

Инструментарий разработчика Обработка документов Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Универсальная внешняя обработка призвана предоставить пользователю механизм, позволяющий быстро, в удобной и понятной форме настроить в программе функционал по созданию и заполнению новых документов на основании данных других документов (и не только), т.е. возможность настраивать типовой механизм "ввода на основании" для заполнения создаваемых документов по своим правилам.

2500 руб.

02.04.2017    42268    72    27    

128

Автоматическое подтверждение легальности обновления базы или как обновить 100 типовых баз 1С за 5 часов

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2400 руб.

08.05.2019    21502    54    26    

22

Прокси хранилища 1С (IIS, OneScript)

Групповая разработка (Git, хранилище) OneScript DevOps и автоматизация разработки Платформа 1С v8.3 Россия Бесплатно (free)

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    5435    kamisov    31    

84

Автотесты для типовых конфигураций ERP Управление предприятием 2 и Комплексная автоматизация 2 (для vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.8.321.

2004 руб.

04.07.2022    4111    3    0    

12

Автотесты для типовых конфигураций Бухгалтерия предприятия КОРП 3.0 и Бухгалтерия предприятия 3.0 (vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.126.18, 3.0.129.13.

1728 руб.

20.01.2022    4837    1    0    

4

Программное формирование существующих печатных форм

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

Получение списка печатных форм, формирование выбранной печатной формы и сохранение ее в файл.

1 стартмани

17.12.2021    12839    32    RocKeR_13    5    

42

Бустер Конвертации данных 3 (Infostart Toolkit)

Инструментарий разработчика 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    11699    2    12    

36

Универсальный редактор данных (УРД)

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

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    16054    206    Adeptus    57    

92

Автоматизация труда программиста. Библиотека прикладных функций

Инструментарий разработчика Платформа 1С v8.3 Платформа 1C v8.2 Платформа 1С v8.1 Конфигурации 1cv8 Платные (руб)

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

4200 руб.

16.04.2021    10722    2    9    

7

Подсистема "Показатели объектов"

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

06.03.2021    14528    8    pila86    17    

29

Чтение метаданных 1С из SQL Server и PostgreSQL

Инструментарий разработчика Платформа 1С v8.3 Бесплатно (free)

Описание файла DBNames таблицы Params и файлов объектов метаданных таблицы Config.

16.02.2021    11823    zhichkin    74    

79

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    19675    32    huxuxuya    11    

36

DaJet Studio: расширенный язык запросов 1С, очереди сообщений и web сервисы

Инструментарий разработчика Платформа 1С v8.3 Бесплатно (free)

DaJet Studio - разработка и управление скриптами, хранимыми процедурами и функциями, написанными на расширенном языке запросов 1С, а также очередями сообщений и web сервисами, основанными на использовании Microsoft SQL Server.

10.11.2020    12882    126    zhichkin    14    

25

Проверка ведения учета (универсальная)

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

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

2 стартмани

11.08.2020    11671    61    vozhd    4    

19

Глобальное меню разработчика для управляемых форм

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Подсистема "Инструменты разработчика". Глобальное контекстное меню разработчика для управляемых форм в толстом клиенте.

03.08.2020    9071    tormozit    29    

94

Внешний регламент для 1С

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

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

1 стартмани

05.03.2020    17454    14    moolex    13    

15

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    15204    3    6    

32

Markdown-editor в 1С (с сохранением в HTML)

Инструментарий разработчика Управляемые формы Конфигурации 1cv8 Абонемент ($m)

В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.

1 стартмани

04.07.2019    19928    34    riposte    6    

52

Модель объекта

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

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    24911    3    vadim1980    5    

17

CFU & CFE - reader (версия 3.1).

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для анализа файлов обновлений (.cfu) и расширений (.cfe) в режиме предприятия в любой конфигурации для 1С 8.3.+. Основана на разработке https://infostart.ru/public/97194/.

2 стартмани

21.06.2019    17514    48    vandalsvq    12    

28

Как прикрутить ГУИД к регистру сведений

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

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

16.04.2019    25121    m-rv    18    

29

Блин, мы забыли включить регламентные задания…

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

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    35078    23    slozhenikin_com    37    

61

Безопасная работа с транзакциями во встроенном языке

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    61877    tormozit    67    

284

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

31.01.2019    105864    bonv    262    

875

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Бухгалтерский учет Управленческий учет Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    78085    286    informa1555    246    

207

Легкое и гибкое управление списком доступных баз 1С у пользователей

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

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    30557    30    RomikR    11    

18

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек.

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

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

1 стартмани

04.11.2018    68426    648    Eugen-S    36    

52

Навигатор по конфигурации базы 1С 8.3

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

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.95 от 07.05.2023

3 стартмани

28.10.2018    60059    537    ROL32    72    

183

Вспомогательные инструкции в коде 1С

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    40873    tormozit    107    

125

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

10 стартмани

14.08.2018    159919    3533    Evg-Lylyk    802    

624

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

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

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    46583    35    informa1555    30    

77

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар")

Механизмы платформы 1С Платформа 1С v8.3 Запросы Конфигурации 1cv8 Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    42635    103    m-rv    58    

112

Работа со схемой запроса

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

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

1 стартмани

24.04.2018    59417    kalyaka    40    

212

Регистры правил [Расширение]

Инструментарий разработчика Платформа 1С v8.3 Управление правами 1С:Управление торговлей 11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    32517    33    33lab    5    

18