При активной разработке в среде 1С часто возникает задача переноса определенных доработок (например, нескольких документов, справочников, связанных с ними ролей, интерфейсов и обработок) из одной конфигурации в другую. Ситуация усложняется, если конфигурации со временем сильно разошлись по структуре, хотя изначально разрабатывались на одной основе. В этой статье мы подробно разберем, как решить эту задачу максимально безопасно, сохраняя ссылочную целостность данных и избегая распространенных ошибок.
Использование встроенного механизма сравнения и объединения конфигураций через файл .cf — это наиболее надежный и проверенный временем способ. Он позволяет гибко выбирать переносимые объекты и, что самое главное, сохраняет их внутренние уникальные идентификаторы (GUID).
Рассмотрим этот процесс пошагово:
.dt или сделайте копию на уровне СУБД).source.cf.source.cf.F7 (или выберите Конфигурация — Обновить конфигурацию базы данных) для применения изменений на уровне базы данных.В процессе обсуждения на форумах часто предлагают «быстрый» способ: открыть два конфигуратора рядом и перетащить объекты мышкой или скопировать их через буфер обмена (клавишами Ctrl+C и Ctrl+V). Выясним, почему этот метод таит в себе скрытую угрозу.
Изменение внутренних идентификаторов (GUID):
При обычном копировании или перетаскивании объектов платформа 1С воспринимает их как абсолютно новые элементы. Она автоматически генерирует для них новые уникальные идентификаторы (GUID) в целевой базе. К чему это приводит на практике?
Именно поэтому для переноса объектов метаданных между базами, которые должны обмениваться информацией, следует использовать только штатный механизм Сравнения и объединения, так как он гарантирует перенос оригинальных GUID.
Если целевая конфигурация находится на поддержке (типовая конфигурация без изменений), внедрение новых объектов непосредственно в основную конфигурацию заставит вас снять ее с замка. Это усложнит последующие обновления. В этом случае лучшим решением будет использование механизма расширений.
Проанализируем этот подход подробнее:
НовыйФункционал).Контрагенты или Номенклатура), просто добавьте эти типы данных в расширение методом «Заимствовать».Такой подход позволяет сохранить основную конфигурацию полностью типовой, что гарантирует простоту её дальнейшего обновления стандартными файлами обновлений (.cfu).
Когда конфигурации сильно различаются, ручное удаление сотен лишних галочек в окне сравнения и объединения может занять слишком много времени. В таких ситуациях профессиональные разработчики используют механизм выгрузки конфигурации в файлы XML.
Разберем этот метод по шагам:
Documents, Catalogs, DataProcessors).Этот способ позволяет добиться стопроцентной точности переноса метаданных и их GUID. Он незаменим при групповой разработке с использованием систем контроля версий (Git) и среды разработки 1C:Enterprise Development Tools (EDT).
При переносе объектов очень важно обращать внимание на их реквизиты и типы данных. Если переносимый документ содержит реквизит, ссылающийся на объект, которого нет в целевой базе, вы столкнетесь с проблемой.
Например, документ содержит реквизит ДоговорЭкспедирования с типом ссылки на специфический справочник ДоговорыЭкспедирования, существующий только в старой базе. Если вы попытаетесь перенести только документ:
ЛюбаяСсылка или просто очистится.Правило успешного переноса: Перед переносом основных объектов всегда сначала проанализируйте их зависимости. Перенесите сначала базовые типы данных (перечисления, дополнительные справочники, планы видов характеристик), на которые ссылаются реквизиты ваших документов и справочников, и только после этого переносите сами документы.
Большинство современных конфигураций 1С (ERP, КА, УТ, БП, ЗУП) построены на базе БСП. Если ваша целевая конфигурация использует БСП, простого переноса метаданных в конфигураторе недостаточно.
После добавления новых справочников и документов пользователи не смогут увидеть их в интерфейсе или настроить для них права доступа в профилях групп доступа, так как БСП ничего не знает о новых объектах. Чтобы исправить это, необходимо обновить справочник Идентификаторы объектов метаданных.
Для этого после успешного объединения конфигураций и обновления базы данных запустите сеанс «1С:Предприятие» со специальным параметром командной строки:
ЗапуститьОбновлениеИнформационнойБазы
Или запустите внешнюю обработку (консоль кода) и выполните следующий программный код от имени администратора для принудительного обновления идентификаторов:
ПараметрыОбновления = Новый Структура;
ПараметрыОбновления.Вставить("ЗапуститьОбновлениеИнформационнойБазы", Истина);
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);
Этот шаг зарегистрирует ваши новые 4 документа и 4 справочника в служебных таблицах БСП. После этого вы сможете без проблем настроить роли, права и видимость этих объектов в пользовательском режиме.
Подведем итоги. Чтобы перенос прошел быстро и безболезненно, следуйте нашему краткому чеклисту:
.dt)..cf) для сохранения GUID объектов, либо выгрузку в XML-файлы, если объектов много.