Как правильно перенести часть объектов (документы, справочники, обработки) из одной конфигурации 1С в другую?

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

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

Способ 1. Сравнение и объединение конфигураций (Рекомендуемый классический метод)

Использование встроенного механизма сравнения и объединения конфигураций через файл .cf — это наиболее надежный и проверенный временем способ. Он позволяет гибко выбирать переносимые объекты и, что самое главное, сохраняет их внутренние уникальные идентификаторы (GUID).

Рассмотрим этот процесс пошагово:

  1. Создание резервной копии. Перед выполнением любых манипуляций в конфигураторе обязательно создайте резервную копию целевой базы данных (выгрузите файл .dt или сделайте копию на уровне СУБД).
  2. Выгрузка конфигурации-источника. Откройте базу-источник в режиме конфигуратора и выполните команду Конфигурация — Сохранить конфигурацию в файл.... Назовите файл, например, source.cf.
  3. Запуск сравнения в целевой базе. Откройте целевую базу в конфигураторе. Перейдите в меню Конфигурация — Сравнить, объединить с конфигурацией из файла... и выберите сохраненный ранее файл source.cf.
  4. Настройка правил объединения. В открывшемся окне сравнения и объединения платформ выведет полный список различий. По умолчанию галочки будут стоять напротив всех изменившихся объектов. Чтобы не затереть нужные данные и не внести хаос, выполните следующие действия:
    • Снимите общую галочку в самом верху дерева метаданных, чтобы очистить выбор.
    • Аккуратно найдите в дереве ваши 4 документа, 4 справочника, роли, интерфейсы и обработку и отметьте их галочками.
    • Проверьте свойства этих объектов. При необходимости настройте правила объединения (например, «Взять из файла» или «Объединить с приоритетом основной конфигурации»).
  5. Выполнение объединения. Нажмите кнопку Выполнить. Конфигуратор перенесет выбранные объекты.
  6. Обновление конфигурации базы данных. Нажмите клавишу F7 (или выберите Конфигурация — Обновить конфигурацию базы данных) для применения изменений на уровне базы данных.

Опасность простого копирования (Ctrl+C / Ctrl+V) и Drag-and-Drop

В процессе обсуждения на форумах часто предлагают «быстрый» способ: открыть два конфигуратора рядом и перетащить объекты мышкой или скопировать их через буфер обмена (клавишами Ctrl+C и Ctrl+V). Выясним, почему этот метод таит в себе скрытую угрозу.

Изменение внутренних идентификаторов (GUID):

При обычном копировании или перетаскивании объектов платформа 1С воспринимает их как абсолютно новые элементы. Она автоматически генерирует для них новые уникальные идентификаторы (GUID) в целевой базе. К чему это приводит на практике?

Именно поэтому для переноса объектов метаданных между базами, которые должны обмениваться информацией, следует использовать только штатный механизм Сравнения и объединения, так как он гарантирует перенос оригинальных GUID.

Способ 2. Использование расширений конфигурации (Современный подход)

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

Проанализируем этот подход подробнее:

  1. В целевой конфигурации перейдите в меню Конфигурация — Расширения конфигурации.
  2. Добавьте новое расширение, задайте ему имя и префикс (например, НовыйФункционал).
  3. В окне расширения создайте необходимые 4 справочника, 4 документа и обработку.
  4. Если новые объекты должны ссылаться на существующие справочники основной конфигурации (например, на справочник Контрагенты или Номенклатура), просто добавьте эти типы данных в расширение методом «Заимствовать».
  5. Перенесите роли и настройте права доступа непосредственно внутри расширения.

Такой подход позволяет сохранить основную конфигурацию полностью типовой, что гарантирует простоту её дальнейшего обновления стандартными файлами обновлений (.cfu).

Способ 3. Выгрузка и загрузка конфигурации в файлы XML

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

Разберем этот метод по шагам:

  1. В конфигураторе источника выберите команду Конфигурация — Выгрузить конфигурацию в файлы... и укажите пустую локальную папку. Платформа выгрузит всю структуру метаданных в виде иерархии папок и файлов XML.
  2. Сделайте аналогичную выгрузку для целевой конфигурации в другую папку.
  3. Найдите в первой папке XML-файлы и подпапки, соответствующие вашим 4 документам, 4 справочникам и обработке (они будут лежать в соответствующих директориях, например, Documents, Catalogs, DataProcessors).
  4. Скопируйте эти папки и файлы из структуры источника в структуру целевой папки.
  5. В целевом конфигураторе выполните команду Конфигурация — Загрузить конфигурацию из файлов..., указав измененную целевую папку.

Этот способ позволяет добиться стопроцентной точности переноса метаданных и их GUID. Он незаменим при групповой разработке с использованием систем контроля версий (Git) и среды разработки 1C:Enterprise Development Tools (EDT).

Проблема контроля ссылочной целостности («битые» типы данных)

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

Например, документ содержит реквизит ДоговорЭкспедирования с типом ссылки на специфический справочник ДоговорыЭкспедирования, существующий только в старой базе. Если вы попытаетесь перенести только документ:

Правило успешного переноса: Перед переносом основных объектов всегда сначала проанализируйте их зависимости. Перенесите сначала базовые типы данных (перечисления, дополнительные справочники, планы видов характеристик), на которые ссылаются реквизиты ваших документов и справочников, и только после этого переносите сами документы.

Особенности интеграции с БСП (Библиотека стандартных подсистем)

Большинство современных конфигураций 1С (ERP, КА, УТ, БП, ЗУП) построены на базе БСП. Если ваша целевая конфигурация использует БСП, простого переноса метаданных в конфигураторе недостаточно.

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

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

ЗапуститьОбновлениеИнформационнойБазы

Или запустите внешнюю обработку (консоль кода) и выполните следующий программный код от имени администратора для принудительного обновления идентификаторов:


ПараметрыОбновления = Новый Структура;
ПараметрыОбновления.Вставить("ЗапуститьОбновлениеИнформационнойБазы", Истина);
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);

Этот шаг зарегистрирует ваши новые 4 документа и 4 справочника в служебных таблицах БСП. После этого вы сможете без проблем настроить роли, права и видимость этих объектов в пользовательском режиме.

Резюме и чеклист перед началом работ

Подведем итоги. Чтобы перенос прошел быстро и безболезненно, следуйте нашему краткому чеклисту:

  1. Сделайте резервную копию базы данных целевой конфигурации (файл .dt).
  2. Проанализируйте переносимые справочники и документы на наличие связей с другими объектами метаданных. При наличии внешних связей — запланируйте их перенос в первую очередь.
  3. Используйте механизм сравнения и объединения (через файл .cf) для сохранения GUID объектов, либо выгрузку в XML-файлы, если объектов много.
  4. Если целевая база типовая и должна обновляться без лишних сложностей — реализуйте весь функционал через механизм расширений конфигурации.
  5. После обновления конфигурации базы данных обязательно выполните обновление идентификаторов объектов метаданных БСП, чтобы новые объекты стали доступны для настройки прав и интерфейсов пользователей.
← На главную