В поисках грузоотправителя
Клиент поставил задачу: номер Торг-12 должен быть прописан также в поле <ТранГруз СвТранГруз=»ТН 42 от 30.03.2021″>. И начались поиски решения.
При формировании электронного документа (ЭД) к реализации в XML файле я поля ТранГруз не нашел. Кроме того, не нашел этого поля даже в описании формата.
После обсуждения с клиентом пришли к мысли, что это поле может быть в счет-фактуре. Выгрузил счет-фактуру в XML, но и там не было этого поля.
Я уже начал думать, что это поле должно быть только в ТТН, но все-же погуглил и нашел, где «прячется» это поле:


А СвПер находится в СодФХЖ3 под тегом СВПродПер:

Ну а поле СодФХЖ3 в файле я видел, он находится в Документ:

Далее включаю замер производительности и нажимаю:

При этом формируется электронный документ.
Путем отладки опредляем, что XML заполняется в процедуре СформироватьИнформациюПродавцаXML_2019 модуля ОбменСКонтрагентамиВнутренний.
И наши искомые теги не выгружаются для счет-фактуры:

Поэтому нужно их добавить. Добавляем процедуру СформироватьИнформациюПродавцаXML_2019 в расширение. Копируем процедуру целиком, т.к. вмешаться внутрь нельзя, там нет для этого вызовов. В самый конец, перед проверкой, добавляем вызов наших доработок:
//Осипов — в конце, перед проверкой +++
Если ЭлектронноеВзаимодействиеСлужебный.ЗначениеРеквизитаВДереве(ДеревоДанных, «Функция») = СЧФ() Тогда
СвПродПер = ПолучитьОбъектТипаCML(«Файл.Документ.СвПродПер», ПространствоИменСхемы);
СвПер = ПолучитьОбъектТипаCML(«Файл.Документ.СвПродПер.СвПер», ПространствоИменСхемы);
ТранГруз = ПолучитьОбъектТипаCML(«Файл.Документ.СвПродПер.СвПер.ТранГруз», ПространствоИменСхемы);
ТекНомер = ЭлектронноеВзаимодействиеСлужебный.ЗначениеРеквизитаВДереве(ДеревоДанных, «НомерДокумента»);
ТекДата = ЭлектронноеВзаимодействиеСлужебный.ЗначениеРеквизитаВДереве(ДеревоДанных, «ДатаДокумента»);
СодержаниеНомерДата = «ТН » + ТекНомер + » от » + Формат(ТекДата, «ДФ=dd.MM.yyyy»);
//ОснПер — обязательное поле, приходится заполнять
ОснПер = ПолучитьОбъектТипаCML(«Файл.Документ.СвПродПер.СвПер.ОснПер», ПространствоИменСхемы);
ОснПер.НаимОсн = СодержаниеНомерДата;
СвПер.ОснПер.Добавить(ОснПер);
ЗаполнитьСвойствоXDTO(Документ, «СвПродПер», СвПродПер, Истина, Ошибки);
ЗаполнитьСвойствоXDTO(СвПродПер, «СвПер», СвПер, Истина, Ошибки);
ЗаполнитьСвойствоXDTO(СвПер, «ТранГруз», ТранГруз, Истина, Ошибки);
//СодОпер — обязательное поле, приходится заполнять
ЗаполнитьСвойствоXDTO(СвПер, «СодОпер», «Товары переданы», Истина, Ошибки);
ЗаполнитьСвойствоXDTO(ТранГруз, «СвТранГруз», СодержаниеНомерДата, Истина, Ошибки);
КонецЕсли;
//—
Файл.Проверить();
Для отладки кода, чтобы XML формировался заново, после каждого формирования ЭД нужно удалять его из регистра «Состояния электронных документов»:

Если не открывается форма электронного документа, идем в журнал регистрации и там смотрим причину ошибки:

Наблюдательный читатель заметит, что я разместил СвПер не в СодФХЖ3 а в Документ. Ну это уже пришло на практике, возможно ссылки вели на старый формат.
Также пришлось заполнять обязательные поля, чтобы прорваться через ошибку контроля полей XDTO.
Результат красивый:

Время: 5 часов. Можно было бы и быстрее, но сама постановка задачи была не понятная, да и находить участки в коде 1С проблематично.
