Дублирование объектов
При дублировании простых объектов, как то, простой справочник, или накладная состоящая из шапки и позиции обычно проблем не возникает. Проблемы появляются при дублировании объектов в которых кроме шапки и позиции присутствует еще позиции привязанные к шапке, или позиции привязанные к позициям.
Дополнительные позиции, привязанные к шапке
В этом случае идет связь между позицией и шапкой на основании какого-либо поля, которое при копировании позиции заполняется не правильным значением ключа новой шапки, а неверным значением ключа старой шапки. Выход из ситуации заключается в добавлении имени этого поля в событие GetNotCopyField.
Пример
Объект шапка "Наряд на конно-ручные работы" - "USR$AGROWG_LISTTR"
Объект доп-позиция "Работы по нарядам на работу" - "USR$AGROWG_WORKEMP"
Объекты связаны по полям "USR$AGROWG_LISTTR.DOCUMENTKEY" - USR$AGROWG_WORKEMP.USR$LISTTRLINEKEY"
Для решения проблемы напишем в обработчике GetNotCopyField объекта дополнительной позиции следующий код:
option explicit function TgdcUserDocumentGetNotCopyField(Self) '*** Данный код необходим для вызова кода определенного в gdc-классе.*** '*** При его удаления возможно нарушение правильной работы системы.*** TgdcUserDocumentGetNotCopyField = _ Inherited(Self, "GetNotCopyField", Array(Self)) '*** Конец кода поддержки gdc-класса. *** dim NotCopyFieldStr NotCopyFieldStr = TgdcUserDocumentGetNotCopyField if NotCopyFieldStr = "" then NotCopyFieldStr = "USR$LISTTRLINEKEY" else NotCopyFieldStr = NotCopyFieldStr + _ ",USR$LISTTRLINEKEY" end if TgdcUserDocumentGetNotCopyField = NotCopyFieldStr end function
(Разумеется название функции "TgdcUserDocumentGetNotCopyField" зависит от конкретного типа документа)
Дополнительные позиции, привязанные к позиции
На текущий момент копирование таких позиций в коде платформы не осуществляется.