При работе с типовыми конфигурациями 1С, такими как Управление торговлей 11.4, пользователи часто сталкиваются с проблемой: при попытке выгрузить электронный документ (УПД) в файл XML для последующей ручной загрузки в личный кабинет Диадок, система выдает ошибку формата. Чаще всего ошибка звучит так: Значение атрибута @ИдФайл имеет неверный формат. Проблема заключается в том, что формат имени файла и внутренних идентификаторов в XML не соответствует требованиям оператора ЭДО — для этого подойдёт обработка исправления формата ИдФайла для Диадок.
В этой статье мы подробно разберем, почему возникает эта ошибка, как устроены идентификаторы в системе ЭДО и как настроить 1С так, чтобы выгрузка документов в XML файл для электронного документооборота происходила корректно без приобретения дорогостоящих дополнительных модулей (удобно через выгрузка УПД в XML с автоподстановкой ID).
Проанализируем структуру ошибки. Сообщение указывает, что ожидается формат, начинающийся с ON_NSCHFDOPPR_, но содержимое после префикса не проходит валидацию. Главная причина кроется в атрибутах @ИдОтпр (Идентификатор отправителя) и @ИдПол (Идентификатор получателя).
Типовая 1С при "простой" выгрузке документа в файл (без настроенного обмена ЭДО) часто подставляет в эти поля комбинацию ИНН_КПП. Однако по стандартам ФНС и правилам операторов ЭДО, в этих полях должен быть указан уникальный Идентификатор участника ЭДО. Это строка из 46 символов (для формата 820), которая обычно начинается с префикса оператора (например, 2BM- для Контура).
Рассмотрим структуру правильного атрибута ИдФайл:
ПРЕФИКС_ИдОтправителя_ИдПолучателя_Дата_УникальныйНомер
Если в блоке идентификатора отправителя или получателя стоит просто ИНН, загрузчик Диадока отклоняет файл, так как не может сопоставить его с конкретным ящиком в системе.
Для того чтобы 1С начала формировать правильные XML-файлы, нам необходимо заставить её "узнать" реальные идентификаторы ЭДО. Мы можем сделать это через типовой функционал 1С, даже если не планируем отправлять документы напрямую через встроенный сервис.
Где взять эти ID? Проанализируем веб-интерфейс Диадока. Зайдем в раздел "Контрагенты", выберем нужную компанию. В технической информации о контрагенте будет указан "Идентификатор участника". Скопируем его (он выглядит примерно так: 2BM-9721093030-202006120131238933686).
После того как эти данные внесены в 1С, при выполнении команды ЭДО -> Выгрузить документ в файл, программа подставит эти значения в XML, и файл будет успешно принят веб-версией Диадока.
Если документов немного (1-2 в день) и вы не хотите вносить изменения в настройки 1С, возможна выгрузка ЭД УПД в XML без лишних телодвижений или можно воспользоваться "быстрым" способом правки уже выгруженного файла. Разберем этот процесс по шагам:
ИдФайл. Заменим в нем части, соответствующие ИНН_КПП, на корректные ID отправителя и получателя.Файл -> Документ -> СвОдинф -> ИдОтпр и ИдПол.Важно помнить, что если вы ошибетесь хотя бы в одном символе, контрольная сумма или логика парсера оператора выдаст ошибку. Поэтому крайне рекомендуем использовать Решение 1 как более надежное.
Как было отмечено в обсуждении на форуме, код официального модуля Диадок является открытым. Это означает, что программист 1С может проанализировать логику формирования XML в этом модуле и перенести её в свою внешнюю обработку выгрузки. Посмотрим на пример того, как программно может определяться префикс файла в зависимости от типа продукции:
// Пример логики определения префикса в зависимости от маркировки
Функция ОпределитьПрефиксФайла(ДанныеДокумента)
Если ДанныеДокумента.СодержитМаркируемуюПродукцию Тогда
Возврат "ON_NSCHFDOPPRMARK";
ИначеЕсли ДанныеДокумента.СодержитПрослеживаемыеТовары Тогда
Возврат "ON_NSCHFDOPPRPROS";
Иначе
Возврат "ON_NSCHFDOPPR";
КонецЕсли;
КонецФункции
Если вы программист, вы можете использовать объект ЭлектронныйДокумент и методы типовой конфигурации для генерации корректной структуры. Обратите внимание на функцию СформироватьДанныеДляВыгрузки() в модулях ЭДО. Проанализируем ситуацию: если мы используем метод ЭДО.ВыгрузитьДокументВФайл(), 1С обращается к настройкам обмена. Если настройки отсутствуют, она откатывается к формату по умолчанию (ИНН_КПП).
Выясним причину, по которой Диадок может требовать разные префиксы. С 2021-2022 годов введены обязательные требования к передаче данных о маркированных и прослеживаемых товарах.
Если в вашей реализации есть хотя бы одна позиция с маркировкой (например, обувь или одежда), префикс ОБЯЗАТЕЛЬНО должен быть ON_NSCHFDOPPRMARK. Если вы продаете мониторы или холодильники (прослеживаемость), префикс будет ON_NSCHFDOPPRPROS.
Типовая выгрузка УТ 11.4 может не "подхватить" нужный префикс, если в карточке номенклатуры неверно указан Вид номенклатуры (Тип номенклатуры должен быть "Товар: Маркируемая продукция"). Проверьте эти настройки, прежде чем выполнять выгрузку.
Рассмотрим экономическую целесообразность. Стоимость модуля для 1С составляет около 13 700 рублей в год — для этого подойдёт модуль ЭДО без выгрузки файлов для 1С. При объеме 1-2 документа в день затраты на ручную выгрузку/загрузку (около 5-10 минут времени сотрудника) могут показаться оправданными. Однако модуль автоматизирует не только выгрузку, но и:
Если вы решили отказаться от модуля, помните, что при ручной загрузке через браузер ответственность за корректность заполнения полномочий подписанта в XML ложится на вас. При выгрузке из 1С убедитесь, что в блоке Подписант заполнены ФИО и должность, иначе документ в Диадоке может оказаться без данных о подписанте, и его придется "дозаполнять" в веб-интерфейсе.
Мы проанализировали проблему неверного формата ИдФайл в УТ 11.4 и нашли способы её решения. Основной путь — это корректная настройка идентификаторов участников ЭДО в справочниках 1С. Это позволит использовать стандартную функцию выгрузки в файл, получая на выходе валидный XML, который Диадок примет без лишних вопросов.