Развертка - выносим cf-конвертер в отдельный продукт

02.11.26

Разработка - DevOps и автоматизация разработки

В прошлой статье я выгрузил Бухгалтерию в XML байт в байт и спросил, на чем проверить дальше. Вы ответили: ERP, старые релизы, зарплата. Прогнал пять конфигураций, от клиента ЭДО до ERP на 120 тысяч файлов. Рассказываю, что сломалось после Бухгалтерии, почему эталону платформы нельзя верить на слово, как выгрузить одну конфигурацию в формат трех версий платформы - и почему cf-конвертер становится отдельным продуктом, Разверткой.

Пять конфигураций - от маленькой коробки до ящика на тележке

 

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

Вы предложили несколько вариантов. Один читатель сливает релизы ERP через git и попросил проверить ERP. Другой напомнил, что свежей Бухгалтерии недостаточно: многие работают со старыми релизами и старым режимом совместимости. Еще был вопрос о проверке самого эталона - результата работы платформы.

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

Заодно поменялось и само устройство проекта. Выгрузка и загрузка XML оказались полезны сами по себе, без окна и редактора, поэтому я выношу этот cf-конвертер в отдельный продукт - консольную утилиту "Развертка".

 

Результаты на пяти конфигурациях

При выгрузке я сравниваю XML-файлы конвертера с файлами платформы. При загрузке - записи в собранном файле конфигурации. Записи отвергнутых файлов в последнюю колонку не попадают, а если отвергнут хоть один файл, файл конфигурации утилита не собирает вовсе. Поэтому целиком сейчас загружаются только Клиент ЭДО и свежая Бухгалтерия.

Конфигурация Выгрузка: совпало файлов Загрузка: отвергнуто файлов Загрузка: совпало записей из загруженных
Клиент ЭДО 2.9 21 758 из 21 758 0 17 626 из 17 626
Бухгалтерия предприятия 3.0.171.23 90 385 из 90 385 0 77 265 из 77 266
Бухгалтерия предприятия 3.0.107.34 (январь 2022, режим 8.3.16) 68 742 из 68 742 11 302 загрузка не проходит
Зарплата и управление персоналом 3.1.37.54 40 322 из 40 560 19 33 955 из 33 956
ERP 2.5.22.186 (режим 8.3.16) 121 701 из 121 712 89 102 324 из 102 327

Машина та же: Ryzen 5 7500F, 64 ГБ памяти, SATA SSD. Версия платформы - 8.5.1.1529.

Конвертер выгружает Зарплату за 7 секунд, ERP - за 48. Чтобы сравнивать одинаковые действия, я замерил шаги платформы на Зарплате по отдельности: создание базы - 8 секунд, загрузка файла конфигурации - 26, выгрузка из базы в XML - 24. Если конфигурация уже лежит в базе, платформе остается только выгрузка: 24 секунды против 7 у конвертера, который читает файл конфигурации. Если на входе только файл, платформе нужен весь путь - около 57 секунд.

Расхождения у Зарплаты и ERP двух видов. Часть файлов утилита отказалась выгружать и для каждого указала причину: 8 у Зарплаты и 7 у ERP. Остальные выгружены не так, как у платформы: 230 файлов у Зарплаты и 4 у ERP. Их я сейчас и исправляю. Правило из прошлой статьи осталось прежним: без потерь или ошибка.

Самое слабое место - загрузка старой Бухгалтерии: она не проходит. Конвертер отверг 5 656 форм, и файл конфигурации собирать не стал. Причина у всех одна. На старом режиме совместимости платформа 8.5 выгружает формы без объявления одного пространства имен - схемы компоновки данных. Утилита такую форму не принимает: правило есть правило. Вслед за формами отвергнуты их модули и картинки, поэтому в отчете больше 11 тысяч файлов. Это первое, что я буду исправлять в загрузке.

 

Что обнаружилось после Бухгалтерии

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

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

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

 

Бухгалтерия собрана, а на столе еще лежат детали, которых в ней не было

 

Что добавилось за последние дни

ERP продолжает подбрасывать работу. Из последнего:

  • Диаграммы. Подписи шкалы (положение, шрифт, угол, число строк), заголовок шкалы и его место теперь загружаются и выгружаются. Расположение легенды и заголовка диаграммы берется из полных таблиц платформы, а не только из уже встреченных значений. У поля диаграммы загружаются события выбора и обработки расшифровки. Благодаря этому выгружается форма начальной страницы мобильного приложения.
  • Права. Для реквизита адресации снятое право на изменение больше не снимает право на просмотр. Пока это вывод по одному образцу, в коде он помечен как временное решение.
  • Списки. У динамического списка с основной таблицей загружается свойство Group.
  • Свой разборщик запросов научился разбирать условие перед {...} в параметре виртуальной таблицы, цепочку сравнений вида а = б <> в, конструкцию Поле.* в параметре виртуальной таблицы, ИНДЕКСИРОВАТЬ ПО полю источника, которого нет в выборке, и колонку ВерсияДанных в своем запросе. Ресурсы, реквизиты и регистратор в условии среза тоже разбираются, но пока по образцам.

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

 

Что брать за эталон

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

ERP и старая Бухгалтерия сохранены в режиме совместимости 8.3.16. В исходном файле конфигурации записи имеют старый формат. Платформа 8.5 при загрузке XML записывает их уже в новом.

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

Правильный эталон - файл, который сама платформа собрала из того же XML. Тогда сравниваются результаты одной и той же операции.

 

Эталон - то, что платформа собрала из того же XML, а не файл поставщика

 

Почему одна запись все равно не совпала

В Бухгалтерии осталась одна несовпадающая запись из 77 266. Это макет схемы компоновки данных: у нескольких ячеек одинаковое оформление со встроенной картинкой.

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

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

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

 

Три формата XML

Проверка старой Бухгалтерии подняла еще один вопрос: какой формат выгрузки нужен пользователям разных версий платформы?

У 8.3.24, 8.3.27 и 8.5 разные версии XML:

Платформа Версия формата XML
8.3.24 2.17
8.3.27 2.20
8.5 2.21

Тем, кто работает на 8.3.24 или 8.3.27, нужен соответствующий формат.

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

Теперь утилита поддерживает все три формата. На старой Бухгалтерии каждый из них совпал с выгрузкой соответствующей платформы: 68 742 файла из 68 742.

Здесь тоже важно правильно выбрать исходные данные. Таблицу различий нужно строить по выгрузкам одной конфигурации разными версиями платформы - например, 8.5 и 8.3.24. Если сравнивать платформу с конвертером, его ошибки могут попасть в таблицу под видом особенностей формата.

 

Одна конфигурация - три формата

 

Загрузка и сверка на всех ядрах

В прошлой статье я писал, что загрузка пока идет в один поток и ускорять ее буду следующей. На ERP это стало заметно: проверка загрузки целиком - собрать записи из XML и сравнить больше ста тысяч записей с эталоном - занимала 13 минут 44 секунды.

Запускать проверку хочется после каждой правки. С такой паузой итераций за день получается немного. Поэтому ускорил оба шага:

  • загрузка теперь обрабатывает объекты верхнего уровня параллельно, каждый в своем потоке, а результаты собирает в прежнем порядке: на ERP было 218 секунд, стало 64;
  • сравнение с эталоном тоже раздается по ядрам: было 602 секунды, стало 4. Тут упирались даже не в процессор, а в открытие файлов.

Вся проверка загрузки ERP теперь занимает 1 минуту 16 секунд. Результат при этом не изменился: отчеты до и после совпали байт в байт.

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

 

Что я изменил в подходе к проверке

После этих пяти конфигураций у меня сложилось несколько правил:

  • Проверять разные предметные области. Одна большая конфигурация не покрывает всю платформу. Маленькая конфигурация из другой области может быстрее обнаружить пробелы.
  • Для загрузки брать эталон, собранный платформой из того же XML. Особенно это важно для старых режимов совместимости: исходный файл поставщика может иметь другой внутренний формат.
  • Проверять воспроизводимость самого эталона. Два запуска платформы помогают найти файлы, которые меняются без изменения конфигурации.
  • Изучать различия версий по выгрузкам платформы. Иначе есть риск принять ошибку конвертера за особенность старого формата.
  • Ускорять проверку. Чем меньше длится сверка, тем чаще ее можно запускать и тем быстрее исправлять ошибки.

 

Как пользоваться Разверткой

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

cfkit export 1Cv8.cf src                 выгрузить конфигурацию в XML, как "Выгрузить конфигурацию в файлы"
cfkit export 1Cv8.cf src --format 2.17   то же в формате 8.3.24 (2.20 - формат 8.3.27)
cfkit import src 1Cv8.cf                 собрать файл конфигурации из выгрузки
cfkit xml-diff src ref                   сравнить две выгрузки по видам файлов

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

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

 

Что дальше

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

Из ваших комментариев получился такой план:

  • выгружать выбранные объекты или подсистему вместо всей конфигурации;
  • загружать только объекты, измененные по данным git diff;
  • проверить слияние релизов ERP: взять три выгрузки, выполнить слияние в git и загрузить результат. При этом собрать все причины отказа за один прогон, без цепочки ошибок, вызванных одной исходной проблемой.

Если вы сливаете релизы через git, на каком этапе сейчас больше всего трудностей? И нужен ли вам формат EDT или достаточно формата платформы?

Ну и какую конфигурацию проверить шестой? Пишите в комментариях.

Изображение для анонса создано нейросетью.

Вступайте в нашу телеграмм-группу Инфостарт

выгрузка в XML загрузка из XML файл конфигурации cf git CI DevOps ibcmd ERP ЗУП регистры расчета режим совместимости формат выгрузки версия формата сравнение выгрузок эталон Развертка

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    13218    104    0    

78

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    192516    383    296    

435

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    164989    1009    329    

492

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    211425    186    254    

303

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 руб.

15.12.2021    37101    268    68    

204

Операции по ВЭД Файловый обмен (TXT, XML, DBF), FTP Разработчик Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Платные (руб)

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:". Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные) Обработка актуализирована на начало 2026 года (ставка НДС 22%)

24400 руб.

09.08.2016    97822    380    379    

125

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

27572 руб.

18.02.2016    209216    686    559    

565
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ardn 861 02.11.26 10:21 Сейчас в теме
Жду инструмент, интересно его опробовать. И конфигуратор с темной темой тоже очень интересен
2. oyti 107 03.11.26 16:38 Сейчас в теме
(1) Опубликовали в новой статье https://infostart.ru/1c/articles/2833995/
От темного клона Конфигуратора отказались из-за того, что нужно очень много ресурсов для создания полноценного редактора. Но не целиком - будем строить модуль для одной весьма популярной IDE
Прикрепленные файлы:
Для отправки сообщения требуется регистрация/авторизация