Почему в электронных документах ЭДО двоится номер и дата договора и как это исправить?

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

При работе с электронным документооборотом (ЭДО) в конфигурациях «1С:Управление торговлей 11», «1С:ERP» или «1С:Комплексная автоматизация» пользователи часто сталкиваются с неприятным визуальным дефектом. В сформированном электронном документе УПД в поле «Основание передачи (сдачи) / получения (приемки)» данные договора могут выглядеть следующим образом: Договор №5 от 13.10.2023 №5 от 13.10.2023. При этом в обычной печатной форме документа всё отображается корректно. Проанализируем, почему возникает этот «чудовищный катаклизм», и разберем по шагам, как привести документы в порядок.

Выясняем причину: как 1С собирает строку основания

Для начала разберем внутреннюю логику работы программы. Проблема кроется не в ошибке самого договора, а в том, как БЭД (Библиотека электронных документов) интерпретирует данные при формировании XML-файла. Рассмотрим алгоритм, по которому система формирует текст для тега ОснПер (Основание передачи):

  1. Программа обращается к объекту Договор, а именно к разделу «Реквизиты печати».
  2. Система берет значение из поля Наименование.
  3. Затем она проверяет наличие заполненных полей Номер и Дата в этом же разделе.
  4. Если эти поля заполнены, 1С принудительно добавляет их к строке наименования через пробел, вставляя символы «№» и «от».

Таким образом, если в поле Наименование вы уже написали полный текст Договор №5 от 13.10.2023, а ниже в соответствующих полях указали номер 5 и дату 13.10.2023, система произведет сложение этих строк. В результате мы получаем дублирование. В печатных формах (PDF/MXL) программа чаще всего использует только поле «Наименование для печати», поэтому там ошибка не видна, в то время как в ЭДО выгружается «склеенная» строка.

Способ 1: Корректировка реквизитов печати (ручной метод)

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

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

Теперь при формировании электронного документа система возьмет слово Договор, добавит к нему номер из отдельного поля и дату. На выходе получится корректная строка без повторов. Важно помнить, что эти изменения отразятся и в обычных печатных формах, поэтому такой метод является наиболее универсальным и «чистым» с точки зрения данных.

Способ 2: Очистка полей номера и даты в реквизитах печати

В некоторых случаях (особенно если договоров очень много) пользователи предпочитают обратный подход. Если вы хотите, чтобы в Наименование всегда попадала готовая, красиво оформленная строка, вы можете очистить поля Номер и Дата в блоке «Реквизиты печати».

Однако здесь есть важный нюанс: современные форматы ЭДО (например, версия 5.01) требуют четкого выделения номера и даты документа-основания в отдельные атрибуты XML. Если вы оставите эти поля пустыми, система может выдать предупреждение о некорректном оформлении данных или сформировать XML, где номер основания будет отсутствовать в структурированном виде, что может затруднить автоматическую обработку документа на стороне контрагента.

Почему ошибка проявляется периодически?

Выясним причину, почему в одних документах задвоение есть, а в других нет, при идентичных настройках. Посмотрим на процесс создания документов:

Программное решение (для разработчиков)

Если в вашей организации тысячи договоров и править их вручную невозможно, рассмотрим вариант исправления через расширение конфигурации. Нам необходимо вмешаться в процесс формирования текстового представления основания. Проанализируем общий модуль, отвечающий за заполнение данных ЭДО.

Обычно логика сборки находится в процедурах заполнения коллекций для выгрузки. Мы можем добавить проверку: если строка номера уже содержится в строке наименования, то не нужно добавлять её повторно. Рассмотрим примерный алгоритм кода для расширения:


&После("ЗаполнитьРеквизитыОснования")
Процедура Ист_ЗаполнитьРеквизитыОснования(Параметры, ДанныеОснования)
    // Проверяем, не содержится ли уже номер в наименовании
    Если ЗначениеЗаполнено(ДанныеОснования.Номер) И Найти(ДанныеОснования.Наименование, ДанныеОснования.Номер) > 0 Тогда
        // Если номер уже есть в тексте, можно очистить временную переменную номера
        // чтобы БЭД не добавляла его повторно при склейке
        ДанныеОснования.Номер = "";
        ДанныеОснования.Дата = '00010101';
    КонецЕсли;
КонецПроцедуры

Такой подход позволит системе динамически определять избыточность данных прямо в момент формирования XML-файла, не затрагивая при этом данные в информационной базе. При необходимости можно воспользоваться готовым расширением для корректировки поля основания передачи в УПД при отправке по ЭДО.

Рекомендации по автоматизации и контролю

Чтобы избежать подобных проблем в будущем, рекомендуем выполнить следующие действия:

  1. Проверьте наличие установленных исправлений (патчей) от фирмы «1С». В разделе Обслуживание — Обновление программы — Установленные исправления поищите патчи, в описании которых упоминается «ЭДО» и «Задвоение номера». Часто разработчики выпускают оперативные исправления для таких массовых ошибок.
  2. Проанализируйте настройки «Помощника регистрации договора». Если в вашей компании используется этот механизм, настройте шаблон автоматического формирования наименования так, чтобы он не дублировал номер и дату, если они заполняются в отдельных полях.
  3. Проинструктируйте сотрудников отдела продаж и бухгалтерии о правилах заполнения Реквизитов печати. Лучшая практика: поле Наименование — это только тип документа (Договор, Соглашение, Контракт), а идентификаторы (№ и дата) — только в своих полях.

Использование структурированного подхода к заполнению данных не только решит проблему с визуальным отображением в ЭДО, но и обеспечит корректную выгрузку документов для налоговой отчетности, где чистота реквизитов первичных документов играет ключевую роль.

← На главную