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

16.11.22

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Гонка конфигураторов с помощью экзекутора: программа - скрипт
.sbsl 7,85Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.
Гонка конфигураторов с помощью экзекутора: результат тестирования
.xlsx 24,61Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.

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

 

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

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

 Вопрос?

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

 Важно!

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

См. также

SALE! %

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

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

12000 10000 руб.

02.09.2020    162794    898    401    

879

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

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

2500 руб.

20.06.2023    22894    21    4    

321

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 руб.

20.08.2024    9308    72    32    

83

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

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

22200 руб.

06.10.2023    15938    39    8    

75

SALE! %

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

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

15000 10000 руб.

10.11.2023    10851    40    27    

66

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

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

9360 руб.

17.05.2024    24195    71    45    

121

SALE! %

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

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

4800 3840 руб.

14.01.2013    189039    1144    0    

915

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Программист Стажер Платформа 1С v8.3 Платные (руб)

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 руб.

29.06.2022    12206    105    4    

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

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

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

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

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

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

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

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