Для продвинутых пользователей: Кастомизация данных в УПД в Доки | Помощь Астрал
Техподдержка:
Отдел продаж
График работы

Доки: Кастомизация данных в УПД

Автор Чижова Юлия

Автор: Чижова Юлия

31.10.2025
54
Из статьи вы узнаете:

Кастомизация логики формирования XML при экспорте учетных документов

Зачем это нужно?

Кастомизация экспорта данных позволяет адаптировать набор информации, который будет использован Доки для формирования электронного УПД под требования конкретного заказчика или внешней системы. Такой вид кастомизации доступен в расширении Доки для 1С начиная с версии 1.0.113.1.

Типовые сценарии применения:

  • изменение отдельных реквизитов (например, наименования товаров, адресов, кодов и т. д.);
  • добавление собственных тегов, необходимых для интеграции с другими сервисами;
  • замена значений по нестандартным алгоритмам (например, использовать «краткое название» вместо наименования для печати).

Это особенно полезно, если компания ведет собственную систему обмена документами с партнерами или использует внутренние правила именования товаров и услуг.

В Доки есть простой и удобный способ заполнения доп. полей в УПД: Настройка дополнительных полей в 1С. Модуль кастомизации разрабатывается и используется, если встроенного функционала недостаточно.

Как это использовать?

1. С помощью Конфигуратора создайте новое расширение в информационной базе или скачайте готовый каркас.

2. В новом расширении создайте общий модуль с именем: ДокиКастом_Экспорт.

В этом модуле опишите экспортную процедуру:

ИзменитьЗаполненныйXML(ОбъектУчета, ОбъектДокумента)

Параметры процедуры:

  • ОбъектУчета – ссылка на учетный документ (например, "Реализация товаров и услуг");
  • ОбъектДокумента – объект XDTO, содержащий XML-структуру УПД:

Подробнее ознакомиться с форматом УПД 970@ (структурой документа) можно в приказе ФНС.

3. Внутри процедуры выполните действия:

  • получите данные из исходного документа (например, табличную часть с товарами);
  • найдите нужные значения (например, краткие наименования);
  • замените соответствующие теги в объекте ОбъектДокумента.

4. При создании XML-файла основное расширение Доки автоматически:

  • проверит наличие общего модуля ДокиКастом_Экспорт;
  • вызовет процедуру ИзменитьЗаполненныйXML, передав ей нужные параметры.
Кастомизация выполняется без изменения кода основного расширения и полностью совместима с его обновлениями.

Требования к модулю

  • Общий модуль должен иметь серверный контекст и быть экспортным.
  • Имя модуля строго фиксировано: ДокиКастом_Экспорт.
  • Процедура ИзменитьЗаполненныйXML должна быть экспортной.
  • При ошибках внутри процедуры основной процесс формирования XML не прерывается, но сообщение об ошибке фиксируется в журнале.

Примеры реализации

Замена наименований в табличной части

Пример процедуры, которая подставляет в XML вместо наименования товара значение из реквизита "Содержание", добавленного в типовую конфигурацию 1С:Бухгалтерия предприятия отдельным расширением:

Процедура ИзменитьЗаполненныйXML(ОбъектУчета, ОбъектДокумента) Экспорт

    Если Не ЗначениеЗаполнено(ОбъектУчета) Тогда
        Возврат;
    КонецЕсли;


    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |   Товары.Номенклатура.НаименованиеПолное КАК Наименование,
        |   Товары.Содержание КАК Содержание
        |ИЗ
        |   Документ.РеализацияТоваровУслуг.Товары КАК Товары
        |ГДЕ
        |   Товары.Ссылка = &ОбъектУчета";
    Запрос.УстановитьПараметр("ОбъектУчета", ОбъектУчета);
    КэшТоваров = Запрос.Выполнить().Выгрузить();


    ПараметрыПоиска = Новый Структура("Наименование");
    ТабличнаяЧасть = ОбъектДокумента.Документ.ТаблСчФакт.СведТов;


    Для Каждого СтрокаТЧ Из ТабличнаяЧасть Цикл


        ПараметрыПоиска.Наименование = СтрокаТЧ.НаимТов;
        РезультатПоиска = КэшТоваров.НайтиСтроки(ПараметрыПоиска);
        Если РезультатПоиска.Количество() > 0
            И ЗначениеЗаполнено(РезультатПоиска[0].Содержание) Тогда
            СтрокаТЧ.НаимТов = РезультатПоиска[0].Содержание;
        КонецЕсли;


    КонецЦикла;

КонецПроцедуры

Удаление банковских реквизитов участников сделки

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

Процедура ИзменитьЗаполненныйXML(ОбъектУчета, ОбъектДокумента) Экспорт


        СвСчФакт = ОбъектДокумента.Документ.СвСчФакт;
        ОчиститьБанковскиеРеквизиты(СвСчФакт.ГрузОт);
        ОчиститьБанковскиеРеквизиты(СвСчФакт.ГрузПолуч);
        ОчиститьБанковскиеРеквизиты(СвСчФакт.СвПокуп);
        ОчиститьБанковскиеРеквизиты(СвСчФакт.СвПрод);

КонецПроцедуры


Процедура ОчиститьБанковскиеРеквизиты(СписокУчастников)

Для Каждого ЭлементСписка Из СписокУчастников Цикл
        ЕстьРеквизитыБанка = ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ЭлементСписка, "БанкРекв");

        Если ЕстьРеквизитыБанка И ЭлементСписка.БанкРекв <> Неопределено Тогда
                БанкРекв = НовыйБанкРекв();
                ЭлементСписка.БанкРекв = БанкРекв;
        КонецЕсли;
КонецЦикла;

КонецПроцедуры


Функция НовыйБанкРекв()
        ПространствоИмен = "ON_NSCHFDOPPR_1_997_01_05_03_01";
        ТипОбъекта = ФабрикаXDTO.Тип(ПространствоИмен, "УчастникТип");
        Коллекция = ТипОбъекта.Свойства;
        Свойство = Коллекция.Получить("БанкРекв");
        ТипОбъекта = Свойство.Тип;
        НовыйОбъект = ФабрикаXDTO.Создать(ТипОбъекта);
        Возврат НовыйОбъект;
КонецФункции

Удаление сведений о прослеживаемом товаре

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

Процедура ИзменитьЗаполненныйXML(ОбъектУчета, ОбъектДокумента) Экспорт

        СведТов = ОбъектДокумента.Документ.ТаблСчФакт.СведТов;
        Для Каждого Товар Из СведТов Цикл
                Товар.СвДТ.Очистить();
                Товар.ДопСведТов.СведПрослеж.Очистить();
        КонецЦикла;

КонецПроцедуры

Особенности

●    Процедура выполняется после формирования типового XML, но до его сохранения на диск или отправки на сервер Доки.
●    Любые изменения XDTO-объекта сразу попадают в итоговый файл.
●    Такой подход позволяет реализовать даже сложные сценарии модификации структуры документа – при этом базовое расширение остается неизменным и легко обновляется.

Комментарии для сайта Cackle

Хотите разобраться
в сервисах Астрал?

Подробные инструкции,
решения проблем
и ответы на вопросы
в Базе знаний

Опубликован законопроект о налоговых изменениях: обзор ключевых положений (НДС, УСН, акцизы). Читайте разбор законопроекта
Получите электронную подпись для работы на госпорталах, для участия в торгах и ЭДО
Собрали все самое важное о налоговой реформе — в одном месте
autohello-finger