При доработке типовых конфигураций на платформе 1С:Предприятие 7.7 часто возникает необходимость создать новый документ на базе уже существующего (например, взять за основу документ ПеремещениеТоваров, скопировать его реквизиты, печатные формы и табличную часть, но изменить назначение и алгоритм проведения). Однако при некорректном выполнении операции копирования разработчики сталкиваются с ситуацией, когда при сохранении структуры метаданных ранее созданные в базе документы оригинального вида начинают переноситься в другой журнал или менять свои реквизиты. Разберем, почему это происходит и как правильно создать независимый документ-дубликат.
Проанализируем механику работы дерева метаданных в Конфигураторе 1С 7.7. Когда мы нажимаем комбинацию клавиш Ctrl+C на объекте, буфер обмена операционной системы получает слепок метаданных. Если после этого сразу изменить идентификатор (имя) или свойства журнала у выделенного объекта, не выполнив вставку (Ctrl+V), платформа воспринимает это как редактирование и переименование исходного документа.
В момент сохранения измененной конфигурации запускается реструктуризация таблиц информационной базы. Платформа обращается к общей таблице журнала документов _1SJOURN и перезаписывает ссылки на журнал для всех записей этого вида документа. В результате все ранее введенные пользователями документы визуально «переезжают» в новый журнал, а их поведение меняется.
Чтобы избежать модификации оригинального объекта, выполним стандартную процедуру дублирования по шагам:
Документы, выделим его курсором и нажмем Ctrl+C (или пункт меню «Правка» — «Копировать»).Документы.Ctrl+V (или «Правка» — «Вставить»).Копия_ПеремещениеТоваров).Если конфигурация базы данных содержит большое количество накопленной информации и существует риск случайного повреждения рабочих метаданных, рассмотрим надежный подход с использованием отдельной базы разработки:
.md)..md из тестовой базы, отметим флагом только новый документ и выполним объединение.В типовых конфигурациях 1С 7.7 (включая конфигурацию «Бухгалтерский учет») одного лишь создания объекта метаданных недостаточно для его корректной работы. Проверим и настроим связанные механизмы:
Если Документ.Вид() = "ПеремещениеТоваров" Тогда
// Вызов специализированной процедуры
КонецЕсли;
Последовательности в дереве метаданных и включим новый объект в состав соответствующих последовательностей.Наборы прав, а также выведем команду создания или вызова журнала в ветке Интерфейсы.глПроверка....