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

16.11.22

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

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

Скачать исходный код

Наименование Файл Версия Размер
Гонка конфигураторов с помощью экзекутора: программа - скрипт
.sbsl 7,85Kb
1
.sbsl 7,85Kb 1 Скачать
Гонка конфигураторов с помощью экзекутора: результат тестирования
.xlsx 24,61Kb
1
.xlsx 24,61Kb 1 Скачать

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

 

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

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

 Вопрос?

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

 Важно!

Для повторения эксперимента на своей машине, требуется при установке платформы отмечать установку сервера 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 файл с результатами тестирования. Вы можете скачать эти файлы в качестве благодарности за мою статью.

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.28.65

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    131727    716    390    

762

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

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

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

18000 руб.

06.10.2023    9571    27    6    

51

Infostart УДиФ: Управление данными и формами 1С

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

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

10000 руб.

10.11.2023    5642    15    2    

39

SALE! %

PowerTools

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

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

3600 2880 руб.

14.01.2013    180167    1096    0    

871

OneDebugger - инструмент для отладки кода без использования режима конфигуратора

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

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

5400 руб.

17.05.2024    6623    14    12    

40

Онлайн-интенсив "DevOps для 1С". с 5 февраля по 19 марта 2024 г.

DevOps для 1С DevOps и автоматизация разработки Программист Стажер Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

9000 руб.

20.06.2023    16755    2    3    

249

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

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

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

2220 руб.

04.07.2022    7196    27    1    

25

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

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

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

15000 руб.

07.10.2021    15487    3    12    

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

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

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

2, 3 Скрипт для тестирования выгрузки, как учебный пример, помог мне прикоснуться к Исполнителю. Я попробовал его в деле решая реальную задачу. Результат этого эксперимента - понимание, того, что исполнитель вполне удобный и мощный инструмент. Вряд ли я буду развивать тему сравнения платформ, цели такой не было. Однако, я точно буду использовать Исполнитель для реальной автоматизации разработки. И вот этими скриптами, думаю можно и нужно будет поделиться.
5. JohnyDeath 301 16.11.22 12:26 Сейчас в теме
IBCMD тоже может работать в режиме агента (не помню с какой именно версии).
Включи в замеры и этот способ. Должно получится еще быстрее.
infosoft-v; +1 Ответить
7. starik-2005 3046 16.11.22 22:36 Сейчас в теме
Батюшке, петон на русском языке? Они придумали разделение блоков отступами?
Дмитрий74Чел; +1 Ответить
12. infosoft-v 882 17.11.22 08:54 Сейчас в теме
(7) Нет, отступы по желанию. Разделитель блоков кода знак ; (точка с запятой)
23. starik-2005 3046 17.11.22 20:18 Сейчас в теме
(12) Инфаркт с миокардом - от такой рубец! )))
8. Asmody 16.11.22 23:29 Сейчас в теме
Раз пошла такая пьянка, кто-нибудь знает, почему конструктор АдминистрированиеСервераV8() пишет "Ошибка при обращении к кластеру. Отсутствует соединение", хотя rac с теми же параметрами цепляется нормально?
13. infosoft-v 882 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 882 17.11.22 08:56 Сейчас в теме
(9) Нет, антивирус не отключал. Даже не подумал об этом. Спасибо за уточнение.
16. Darklight 32 17.11.22 09:35 Сейчас в теме
(9)Вы выполняете сравнение-объединение через xml файлы? Это эффективнее, чем встроенный механизм платформы (в т.ч. в EDT)? Даже при обновлении с файла поставки (cfu)? Каким инструментом пользуетесь?
17. infosoft-v 882 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 3373 17.11.22 13:52 Сейчас в теме
Хорошая статья. И выводы есть.

Я выгружаю через пакетный режим конфигуратора, и платформа у нас 8.3.19.1665. Оказывается, это самый медленный из всех возможных способов )
infosoft-v; +1 Ответить
19. Tavalik 3373 17.11.22 13:55 Сейчас в теме
Тоже хочется попробовать в деле 1С:Исполнитель, но все уже давным-давно автоматизировано, отлажено и работает как часы на OScript. Все нет подходящей задачи.
20. Evil Beaver 8142 17.11.22 17:03 Сейчас в теме
21. Tavalik 3373 17.11.22 17:14 Сейчас в теме
(20)
Вот от кого точно не ожидал такого предложения ))
JohnyDeath; dhurricane; Darklight; infosoft-v; +4 Ответить
24. cdiamond 235 18.11.22 08:47 Сейчас в теме
Тесты плохие, только на скорость, без проверки качества. Не сделано самого интересного - сравненение загруженных из XML конфигураций с эталонной выгрузкой в CF с выводом в диаграмму количества расхождений.
Кто хоть раз делал такое тот поймёт. На ЗУП это особенно хорошо проявляется.
28. infosoft-v 882 18.11.22 09:35 Сейчас в теме
(24) У вас, похоже, готовая тема для отличной статьи - исследования! С удовольствием ее почитаю. Маякните, пожалуйста, когда будет готова.
25. cdiamond 235 18.11.22 09:21 Сейчас в теме
(24)
Для живущих в мире розовых пони прилагаю скрин результата сравнения выгрузки XML и CF на платформе 8.3.22.1709
Сравнение ЗУП Корп
Поверье мне, там покорёжено почти всё. Чем новее платформа, тем результаты хуже.
26. Darklight 32 18.11.22 09:23 Сейчас в теме
(25)А вот с этого момент поподробнее - что там расходится?
27. cdiamond 235 18.11.22 09:25 Сейчас в теме
(26) Расходятся конфиги загруженные с XML и CF
29. infosoft-v 882 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 235 18.11.22 09:57 Сейчас в теме
(29) Ну вы сами все тесты проводили с базой ЗУП. Это значит что доработки выполняются со вскрытием замка (иначе зачем его выгружать), и естественно эта база требует постоянного обновления. С тотально расходящимися объектами трудозатраты на обновление растут в десятки раз.
То есть мораль проста - если база своя самописка, то наверно можно применять XML. Хотя на чем основывается уверенность что проблем не будет не ясно. Лично я вообще не уверен ни насчет существования проблемы, ни насчет его отсутствия. Если же сопровождаете "вкрытую" типовую требующую обновлений, то будут очень неприятные сюрпризы
33. Dach 377 20.11.22 23:44 Сейчас в теме
(29) "некоторые формы, макеты, роли... будут работать и выглядеть по другому"

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

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

Вопрос по синтаксису Если - т.е. если начала блока не видно, то лезть вверх и искать что это условный оператор или цикл?
35. Darklight 32 22.11.22 09:48 Сейчас в теме
(34) Да лезть, раз IDE это не показывает. Да - в этом есть некоторое неудобство - но не оно на самом деле надуманное - ситуаций, где конкретизации окончания блока вида "КонецЕсли" "КонецЦикла" реально пригодились бы в чтении кода, не так и много.
А вообще - практика "чистого кода" декларирует правило не писать длинные блоки кода и блоки большой вложенности - проводя декомпозицию кода. Тогда любой блок кода должен условно помещаться примерно "на один экран" листинга, а число вложений (локальных блоков кода; обычно тривиальные 1-2 инструкции вложения не учитывают) не должно быть больше 4-5. Вот эти правила (а не именованные индивидуальные концевики) повышают читаемость кода. Хотя и являются, в общем-то, спорными, т.к. требуют большей упаковки кода в функции, т.е. сокрытия реализации вообще от беглого просмотра. Но всё-равно, это лучше, чем простыни блоков на несколько экранов с неимоверным уровнем вложенности, да ещё и без поясняющих комментариев.
В остальном современная IDE должна интерактивно показывать и границы блоков, и что какой было начало у блока, уметь их сворачивать и разворачивать, и уметь быстро показывать содержимое функции и/или её описание, без смены основной позиции просмотра кода
36. VladC# 64 22.11.22 12:19 Сейчас в теме
(35) Вы являетесь членом команды разработчиков 1С:Исполнитель?
37. Darklight 32 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 Ответить
Оставьте свое сообщение