Номер транспортной накладной в ЭДО
Я уже ранее писал о том, как пришлось дорабатывать ЭДО после глобальных изменений по ЭДО в 1С БП:
Но вот обратился тот же клиент с новой проблемой: в тег ТранГруз не проставлялся номер накладной ТранНакл, а только выводился тег с видом, номером и датой накладной.
Т.е. должно было быть так:
<ТранГруз СвТранГруз=»Номер ХХХХХХХХ от ДД.ММ.20ХХ»> <ТранНакл НомТранНакл= «ХХХХХХХХ» ДатаТранНакл= «ДД.ММ.20ХХ» /> </ТранГруз>
А было так:
<ТранГруз СвТранГруз=»Номер ХХХХХХХХ от ДД.ММ.20ХХ»> </ТранГруз>
Первоначально я хотел разобрать тег СвТранГруз и подставить его в тег ТранНакл, даже начал писать код по разбору:
Однако чуть позже я заметил, что дата в теге СвТранГруз записывается в формате с названием месяца строкой, т.е. например 21 июня 2021. Поэтому от разбора отказался.
В принципе, в дереве данных я нашел поле с ссылкой на счет-фактуру, но не мог понять, какую функцию использовать для того, чтобы номер выделялся без префикса.
Для этого пришлось провести довольно большое расследование, начал я отсюда, как ни странно это модуль «Обмен с контрагентами»:
В конце концов нашел, где и как формируется текст СвТранГруз:
Вы не поверите, но это модуль «Учет НДС». Казалось бы, при чем это к ЭДО? Но такова логика 1С. В общем, используются вот такие коды:
ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(РеквизитыОснования.Номер, Истина, Ложь);
Формат(ДанныеШапки.ТранспортнаяНакладнаяДата, «ДЛФ=ДД»)
Однако я обнаружил, что мне надо передавать не номер и дату счет-фактуры, а номер и дату документа-основания, так что пришлось поправить код, получая документ-основание.
В общем, проведя подобный «обратный инжиниринг» я еще раз убедился в том, что модуль ЭДО в 1С написан без всякой логики, ужасный, отвратительный, нелогичный код.
Объем: 1 час.
Свежие комментарии