Как написать простую доработку Контур.Диадок через подключаемый модуль
Нужно было доработать клиенту формирование XML документа «Реализация товаров».
Получил от клиента копию базы и обработку Diadoc_4_38_2.epf
При открытии обработки без авторизации документы не показываются:

Я хотел сначала разобраться почему, но код оказался слишком сложным.
Поэтому я авторизовался по данным клиента (логин/пароль), после этого уже видел документы:

При щелчке на пакете документов он открывается:

По кнопке скачивания можно скачать XML.
Задача была такая: написать подключаемый модуль ( внешнюю обработку), которая при формировании отправляемого УПД подставляет к наименованию номенклатуры, если это услуга, фразу вида » за февраль 2024 г.».
Решил воспользоваться генератором подключаемых модулей, описанным на Ифостарте и в Контуре.
Включил использование плагинов в системных настройках (уже стояло):

Установил «Генератор подключаемого модуля» в настройках плагинов:

Далее сгенерировал обработку по этому шаблону (для УТ11):

В описании сценарии мне показалось, что она мне подходит:
Задача:
При отправке УПД необходимо изменять данные таблицы товаров:
1) в ItemVendorCode — заполнять штрих-код товара с точностью до характеристики;
2) в Product — добавлять описание из связанной карточки номенклатуры в скобках после стандартного наименования;
3) в ItemArticle — заполнять артикул из связанной карточки номенклатуры;
4) в ItemIdentificationNumbers.PackageIds — добавлять код ОСУ (GTIN может быть получен из РС «Штрих-коды» или доп. сведений номенклатуры).Конфигурация: УТ 11.4, КА 2.4, ЕРП 2.4.
Открыл обработку в конфигураторе:

Код модуля довольно понятен. Сделал необходимые доработки.
Но потом возник вопрос — а как подключить мой файл?
Оказывается, модуль может быть только один, не много плагинов, а только один модуль, поэтому я переименовал модуль в ПМ и подключил его в «Расширенные настройки — подключаемый модуль»:

Как ни странно, но при попытке открыть заново пакет документов у меня возникла ошибка в моем коде, значит подключаемый модуль сразу заработал:

Правда, в отладчике обработка ПМ не всегда перехватывается. Советы по отладке есть тут, но я их не читал. Хотя некоторые модули доступны в отладчике, например этот:

После каждого обновления обработки приходится заново заходить в настройки подключаемого модуля и нажимать кнопку «Сохранить», чтобы подключаемый модуль заново закэшировался.
После процесса разработки увидел результат в печатной форме УПД:

И в файле XML:

В итоге я сделал следующие доработки (по процедурам):
Процедура УПД_ИзменитьДанныеТоваров(Content, Документ1С) Items = Content.Table.Items; Товары1С = ДанныеТоваров1С(Items); МенеджерВТ = Новый МенеджерВременныхТаблиц; СформироватьВременнуюТаблицуТоваров(МенеджерВТ, Товары1С); Выборка = ИзменениеТаблицыТоваров_ВыборкаДанные1С(Items, МенеджерВТ, Документ1С); // если используется совместно со сценарием "Изменение таблицы товаров, ИнфПолФХЖ2", // то необходимо раскомментировать следующую строку //ЗначенияСвойств = ИзменениеТаблицыТоваров_ЗначенияСвойствТоваров(МенеджерВТ, Документ1С); МенеджерВТ.Закрыть(); Пока Выборка.Следующий() Цикл ИндексСтроки = Выборка.ИндексСтроки; Item = Items[ИндексСтроки]; УПД_ИзменитьОсновныеДанныеТовара(Item, Выборка, Документ1С); //Осипов КонецЦикла; КонецПроцедуры Функция ТекстЗапроса_ДанныеТоваров() Возврат "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Товары.ИндексСтроки КАК ИндексСтроки, | // ПОЛЯ_ШТРИХКОДЫ | ЕСТЬNULL(Штрихкоды.Штрихкод, """") КАК Штрихкод, | // ПОЛЯ_ЗНАЧЕНИЯСВОЙСТВАGTIN | ЕСТЬNULL(ЗначенияСвойстваGTIN.GTIN, """") КАК GTIN, | // ПОЛЯ_НОМЕНКЛАТУРА //| СпрНоменклатура.GTIN КАК GTIN, | СпрНоменклатура.Описание КАК Комментарий, | СпрНоменклатура.Артикул КАК Артикул, | СпрНоменклатура.Ссылка.ТипНоменклатуры КАК ТипНоменклатуры, //Осипов | СпрНоменклатура.Наименование КАК Наименование, //Осипов | СпрНоменклатура.Ссылка КАК Номенклатура //Осипов |ИЗ | ВТ_Товары КАК Товары | // СОЕДИНЕНИЕ_ШТРИХКОДЫ | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Штрихкоды КАК Штрихкоды | ПО Товары.ИндексСтроки = Штрихкоды.ИндексСтроки | // СОЕДИНЕНИЕ_ЗНАЧЕНИЯСВОЙСТВАGTIN | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗначенияСвойстваGTIN КАК ЗначенияСвойстваGTIN | ПО Товары.ИндексСтроки = ЗначенияСвойстваGTIN.ИндексСтроки | // СОЕДИНЕНИЕ_НОМЕНКЛАТУРА | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура | ПО Товары.Номенклатура = СпрНоменклатура.Ссылка"; КонецФункции Процедура УПД_ИзменитьОсновныеДанныеТовара(Item, Выборка, Документ1С) //Осипов //Осипов //Сообщить("Номенклатура: " + Выборка.Номенклатура); Если ЗначениеЗаполнено(Выборка.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга) Тогда НовоеНаименование = Item.Product + " за " + Формат(Документ1С.Дата,"ДФ='MMMM yyyy ''г.'''"); УстановитьЗначениеXDTO(Item, "Product", НовоеНаименование); КонецЕсли; КонецПроцедуры
Среда: КА 2.5.12.208. Объем: 1.5 час

О, поздравляю с приобщением к поделкам «Контура». Капец они тугие на доработки — даже за деньги.
Поэтому направление норм.
Спасибо. Открыл для себя новую тему.
Спасибо! Наконец въехал. Зарабатываю на 1С больше 20 лет. Теперь еще немного масла на бутерброде будет)))
Как видите, многие пути довольно простые, если знать, как идти.
Спасибо!
Важное замечание — генератор ПМ есть так же на той странице, где он подключается (т.е. не через плагины). И вот там-то он дает какие-то непонятные куски кода, а не готовый к работе шаблон.
Мне еще предстоит переписать кучу процедур, которые делал старый подключаемый модуль, который перестал работать для новой УПД — это мрак просто. Например, там у меня был переопределен запрос к табличной части на этапе получения данных. А здесь, кажется, что и нету такого.
удачи!
Проще добавить в конфигурацию обработку с этими процедурами и указать в настройках, что модули лежат в этой обработке. Тогда можно нормально отлаживать и каждый раз не кэшировать
тоже вариант.
Пытаюсь сделать иксемель 5.03 для Контур.Диадок.
Упорно требует ИнфПолФХЖ2 — что именно ему надо ДЛЯ КОНТУР.ДИАДОК?
впихнул болвагку типа Идентиф =»штрихкод» Значен=»1234567890123″ — проглатывает, но валидатор на сайте контруа все равно хочет еще ИнфПолФХЖ2
?
не знаю, попробуйте из бухгалтерии выгрузить файл 5.03
или напишите в поддержку
https://www.diadoc.ru/docs/forms/upd хм… вроде бы этот образце соответствует вашему описанию.
кстати, это поле не обязательно. Мне кажется, оно у меня для некоторых клиентов кастомно заполняется.
А покажите, как болванку впихнули?
да это уже 100500 лет назад было, давно забыто.
https://ibb.co/4ymWvNY — вот так у меня заполняется
Я уже съел полсобаки на допиливании подключаемого модуля. Решил, что будет полезно обсуждать эти темы в тематическом чате.
https://t.me/kontur_1c_unoffic — создал телеграмм чат по доработке подключаемого модуля.
хорошее дело.