При импортировании документов из других программ надо проверять на предыдущие загрузки и удалять ранее загруженные документы. Предлагаемая несложная функция позволяет по структуре, определяемой самим разработчиком, отыскать ранее импортированный документ или, если такого нет, создать новый. Функция возвращает объект существующего (для перезаписи) или нового документа.
// ищет или создает новый документ вида Доки по заданному универсальному идентификатору УИД
// Доки - вид документа
// Блок1_8 - 1 группа УИД из 8 цифр (строка или число)
// Блок2_4 - 2 группа УИД из 4 цифр (строка или число)
// Блок3_4 - 3 группа УИД из 4 цифр (строка или число)
// Блок4_4 - 4 группа УИД из 4 цифр (строка или число)
// Блок5_12 - 5 группа УИД (дата)
// возвращает ДокументОбъект
Функция GUID(Доки,Блок1_8=0,Блок2_4=0,Блок3_4=0,Блок4_4=0,Блок5_12='00010101000000') Экспорт
// GUID = "nnnnnnnn-KKKK-LLLL-XXXX-ГГММДДЧЧММСС"
ИД = (Формат(Число(Блок1_8),"ЧЦ=8; ЧН=; ЧВН=1; ЧГ=")+"-"+Формат(Число(Блок2_4),"ЧЦ=4; ЧН=; ЧВН=1; ЧГ=")
+"-"+Формат (Число(Блок3_4),"ЧЦ=4; ЧН=; ЧВН=1; ЧГ=")+"-"+Формат(Число(Блок4_4),"ЧЦ=4; ЧН=; ЧВН=1; ЧГ=")
+"-"+Формат(Блок5_12,"ДФ=""гММддЧЧммсс""")); ИД1 = Новый УникальныйИдентификатор(ИД);
Ссылка = Доки.ПолучитьСсылку(ИД1);
СсылкаОбъект = Ссылка.ПолучитьОбъект();
Если СсылкаОбъект = Неопределено Тогда
СсылкаОбъект = Доки.СоздатьДокумент();
СсылкаОбъект.УстановитьСсылкуНового(Ссылка);
КонецЕсли;
Возврат СсылкаОбъект;
КонецФункции // GUID()
пример вызова:
// GUID = "НомерДок-КодКонтрагента-2549-{0000}-ДатаДок"
// Док - импортируемый документ из другой программы (конфигурации)
Накладная = GUID(Документы.РеализацияТоваровУслуг,Сред(Док.НомерДок,2,8),Док.Контрагент.Код,2549,0,Док.ДатаДок);