Как исправить ошибку XDTO при выгрузке "Счета-фактуры выданного (аванс)" из 1С:ERP в 1С:Бухгалтерию?

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

При выгрузке данных из 1С:ERP в 1С:Бухгалтерию пользователи часто сталкиваются с различными ошибками обмена. Одной из таких специфичных проблем является ошибка проверки данных XDTO, которая возникает при попытке передать документ "Счет-фактура выданный (аванс)". Рассмотрим эту проблему подробно и разберем шаги по ее устранению.

Суть проблемы: ошибка XDTO при обмене "Счета-фактуры выданного (аванс)"

Автор темы столкнулся со следующей ошибкой при первом обмене из 1С:ERP 2.5 в 1С:Бухгалтерию 3:


ПКО: Документ_СчетФактураВыданныйАванс_Отправка.
Объект: Документ объект: Счет-фактура выданный (аванс), Счет-фактура выданный (аванс) БПА000000273 от 31.12.2020 23:59:59 (e1cib/data/Документ.СчетФактураВыданныйАванс?ref=949c0cc47a6bd25311eb597ffbbceb6f).
Ошибка проверки данных XDTO:
Структура объекта '/ДокументыОснования/Строка[1]' не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8}Документ.СчетФактураВыданный.ДокументыОснования.Строка Проверка свойства 'ДокументОснование':
    форма: Элемент
    имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8}ДокументОснование    тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8}СоставнойДокументРасчетов Отсутствует обязательное свойство

Эта ошибка указывает на то, что в выгружаемом документе СчетФактураВыданныйАванс или связанных с ним данных отсутствует обязательное свойство ДокументОснование или оно имеет некорректный тип, который не соответствует XDTO-схеме обмена EnterpriseData 1.8. Схема обмена ожидает, что свойство ДокументОснование будет иметь тип СоставнойДокументРасчетов, но по факту это условие не выполняется.

Анализируем причину: "Первичный документ" как камень преткновения

Давайте выясним, почему возникает такая ошибка. Автор темы, в ходе диагностики, сообщил, что типом документа-основания в ERP является "Первичный документ". Это является ключевой подсказкой.

  1. Несоответствие типов: Стандарт обмена EnterpriseData и конфигурация 1С:Бухгалтерия 3.0, скорее всего, ожидают более специфичный тип документа в качестве основания для авансового счета-фактуры. Как правило, таким основанием выступает платежный документ, подтверждающий получение аванса, например, ПоступлениеНаРасчетныйСчет или ПриходныйКассовыйОрдер. Обобщенный тип "Первичный документ" не является достаточно конкретным для системы-приемника и XDTO-схемы, что приводит к ошибке валидации данных.
  2. Ожидаемый тип СоставнойДокументРасчетов: В ошибке явно указано, что ожидается тип СоставнойДокументРасчетов. Этот составной тип обычно включает в себя различные виды платежных и расчетных документов. Если в ERP в поле "Документ-основание" указан именно "Первичный документ", то при конвертации он может не маппиться на один из допустимых типов, составляющих СоставнойДокументРасчетов, или вообще не иметь всех необходимых полей для корректного представления.
  3. "Невидимая" табличная часть ДокументыОснования: Автор отметил, что не видит табличной части ДокументыОснования в интерфейсе документа. Это нормальное поведение. Многие структуры данных, используемые для обмена по стандарту EnterpriseData, являются внутренними и не отображаются напрямую пользователю в форме документа. Они формируются при выгрузке данных в соответствии с правилами обмена и XDTO-схемой. Ошибка ссылается именно на эту внутреннюю структуру.
  4. Упоминание СчетФактураВыданный в ошибке для авансового документа: Тот факт, что в тексте ошибки XDTO упоминается Документ.СчетФактураВыданный.ДокументыОснования.Строка, хотя речь идет о СчетФактураВыданныйАванс, может указывать на несколько аспектов:
    • Наследование схем: Схема для авансового счета-фактуры может наследовать или использовать общие части схемы для обычного счета-фактуры. Соответственно, если проблема в базовой структуре, она проявляется в обоих случаях.
    • Общие правила обработки: Правила обмена могут использовать унифицированный подход к обработке документов, связанных со счетами-фактурами, где базовые требования к документу-основанию одинаковы.

Решение проблемы: пошаговая инструкция

Для устранения ошибки XDTO при выгрузке "Счета-фактуры выданного (аванс)" предлагаем следующий алгоритм действий:

1. Проверка актуальности версий платформы и конфигураций

Мы настоятельно рекомендуем использовать максимально близкие и актуальные версии платформы 1С:Предприятия и конфигураций 1С:ERP и 1С:Бухгалтерия. Несоответствие версий часто является источником проблем при обмене данными, так как схемы XDTO и правила конвертации постоянно дорабатываются. Убедитесь, что обе базы обновлены до последних стабильных релизов, совместимых друг с другом. Автор темы указал версии 2.5.6.98 для ERP и 3.0.87.28 для БУХ, что само по себе не является критичным разбросом, но всегда стоит проверить наличие более свежих патчей и обновлений.

2. Корректировка документа-основания в "Счете-фактуре выданном (аванс)"

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

  1. Определяем проблемный документ: Из текста ошибки мы видим ссылку на конкретный документ: Счет-фактура выданный (аванс) БПА000000273 от 31.12.2020 23:59:59. Откройте этот документ в базе 1С:ERP.
  2. Находим документ-основание: В форме документа "Счет-фактура выданный (аванс)" найдите поле "Документ-основание" или "Платежный документ", на основании которого был выписан авансовый счет-фактура. Как правило, это может быть поле "Документ расчетов с контрагентом" или аналогичное.
  3. Проверяем тип документа-основания: Если там указан обобщенный "Первичный документ" или другой неконкретный тип, который не является платежным документом (например, "Поступление на расчетный счет", "Приходный кассовый ордер", "Платежное поручение входящее"), это, скорее всего, и есть причина ошибки.
  4. Корректируем документ-основание:
    • В большинстве случаев необходимо перевыбрать или пересоздать документ-основание, указав конкретный платежный документ, на основании которого был получен аванс.
    • Убедитесь, что сам платежный документ (например, "Поступление на расчетный счет") корректно заполнен, особенно его номер и дата. Эти реквизиты являются обязательными для передачи в бухгалтерию для целей НДС.
    • После изменения документа-основания, перепроведите "Счет-фактуру выданный (аванс)". Это обновит внутренние данные документа и его связи.

3. Использование механизма "Состав отправляемых данных"

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

  1. Откройте документ: В базе 1С:ERP откройте проблемный "Счет-фактура выданный (аванс)".
  2. Найдите кнопку "Состав отправляемых данных": Эта кнопка обычно расположена в подменю "Еще" или "Сервис" в форме документа или доступна через функционал обмена данными.
  3. Анализируем состав данных: Откроется окно, где мы увидим структуру данных, которые будут выгружены. Внимательно изучите раздел, относящийся к "ДокументыОснования", и проверьте, как там представлено свойство "ДокументОснование". Убедитесь, что там присутствует ссылка на корректный платежный документ с заполненными реквизитами. Если вместо ссылки на конкретный платежный документ вы видите пустые значения или некорректные метаданные, это подтвердит проблему с документом-основанием.

4. Анализ правил обмена

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

  1. Типовые правила обмена: Если вы используете типовые правила обмена, поставляемые 1С, то причина, скорее всего, кроется в данных (как мы уже обсуждали) или в несоответствии версий. Обновление до последних релизов часто решает проблемы с типовыми правилами.
  2. Измененные или доработанные правила обмена: Если правила обмена были модифицированы (например, через Конвертацию Данных), нам необходимо проверить, как именно происходит конвертация поля "ДокументОснование" для документа "Счет-фактура выданный (аванс)".
    • Откройте правила конвертации: Загрузите правила обмена в конфигурацию "Конвертация данных".
    • Найдите ПКО Документ_СчетФактураВыданныйАванс_Отправка: Это программный код объекта, указанный в ошибке.
    • Проанализируйте алгоритмы выгрузки: Внутри этого ПКО или связанных с ним правил конвертации объектов-потомков, найдите логику, отвечающую за заполнение коллекции ДокументыОснования и свойства ДокументОснование внутри нее. Убедитесь, что источник данных (документ-основание из ERP) корректно маппируется на целевой тип СоставнойДокументРасчетов и что все обязательные поля (номер, дата) передаются. Возможно, потребуется добавить или скорректировать алгоритм для корректного преобразования "Первичного документа" в ожидаемый тип или для извлечения его ключевых реквизитов.

5. Просмотр XML-файла обмена для углубленного анализа

Для глубокого понимания проблемы, особенно если предыдущие шаги не помогли, мы можем выгрузить данные в XML-файл и изучить его структуру. Это позволит увидеть, как 1С:ERP формирует данные перед отправкой и выявить точное место ошибки.

  1. Выгрузка данных в файл: Используйте стандартный механизм обмена данными, но вместо прямой синхронизации выберите выгрузку в XML-файл.
  2. Открытие XML-файла: Откройте полученный XML-файл в текстовом редакторе или специализированном XML-просмотрщике.
  3. Поиск проблемного участка: Найдите в файле XML-представление вашего Счета-фактуры выданного (аванс). Затем найдите блок <ДокументыОснования> и внутри него элемент <Строка>, а уже в нем — <ДокументОснование>.
  4. Анализ структуры: Внимательно изучите содержимое <ДокументОснование>. Вы должны увидеть теги, описывающие тип документа, его уникальный идентификатор, номер, дату и другие реквизиты. Если этот элемент пуст, некорректно сформирован или содержит только обобщенные данные, это подтвердит проблему с передачей документа-основания. Например, корректный фрагмент мог бы выглядеть примерно так:

    <ДокументыОснования> <Строка НомерСтроки="1"> <ДокументОснование> <Ссылка> <ТипОбъекта>Документ.ПоступлениеНаРасчетныйСчет</ТипОбъекта> <Идентификатор>{GUID_платежного_документа}</Идентификатор> <НомерДокумента>000000123</НомерДокумента> <ДатаДокумента>2020-12-31</ДатаДокумента> </Ссылка> <Номер>000000123</Номер> <Дата>2020-12-31</Дата> </ДокументОснование> </Строка> </ДокументыОснования>

    Если вместо этого вы видите отсутствие этих тегов, пустые значения или некорректный тип, это прямо укажет на ошибку в формировании XML.

Заключение

Ошибка XDTO при обмене "Счета-фактуры выданного (аванс)" из 1С:ERP в 1С:Бухгалтерию чаще всего связана с тем, что документ-основание, по которому был выписан авансовый счет-фактура, имеет некорректный или слишком общий тип (например, "Первичный документ") в ERP. Система-приемник и XDTO-схема обмена EnterpriseData ожидают конкретный платежный документ с определенными реквизитами. Последовательная проверка версий, корректировка документа-основания в ERP, а также анализ правил обмена и XML-файла помогут вам локализовать и устранить эту проблему, обеспечив успешный обмен данными.

← На главную