Описание формата контейнера 1С (CF, EPF, ERF, CFE) с помощью БНФ. Предлагается внешняя компонента на С

29.09.25

Разработка - Разработка внешних компонент

На чем только не писали работу с контейнером: C++, C#, Python, Delphi (Lazarus), и даже на такой экзотике, как Lua и 1С! Хотите экзотик, их есть у меня! И это… язык C!

Файлы

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

Наименование Скачано Купить файл
Обработка с внешней компонентой на C для работы с контейнером 1С
.epf 3,59Mb ver:2.0.0.2
74 4 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

Зачем?! На C и вправду ничего в экосистеме 1С нет. Или мне не попадалось. И, кроме пополнения списка в статье VKislitsin, хотелось сравнить скорость с платформой 1С. Здесь, правда, возникает проблема: если получить скорость разбора контейнера в компоненте просто, как получить эту скорость в 1С? Приходится прибегать к замеру «по часам», что даёт очень не точный результат.

В Windows в режиме тонкого клиента среднее значение времени получения метаданных из ERP 2.5.12.48 компонентой составляет 640 мс. Открытие того же файла в 1С Конфигураторе 8.3.23.1739 (х64) – около 5 000 мс. Таким образом, прирост скорости в ≈ 8 раз. Но из внешней компоненты возвращается текст в JSON, его разбор и отображение в 1С занимает, вместе с запросом в ВК, ≈ 3000 мс. При таком расчете прирост скорости падает с 8 до ≈ 1,7 раза.

Для тестирования скорости желательно временно отключить Защиту в реальном времени Microsoft Defender (если он у вас включен). Служба Antimalware service executable очень сильно тормозить выполнение ВК. 

 

В Linux, запущенной в Oracle VM VirtualBox, в режиме тонкого клиента среднее значение времени получения метаданных из ERP 2.5.12.48 компонентой составляет 1030 мс. Открытие того же файла в 1С Конфигураторе 8.3.23.1739 (х64) – около 20 000 мс. Таким образом, прирост скорости в ≈ 20 раз. Как неожиданно и... странно!

Для реализации работы в веб-клиенте использовалась обработка из статьи Решение для работы внешней компоненты в веб-браузере под Windows и Linux: 1С + Installer.

Эта статья, в некотором смысле, опирается на работу Андрея Овсянкина Описание формата файлов конфигурации (CF, EPF, ERF) и использует её терминологию.

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

Контейнер – файл с конфигурацией (cf),  внешняя обработка (epf), внешний отчет (erf) или расширение (cfe). Если проводить аналогию с файловой системой, то контейнер - это логический диск. Файл внутри контейнера – это поименованная совокупность данных. Файл всегда состоит из двух документов: документа заголовка и документа с содержимым файла. Документ, в свою очередь, состоит из блоков. Блок – это структура из заголовка и следующего строго за ним тела блока. Начиная с версии платформы 8.3.16, появилась новая версия контейнера. Эта версия есть только для конфигурации (cf), и представляет собой адаптацию для работы с 64-х разрядными (UINT64) адресами (старая версия работает с 32-х разрядными (INT32) адресами).

Метаданное – это связанная совокупность файлов. Метаданные – вся структура метаданных в контейнере. В контейнере для работы с метаданными находятся несколько вспомогательных файлов: root, version, versions, copyinfo, configinfo. Root/configinfo – это файл, с которого начинается работа с метаданными контейнера. 

Root используется для конфигурации (cf),  внешней обработке (epf), внешнего отчета (erf), для расширения (cfe) – configinfo. Внутри root файла находится id файла с описанием структуры метаданных.

В файле version находится информация о версии контейнера, например: {{216,0,{80323,0}}}, где 80323 – номер версии. Если номер версии меньше 80316 – версия с 32-х разрядной адресацией, иначе – с 64-х разрядной. Имеет смысл только для конфигурации, в обработке, отчете, расширении всегда 32-х разрядная версия, вне зависимости от того, что написано в файле version.

В файле versions находятся пары «id метаданного», id версии метаданного. Используется для кэширования метаданных. 

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

Configinfo используется в расширении вместо root, version, versions.

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

Например, в ERP 2.5.12.48.cf, у справочника Файлы с id e7b0ae70-0192-456c-9dc5-e66049fa9df2, постфикса модуля объекта (см. ниже таблицу) - 0, то есть, id файла с модулем объекта - id.0, e7b0ae70-0192-456c-9dc5-e66049fa9df2.0. Аналогично, модуль менеджера - e7b0ae70-0192-456c-9dc5-e66049fa9df2.3, справочная информация, e7b0ae70-0192-456c-9dc5-e66049fa9df2.1, предопределенные данные, внезапно!, e7b0ae70-0192-456c-9dc5-e66049fa9df2.1c. Не все постфиксы однозначные и цифровые.

С частями произвольного количества несколько сложнее: нужно в файле атрибутов найти id части, для справочников id форм - fdf816d2-1ead-11d5-b975-0050bae0a95d. Получаем имена файлов формы, например, ФормаВыбора: Атрибуты формы - 5a398637-a06c-4442-9093-a864fa7f049f, Форма и модуль - 5a398637-a06c-4442-9093-a864fa7f049f.0, Справочная

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

  • 1С:ERP Управление предприятием 2, релизы 2.5.17.157

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

Контейнер 1С C Внешняя компонента Формат файлов конфигурации

См. также

Разработка внешних компонент Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

5084 руб.

12.05.2020    34437    146    100    

102

Разработка внешних компонент Программист 1С:Предприятие 8 Бесплатно (free)

Нативная внешняя компонента для 1С 8 для чтения файлов Excel без установленного Excel и делает это быстро, файл 68МБ загружается в таблицу значений ~1 секунду. Компонента поддерживает чтение двух форматов: Excel 2007+ и Excel 97-2003 Формат файла определяется автоматически по сигнатуре (первые 8 байт файла), а не по расширению. Позволяет открывать XLS и XLSX файлы и получать содержимое листов в виде ТаблицыЗначений или JSON-массива.

03.07.2026    1425    skyadmin    31    

24

Разработка внешних компонент Программист 1С 8.3 Бесплатно (free)

В современных корпоративных решениях на платформе 1С:Предприятие 8.3 всё чаще возникает потребность в визуальном моделировании и автоматизации бизнес-процессов с использованием нотации BPMN 2.0. Стандартные средства платформы не предоставляют полноценного редактора BPMN, однако интеграция открытой библиотеки bpmn-js позволяет реализовать интерактивное моделирование бизнес-процессов непосредственно в 1С. В статье рассмотрены архитектура решения, пошаговая инструкция по сборке библиотеки из исходников для WebKit, а также примеры программного взаимодействия между 1С и JavaScript.

03.04.2026    3429    SultanovStas    8    

23

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    7532    bayselonarrend    17    

54

Разработка внешних компонент Программист 1С:Предприятие 8 Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    12978    kovalevdmv    29    

83

Разработка внешних компонент Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    12750    starik-2005    40    

49
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 1121 11.07.23 12:42 Сейчас в теме
4. bakmistoff1977 44 11.07.23 14:55 Сейчас в теме
(1) Пока не планирую. Здесь, несколько, академический интерес.
2. ZhokhovM 701 11.07.23 12:59 Сейчас в теме
Не все модули выводятся в обработке + повторяются ветки "Модули конфигурации" в закладке "Закрытые модули".
6. bakmistoff1977 44 11.07.23 15:01 Сейчас в теме
(2) Спасибо. А можно как-то поподробнее, в какой конфигурации это происходит?
7. ZhokhovM 701 11.07.23 15:34 Сейчас в теме
(6)Создайте пустую конфигурацию и добавьте в нее все объекты метаданных. Затем найдите любые модули в этих объектах и попробуйте установить пароль на них. Распакуйте конфигурацию в исходные файлы и обнаружьте, какие модули отсутствуют.
3. ZhokhovM 701 11.07.23 13:13 Сейчас в теме
В таблице видов метаданных с постфиксами единичных частей:
Неизвестный 39bddf6a-0c3c-452b-921c-d99cfa1c2f1b
Это вид метаданных "Интерфейс".
5. bakmistoff1977 44 11.07.23 14:56 Сейчас в теме
(3) Спасибо. Я такие старые версии конфигураций не рассматривал.
8. so-quest 140 16.07.23 07:38 Сейчас в теме
Подписка
prohorp; bakmistoff1977; +2 Ответить
9. Serjik78 1290 22.11.23 17:33 Сейчас в теме
Добрый день, а есть декомпиляция для расширений? (CFE).
10. bakmistoff1977 44 27.11.23 14:16 Сейчас в теме
(9) Добрый день! Извиняюсь, что поздно отвечаю, что-то Инфостарт не показывает сообщения. Эта обработка не про декомпиляцию. Она про работу с контейнером. И расширения *.cfe этой обработкой поддерживаются.
11. SergMuravev 910 23.11.24 06:35 Сейчас в теме
При начале анализа cf от ERP 2.5.17 выскочила ошибка

Ошибка при вызове метода контекста (ПрочитатьЗначениеJSON)
{ВнешняяОбработка.РаботаСКонтейнером1С.Форма.Основная.Форма(192)}: СтруктураJSON = ПрочитатьЗначениеJSON(СтрокаJSON);
{ВнешняяОбработка.РаботаСКонтейнером1С.Форма.Основная.Форма(2442)}: ВыполнитьОбработкуОповещения(ОписаниеОповещения, Обещание);
по причине:
Строка не является допустимой строкой JSON.
Строка не является допустимой строкой JSON.
12. bakmistoff1977 44 23.11.24 18:11 Сейчас в теме
(11) Спасибо за комментарий.
С конфой Enterprise20_2_5_17_157.cf мне ошибку получить не удалось. Версия платформы: 8.3.23.1739, ОС: win 10, режимы запуска: тонкий и веб клиенты. Напишите, какая у вас версия платформы 1С, ОС, режим запуска. Если возможно, приложите файл с текстом JSON, который возвращается в СтрокаJSON.
13. SergMuravev 910 23.11.24 20:01 Сейчас в теме
(12) Я проверил типовые cf, на них ошибки нет. В публичный доступ выложить JSON не могу, но при попытке сохранения файла, он обрезается в конце. Размер обрезанного файла 2 980 386 байт
Прикрепленные файлы:
14. SergMuravev 910 23.11.24 20:37 Сейчас в теме
(13) Я убрал несколько элементов из обрезанного файла и добавил этот хвост. Потом загрузил JSON из файла. После этого структура прочиталась нормально.
15. bakmistoff1977 44 24.11.24 14:29 Сейчас в теме
(14) Кажется, поправил ошибку. На днях выпущу новое обновление. Если вам нужна обработка срочно, попробуйте подключить библиотеку из прикрепленного к этому комментарию архива. В процедуре ПриСозданииНаСервере в обработке нужно будет добавить строчку АдресАрхиваКомпонента = "место расположения dll из архива".
Прикрепленные файлы:
WebExContainer1CWin64_2002.zip
16. SergMuravev 910 24.11.24 14:43 Сейчас в теме
(15) Да, теперь ошибки нет, спасибо. Работает очень быстро, просто здорово!
bakmistoff1977; +1 Ответить
17. SergMuravev 910 28.12.24 13:34 Сейчас в теме
На конфигурации размера ERP дерево метаданных подтормаживает при интерактивном взаимодействии. Если очистить свойства КартинкаСтрок и ПутьКДаннымСтроки, а квадратные картинки хранить в каждой строке (колонка Картинка), то торможение прекращается.
18. DiasA 7 26.09.25 22:45 Сейчас в теме
Неточные данные в
Таблица видов метаданных с постфиксами единичных частей

Планы видов расчета 30b100d6-b29f-47ac-aec7-cb8ca8a54767

Модуль объекта/набора записей : 1 (а должно быть 0)
Модуль менеджера : 3
Справочная информация : 0 (а должно быть 1)
Предопределенные значения : 2


проверено на конфигурации:
ОбычныеФомы, РежимСовместимости-8.3.20.
платформа: 8.3.22.2239
19. bakmistoff1977 44 27.09.25 18:14 Сейчас в теме
(18) А конфигурация какая? Где-то мне это нужно посмотреть.
20. DiasA 7 28.09.25 23:32 Сейчас в теме
(19)
проверено на двух.

1) пустая (созданная, что вы и сами можете сделать)
Обычные формы
Режим совместимости: 8.3.20

2) 1С:ERP Управление предприятием 2
Управляемое приложение
Версия 2.5.8.232
РежимСовместимости: 8.3.17
21. bakmistoff1977 44 29.09.25 12:13 Сейчас в теме
(20) Хотелось бы картинку, иначе мне не понятно, где вы взяли вот это:

Модуль объекта/набора записей : 1 (а должно быть 0)
Модуль менеджера : 3
Справочная информация : 0 (а должно быть 1)
Предопределенные значения : 2


В данной обработке ничего подобного нет.
22. DiasA 7 29.09.25 17:02 Сейчас в теме
(21)
я не писал ни слова про обработку.
а указал на приведенные вами данные в таблице, рассчитывая что вы будете знать куда смотреть.

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

метаданные : "Планы видов расчета".
Прикрепленные файлы:
23. bakmistoff1977 44 29.09.25 18:20 Сейчас в теме
(22) Спасибо! Внес исправление в статью.
24. UserLogin 13.11.25 12:35 Сейчас в теме
А посмотреть скрытый 1-сный код модуля внешней обработки нет возможности с помощью этого инструмента ?
25. пользователь 13.11.25 18:10
Сообщение было скрыто модератором.
...
Для отправки сообщения требуется регистрация/авторизация