Можно ли программно создать новый документ или справочник в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Ограничения платформы 1С:Предприятие

Проанализируем базовое устройство платформы 1С. Во встроенном языке глобальный объект Метаданные доступен исключительно в режиме «только чтение». В режиме «1С:Предприятие» не существует прямых методов или конструкторов вида Справочники.СоздатьНовыйТип() для добавления новых видов метаданных прямо во время работы пользователей.

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

Способ 1. Использование пакетного режима Конфигуратора и генерация XML

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

  1. Выгрузка конфигурации в XML-файлы: с помощью ключа командной строки /DumpConfigToFiles структура основной конфигурации (или ключа /DumpCustomisationToFile для расширения) выгружается в каталог в виде набора XML-файлов и манифеста.
  2. Программное формирование новых файлов: внешний скрипт (например, на языке OneScript, Python или PowerShell) генерирует XML-описание нового объекта метаданных (его реквизитов, табличных частей, форм, прав доступа) и регистрирует новый файл в дереве конфигурации.
  3. Загрузка конфигурации и обновление базы данных: с помощью ключа /LoadConfigFromFiles (или /LoadCustomisationFromFile) измененные файлы загружаются обратно, а ключ /UpdateDBCfg запускает процедуру обновления структуры базы данных.

Пример команды для запуска Конфигуратора в пакетном режиме из внешнего скрипта:


// Выгрузка конфигурации в файлы
1cv8.exe DESIGNER /IBConnectionString "File=""C:\Base1C"";" /N "Администратор" /P "Пароль" /DumpConfigToFiles "C:\ConfigFiles"

// Загрузка обновленной структуры и обновление базы данных
1cv8.exe DESIGNER /IBConnectionString "File=""C:\Base1C"";" /N "Администратор" /P "Пароль" /LoadConfigFromFiles "C:\ConfigFiles" /UpdateDBCfg

Способ 2. Программная установка сгенерированных расширений

Разберем еще один технологический подход. Если новые объекты метаданных подготавливаются в виде файла расширения (.cfe), его можно установить программно из встроенного языка 1С без перезапуска всей конфигурации в режиме Конфигуратора.

Для этого в режиме «1С:Предприятие» используется объект МенеджерРасширенийКонфигурации и его метод УстановитьРасширениеКонфигурации. Посмотрим на пример кода:


ДвоичныеДанныеРасширения = Новый ДвоичныеДанные("C:\Extensions\MyNewMetadata.cfe");

// Установка или обновление расширения из кода 1С
НовоеРасширение = МенеджерРасширенийКонфигурации.УстановитьРасширениеКонфигурации(ДвоичныеДанныеРасширения);
НовоеРасширение.Записать();

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

Альтернативные варианты без изменения состава метаданных

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

  1. Планы видов характеристик (ПВХ) и дополнительные реквизиты: механизм, реализованный в Библиотеке Стандартных Подсистем (БСП). Позволяет создавать произвольные свойства и типы значений для существующих справочников и документов в режиме «1С:Предприятие».
  2. Универсальный справочник с категориями: создание базового справочника (например, «Классификатор объектов»), где типы разделяются по видам/категориям, а произвольные наборы данных хранятся в табличных частях или связанных регистрах сведений.
  3. Хранение произвольных структур в JSON/XML: использование универсальных регистров сведений, где динамический набор реквизитов сохраняется в текстовых полях или хранилищах значений в формате JSON или XML.

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

← На главную