Как очистить или отредактировать строку 10 в УПД при отправке через модуль Диадок

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

При работе с электронным документооборотом (ЭДО) через модуль Диадок часто возникает ситуация, когда печатная форма универсального передаточного документа (УПД) заполняется не совсем так, как ожидает пользователь или контрагент. Одной из самых частых проблем является заполнение строки 10 («Товар передал / услуги, результаты работ, права передал»). По умолчанию система подставляет туда данные текущего пользователя или подписанта, но иногда требуется оставить эту строку пустой или изменить статус лица. Разберем детально, как это реализовать.

Понимание структуры XML и печатной формы

Для начала проанализируем, откуда берутся данные. Печатная форма УПД генерируется на стороне серверов Диадока на основе переданного из 1С XML-файла. За строку 10 отвечает блок СвЛицПер (Сведения о лице, передавшем товар). В этом блоке ключевыми тегами являются Должн (Должность) и ФИО.

Важно помнить: согласно приказу ФНС №820, если документ имеет функцию СЧФДОП или ДОП, блок передачи данных является важной частью факта хозяйственной жизни. Если мы хотим, чтобы в печатной форме было пусто, нам нужно либо не заполнять эти теги в XML, либо изменить настройки прав подписанта.

Решение 1: Настройка полномочий подписанта в модуле

Самый правильный и «безопасный» способ — проверить настройки в самом модуле Диадок. Рассмотрим этот процесс. Часто дублирование ФИО в строку 10 происходит из-за выбранного статуса «1» (Лицо, ответственное за подписание и за оформление факта хозяйственной жизни). В этом случае система считает, что подписант и есть тот человек, который передал товар.

Чтобы изменить это поведение, выполним следующие шаги:

  1. Откроем настройки подписи в модуле Диадок.
  2. Найдем раздел «Область полномочий» (тег ОблПолн в XML).
  3. Попробуем изменить статус на «3» (Работник иной организации) или «4» (Уполномоченное лицо).
  4. Если пользователь «не является сотрудником организации», как в нашей ситуации, необходимо проверить, заполнены ли данные о доверенности.

Решение 2: Настройка веб-интерфейса Диадока

Иногда настройки в 1С игнорируются, если в веб-интерфейсе Диадока у сотрудника жестко заданы параметры. Выясним причину через личный кабинет:

  1. Зайдем в веб-версию Диадока под учетной записью отправителя.
  2. Перейдем в настройки сотрудника.
  3. Проверим наличие галочки «Заполнять должность в документах». Если она стоит, сервер Диадока может принудительно вставлять должность в XML при формировании, даже если 1С отправляет пустые значения.
  4. Убедимся, что в веб-интерфейсе должность очищена, если мы хотим добиться пустого поля в строке 10.

Решение 3: Программное изменение XML через XDTO

Если настройки интерфейса не помогают, перейдем к программным методам. Основная логика формирования XML-файла в модулях Диадока обычно сосредоточена в обработке ГенерацияXML.epf. Нам нужно найти место, где заполняется объект XDTO, отвечающий за сведения о передаче.

Проанализируем процедуру установки значений. Для того чтобы очистить должность, мы можем попробовать передать пустую строку в соответствующее свойство объекта. Рассмотрим пример кода, который можно внедрить в процедуру заполнения данных о продавце/передающем лице:


// Находим фрагмент кода, где заполняется структура СведенияОПередаче
// Обычно это работа с типом "РаботникОрганизацииПродавца"

Если НужнаПустаяСтрока10 Тогда
    УстановитьЗначениеXDTO(ОбъектXDTO, "Должность", "");
    // Если нужно очистить и ФИО, обращаемся к соответствующему вложенному объекту
    СведенияОПередаче = ОбъектXDTO.СведенияОПередаче;
    Если СведенияОПередаче <> Неопределено Тогда
        СведенияОПередаче.ФИО = Неопределено; // Или пустой объект типа ФИОТип
    КонецЕсли;
КонецЕсли;

Однако будьте осторожны: прямая правка ГенерацияXML.epf не рекомендуется, так как при обновлении модуля Диадок все ваши изменения будут затерты. Рассмотрим более современный подход.

Решение 4: Использование механизма внешней логики (События)

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

  1. Создадим файл внешней логики (обычно это расширение или внешняя обработка с определенными процедурами).
  2. Найдем событие ПередЗаписьюВXML или ПослеФормированияСтруктурыXDTO.
  3. В этом событии мы можем напрямую обратиться к сформированной структуре и принудительно очистить поля.

Пример обращения к структуре в событии:


Процедура ПослеФормированияXDTOУПД(ДанныеУПД, ОбъектXDTO) Экспорт
    // Обращаемся к блоку СвЛицПер (Сведения о лице, передавшем товар)
    // В формате 820 приказа это может находиться в разных узлах в зависимости от функции
    Попытка
        ОбъектXDTO.Документ.ТаблСчФакт.СведенияОПередаче.Должность = "";
    Исключение
        // Обработка случая, если структура отличается
    КонецПопытки;
КонецПроцедуры

Решение 5: Проверка данных в первичном документе 1С

Перед тем как приступать к программированию, проанализируем саму информационную базу. Модуль Диадок часто берет данные для строки 10 из реквизитов документа Реализация товаров и услуг.

  1. Откройте документ реализации в 1С.
  2. Перейдите на вкладку «Дополнительно».
  3. Посмотрите на поля «Отпуск произвел» и «Ответственный».
  4. Если эти поля заполнены, модуль автоматически подставит их в XML. Попробуйте очистить поле «Отпуск произвел» и заново сформировать электронный документ. Часто это решает проблему без написания кода.

Важное замечание о валидации

При попытке очистить строку 10 программным способом можно столкнуться с ошибкой валидации XML. Формат ФНС требует, чтобы определенные поля были заполнены, если присутствует сам блок. Если вы очищаете Должность, убедитесь, что это допустимо для выбранного вами статуса подписанта. В некоторых случаях правильнее не передавать весь блок СвЛицПер, тогда система может использовать данные из сертификата подписи, что визуально изменит печатную форму. Для контроля корректности структуры можно использовать обработку для валидации XML-файлов по XSD-схеме.

Подведем итог: для решения задачи сначала проверьте настройки полномочий в модуле и данные во вкладке «Дополнительно» документа 1С. Если это не помогает, используйте механизм внешней логики для очистки соответствующих свойств объекта XDTO, стараясь не изменять типовые обработки модуля напрямую.

← На главную