Номер транспортной накладной в ЭДО

Я уже ранее писал о том, как пришлось дорабатывать ЭДО после глобальных изменений по ЭДО в 1С БП:

Но вот обратился тот же клиент с новой проблемой: в тег ТранГруз не проставлялся номер накладной ТранНакл, а только выводился тег с видом, номером и датой накладной.

Т.е. должно было быть так:

<ТранГруз СвТранГруз=»Номер ХХХХХХХХ от ДД.ММ.20ХХ»> <ТранНакл НомТранНакл= «ХХХХХХХХ» ДатаТранНакл= «ДД.ММ.20ХХ» />  </ТранГруз>

А было так:

<ТранГруз СвТранГруз=»Номер ХХХХХХХХ от ДД.ММ.20ХХ»> </ТранГруз>

Первоначально я хотел разобрать тег СвТранГруз и подставить его в тег ТранНакл, даже начал писать код по разбору:

Однако чуть позже я заметил, что дата в теге СвТранГруз записывается в формате с названием месяца строкой, т.е. например 21 июня 2021. Поэтому от разбора отказался.

В принципе, в дереве данных я нашел поле с ссылкой на счет-фактуру, но не мог понять, какую функцию использовать для того, чтобы номер выделялся без префикса.

Для этого пришлось провести довольно большое расследование, начал я отсюда, как ни странно это модуль «Обмен с контрагентами»:

В конце концов нашел, где и как формируется текст СвТранГруз:

Вы не поверите, но это модуль «Учет НДС». Казалось бы, при чем это к ЭДО? Но такова логика 1С. В общем, используются вот такие коды:

ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(РеквизитыОснования.Номер, Истина, Ложь);
Формат(ДанныеШапки.ТранспортнаяНакладнаяДата, «ДЛФ=ДД»)

Однако я обнаружил, что мне надо передавать не номер и дату счет-фактуры, а номер и дату документа-основания, так что пришлось поправить код, получая документ-основание.

В общем, проведя подобный «обратный инжиниринг» я еще раз убедился в том, что модуль ЭДО в 1С написан без всякой логики, ужасный, отвратительный, нелогичный код.

Объем: 1 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *