При работе с электронным документооборотом (ЭДО) в конфигурациях «1С:Управление торговлей 11», «1С:ERP» или «1С:Комплексная автоматизация» пользователи часто сталкиваются с неприятным визуальным дефектом. В сформированном электронном документе УПД в поле «Основание передачи (сдачи) / получения (приемки)» данные договора могут выглядеть следующим образом: Договор №5 от 13.10.2023 №5 от 13.10.2023. При этом в обычной печатной форме документа всё отображается корректно. Проанализируем, почему возникает этот «чудовищный катаклизм», и разберем по шагам, как привести документы в порядок.
Для начала разберем внутреннюю логику работы программы. Проблема кроется не в ошибке самого договора, а в том, как БЭД (Библиотека электронных документов) интерпретирует данные при формировании XML-файла. Рассмотрим алгоритм, по которому система формирует текст для тега ОснПер (Основание передачи):
Договор, а именно к разделу «Реквизиты печати».Наименование.Номер и Дата в этом же разделе.Таким образом, если в поле Наименование вы уже написали полный текст Договор №5 от 13.10.2023, а ниже в соответствующих полях указали номер 5 и дату 13.10.2023, система произведет сложение этих строк. В результате мы получаем дублирование. В печатных формах (PDF/MXL) программа чаще всего использует только поле «Наименование для печати», поэтому там ошибка не видна, в то время как в ЭДО выгружается «склеенная» строка.
Рассмотрим самый быстрый способ исправления ситуации без привлечения программиста. Нам необходимо изменить подход к заполнению карточки договора. Проанализируем текущие настройки в вашем документе реализации:
Наименование. Если там написано Договор №5 от 13.10.2023, удалите номер и дату, оставив только слово Договор.Номер и Дата указаны верные значения (например, 5 и 13.10.2023 соответственно).Теперь при формировании электронного документа система возьмет слово Договор, добавит к нему номер из отдельного поля и дату. На выходе получится корректная строка без повторов. Важно помнить, что эти изменения отразятся и в обычных печатных формах, поэтому такой метод является наиболее универсальным и «чистым» с точки зрения данных.
В некоторых случаях (особенно если договоров очень много) пользователи предпочитают обратный подход. Если вы хотите, чтобы в Наименование всегда попадала готовая, красиво оформленная строка, вы можете очистить поля Номер и Дата в блоке «Реквизиты печати».
Однако здесь есть важный нюанс: современные форматы ЭДО (например, версия 5.01) требуют четкого выделения номера и даты документа-основания в отдельные атрибуты XML. Если вы оставите эти поля пустыми, система может выдать предупреждение о некорректном оформлении данных или сформировать XML, где номер основания будет отсутствовать в структурированном виде, что может затруднить автоматическую обработку документа на стороне контрагента.
Выясним причину, почему в одних документах задвоение есть, а в других нет, при идентичных настройках. Посмотрим на процесс создания документов:
Заказа клиента, система подтягивает данные договора «как есть». Если в шаблоне договора изначально была заложена избыточная информация, она попадет в ЭДО.Если в вашей организации тысячи договоров и править их вручную невозможно, рассмотрим вариант исправления через расширение конфигурации. Нам необходимо вмешаться в процесс формирования текстового представления основания. Проанализируем общий модуль, отвечающий за заполнение данных ЭДО.
Обычно логика сборки находится в процедурах заполнения коллекций для выгрузки. Мы можем добавить проверку: если строка номера уже содержится в строке наименования, то не нужно добавлять её повторно. Рассмотрим примерный алгоритм кода для расширения:
&После("ЗаполнитьРеквизитыОснования")
Процедура Ист_ЗаполнитьРеквизитыОснования(Параметры, ДанныеОснования)
// Проверяем, не содержится ли уже номер в наименовании
Если ЗначениеЗаполнено(ДанныеОснования.Номер) И Найти(ДанныеОснования.Наименование, ДанныеОснования.Номер) > 0 Тогда
// Если номер уже есть в тексте, можно очистить временную переменную номера
// чтобы БЭД не добавляла его повторно при склейке
ДанныеОснования.Номер = "";
ДанныеОснования.Дата = '00010101';
КонецЕсли;
КонецПроцедуры
Такой подход позволит системе динамически определять избыточность данных прямо в момент формирования XML-файла, не затрагивая при этом данные в информационной базе. При необходимости можно воспользоваться готовым расширением для корректировки поля основания передачи в УПД при отправке по ЭДО.
Чтобы избежать подобных проблем в будущем, рекомендуем выполнить следующие действия:
Обслуживание — Обновление программы — Установленные исправления поищите патчи, в описании которых упоминается «ЭДО» и «Задвоение номера». Часто разработчики выпускают оперативные исправления для таких массовых ошибок.Реквизитов печати. Лучшая практика: поле Наименование — это только тип документа (Договор, Соглашение, Контракт), а идентификаторы (№ и дата) — только в своих полях.Использование структурированного подхода к заполнению данных не только решит проблему с визуальным отображением в ЭДО, но и обеспечит корректную выгрузку документов для налоговой отчетности, где чистота реквизитов первичных документов играет ключевую роль.