Диадок сообщает, что с 01 октября 2022 обработку интеграции версии Стандарт не будет дальше обновлять. Нужно переходить на модуль Универсальный.
Если у Вас обработка интеграции Диадок Стандарт была кастомизирована с помощью подключаемого модуля, то первая мысль, что нужно этот подключаемый модуль запихнуть в новую обработку и всё будет работать. Однако, формат подключаемого модуля совершенно другой, вызовы типовых процедур и функций типа
НомерНаПечать = ОсновнойМодуль.ПолучитьМодульПрог("Модуль_Интеграция").ПолучитьНомерНаПечатьДиадок(СсылкаНаДокумент.ДокументОснование.Сделка);
в новом подключаемом модуле не работают.
Несмотря на вот эту документацию: https://developer.kontur.ru/Docs/Diadoc_UM/index.html разобраться в новом подключаемом модуле весьма сложно. Генератор шаблона из самой обработки выдает нерабочее нечто. Примеров модуля с пост-обработкой УПД у меня найти не получилось.
Однако, есть хорошие новости (хотя они не очевидны!). Старый подключаемый модуль всё ещё работает! Работает при условии, что он был загружен в конфигурацию в справочник дополнительных обработок и подключен в настройках подключаемого модуля к старой обработке (версии Стандарт). Его можно изменять, но после изменения нужно переподключить его в старой обработке, или в новой обработке переподключить новый ПМ (можно пустой). В технической информации в новом модуле (см. скриншот) можно увидеть:
Настройки Стандарта:
Подключаемый модуль в справочнике: "Внешние обработки": Диадок ПМ
Режим совместимости форматов 155 и 820: Нет
Диадок ПМ - это и есть старый подключаемый модуль. И он работает.
Кстати, о новом подключаемом модуле.
В чём успел разобраться - выкладываю, надеюсь, кому-то сэкономит время на изучение всей этой новой логики.
Кратко, информация следующая:
Обязательна функция ОбработатьСобытие(ИмяСобытия, Параметры) Экспорт
Функция ОбработатьСобытие(ИмяСобытия, Параметры) Экспорт
Если ИмяСобытия = "ПодготовитьЭлектронныйДокумент" Тогда
// раскомментив это, можно без отладчика посмотреть, какие события в обработке происходят
//Сообщить("ИмяСобытия="+ИмяСобытия+";"+Параметры);
//Сообщить(Параметры.ВидДокументаРазвернутый.ТипКонтента);
//Сообщить(Параметры.Результат.Документ1С);
Если Параметры.ВидДокументаРазвернутый.ТипКонтента = "Utd820SellerContent" Тогда
Заполнить_Utd820SellerContent(Параметры.Результат.Content, Параметры);
КонецЕсли;
КонецЕсли;
КонецФункции
Типы контента для УПД такие:
Utd820SellerContent - данные продавца
Utd820BuyerContent - данные покупателя
AdditionalInfoId - дополнительная информация ("Иные сведения" в подвале УПД)
Table - табличная часть
TransferInfo - Основание передачи (сдачи) / получения (приемки)
и др. (можно посмотреть в документации здесь: https://developer.kontur.ru/Docs/Diadoc_UM/UPD820.html)
До ссылки на документ (счет-фактуру) в 1с можно дотянуться так:
Параметры.Результат.Документ1С
Ну и вот пример переопределения Основания передачи (TransferInfo):
Процедура Заполнить_TransferInfo820(Контент, Параметры)
Контент.TransferBases.Очистить();
Документ1С = Параметры.Результат.Документ1С;
ЗапросСвойстваДоговора = Новый Запрос();
ЗапросСвойстваДоговора.Текст = "ВЫБРАТЬ разрешенные
| ЗначенияСвойствОбъектов.Значение КАК Значение
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Объект = &Объект
| И ЗначенияСвойствОбъектов.Свойство = &Свойство";
ЗапросСвойстваДоговора.УстановитьПараметр("Объект",Документ1С.ДоговорКонтрагента);
ЗапросСвойстваДоговора.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("ДИАДОКДоговорВОсновании"));
ВыборкаСвойства = ЗапросСвойстваДоговора.Выполнить().Выбрать();
Если ВыборкаСвойства.Следующий() Тогда
Если ВыборкаСвойства.Значение = Истина Тогда
НовЭлемент = НовыйЭлементСпискаXDTO(Контент.TransferBases);
Заполнить_TransferBase820(НовЭлемент, "Договор", Документ1С.ДоговорКонтрагента.Номер, Документ1С.ДоговорКонтрагента.Дата, "")
КонецЕсли;
КонецЕсли;
НовЭлемент = НовыйЭлементСпискаXDTO(Контент.TransferBases);
НомерСчетаНаПечать = ОбщегоНазначения.ПолучитьНомерНаПечать(Документ1С.ДокументОснование.Сделка);
Заполнить_TransferBase820(НовЭлемент, "Счет", НомерСчетаНаПечать, Документ1С.ДокументОснование.Сделка.Дата, "");
КонецПроцедуры
Процедура Заполнить_TransferBase820(Контент, DocumentName, DocumentNumber, DocumentDate, DocumentInfo, BaseDocumentId="")
УстановитьЗначениеXDTO(Контент, "DocumentName", DocumentName);
УстановитьЗначениеXDTO(Контент, "DocumentNumber", DocumentNumber);
УстановитьЗначениеXDTO(Контент, "DocumentDate", DocumentDate);
УстановитьЗначениеXDTO(Контент, "DocumentInfo", DocumentInfo);
УстановитьЗначениеXDTO(Контент, "BaseDocumentId", BaseDocumentId);
КонецПроцедуры
Данный код заполняет поле основания передачи данными договора, если установлено специальное свойство договора в 1с, и данные счета (заказа покупателя), всегда.
Кто хочет, может скачать готовую обработку с этим подключаемым модулем. За некоторые части кода не ругайте - писалось по принципу "лишь бы как-то работало".
Да, забыл сказать. Всё это веселье тестировалось на конфигурации УПП 1.3.183.2.
Буду рад в комментариях замечаниям, корректировкам, новой информации. Буду добавлять её в публикацию.