Перенос объектов метаданных между базами — это стандартная, но ответственная задача для разработчика 1С. Часто возникает ситуация, когда в одной базе уже реализован сложный функционал (например, специфический документ с разветвленной логикой), и его необходимо внедрить в другую конфигурацию, не создавая всё с нуля. В этой статье мы подробно разберем, как правильно перенести документ, какие инструменты использовать и на что обратить внимание при адаптации кода.
Если обе базы данных (источник и приемник) доступны на одном рабочем столе, самым быстрым способом является прямое копирование объекта. Давайте рассмотрим этот процесс пошагово:
Важный нюанс: при таком способе 1С переносит структуру документа (реквизиты, табличные части, формы) и его модули. Однако типы данных реквизитов могут сброситься, если в новой базе отсутствуют объекты, на которые они ссылались. Например, если в источнике реквизит имел тип СправочникСсылка.Склады, а в приемнике такого справочника нет, тип может стать неопределенным.
Разберем ситуацию, когда базы данных находятся в разных офисах или на разных серверах без общей сети, и открыть их одновременно невозможно. В этом случае мы воспользуемся файлом метаданных. В среде 1С v7.7 это файл 1Cv7.MD, а в 1С v8.x — файл конфигурации *.cf.
Проанализируем алгоритм действий в этом случае:
MD-файл из каталога базы.MD-файл. Теперь у нас есть локальный "клон" конфигурации-источника.Если вы работаете в современной среде 1С 8.3, можно воспользоваться штатным инструментом "Сравнение и объединение". Рассмотрим, как это сделать максимально безопасно:
.cf (Конфигурация -> Сохранить конфигурацию в файл)..cf файл.Этот метод хорош тем, что система сама покажет зависимости. Если документ ссылается на специфическую роль или общий модуль, вы увидите это в дереве сравнения и сможете перенести зависимые объекты вместе с основным документом.
После того как документ физически появился в новой базе, работа только начинается. Выясним, почему документ может не работать сразу. Основная причина — внешние зависимости кода.
Проанализируем, на что именно стоит обратить внимание в модуле документа (Модуль объекта и Модуль формы):
ПроцедурыУправленияЗапасами.РассчитатьОстатки(), а в новой базе общего модуля ПроцедурыУправленияЗапасами не существует, программа выдаст ошибку при попытке проведения.Для выявления проблем обязательно запустим Синтаксический контроль. Нажмите Ctrl + F7 в окне модуля. Система выведет список всех неопознанных объектов и методов. Вам придется либо перенести недостающие объекты, либо переписать код, заменив старые вызовы на аналоги, существующие в новой базе.
Рассмотрим ситуацию: вы перенесли документ, в котором есть реквизит Контрагент. В исходной базе это была ссылка на справочник Контрагенты. Если в новой базе справочник называется иначе (например, Клиенты), 1С потеряет связь.
Чтобы исправить это, выполните следующие действия:
Последний этап, о котором часто забывают: чтобы пользователи смогли увидеть и создать новый документ, необходимо настроить права. Перенос самого объекта метаданных не переносит настройки прав из исходной базы автоматически.
Рассмотрим порядок действий:
Чтение, Добавление, Изменение и Проведение для нового документа.Таким образом, мы выяснили, что перенос документа — это комплексный процесс, включающий не только копирование "оболочки", но и тщательную проверку связей, адаптацию кода и настройку прав доступа. Совместное использование этих методов позволит вам эффективно расширять функционал ваших решений.