Как исправить ошибку обмена УТ 11.4 — БП 3.0 при выгрузке корректировочных счетов-фактур на возврат

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

При синхронизации данных между конфигурациями «1С:Управление торговлей 11.4» и «1С:Бухгалтерия предприятия 3.0» пользователи часто сталкиваются с аварийным завершением обмена. Типичная ситуация: в текущем периоде появился документ Корректировочный счет-фактура выданный, созданный на основании возврата от клиента. При попытке выгрузки система выдает ошибку: «Неверный второй параметр Реквизиты: - Поле объекта "Руководитель" не найдено». Давайте подробно разберем причины этой проблемы и способы ее решения.

Почему возникает ошибка «Поле объекта Руководитель не найдено»?

Проанализируем ситуацию: согласно изменениям в законодательстве, возврат товаров от покупателя теперь оформляется не «обратной реализацией», а корректировочным счетом-фактурой от продавца. В программном коде типовых правил обмена (использующих формат EnterpriseData) прописан алгоритм заполнения данных о подписантах (руководителе и главном бухгалтере). Проблема заключается в том, что при подготовке данных к отправке система обращается к Документу-основанию корректировочного счета-фактуры.

Если основанием является Реализация товаров и услуг, то реквизиты ответственных лиц там присутствуют. Однако, если основанием выступает Возврат товаров от клиента или Отчет комитенту, структура метаданных этих документов в УТ 11 может не содержать полей Руководитель и ГлавныйБухгалтер в явном виде. Механизм обмена пытается программно прочитать эти значения через функцию ОбщегоНазначения.ЗначениеРеквизитаОбъекта, и, не находя их, вызывает исключение, которое прерывает весь процесс синхронизации.

Шаг 1: Локализация проблемного кода

Выясним, где именно происходит сбой. В конфигурации «Управление торговлей» вся логика выгрузки по универсальному формату сосредоточена в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. Нам необходимо найти процедуру, отвечающую за отправку данных корректировочного счета-фактуры:

ПКО_Документ_СчетФактураВыданный_Отправка_ПриОтправкеДанных

В этой процедуре происходит обращение к реквизитам документа-основания без предварительной проверки их наличия в метаданных конкретного типа объекта. Именно этот участок кода мы будем модифицировать.

Шаг 2: Исправление через расширение конфигурации

Для сохранения поддержки конфигурации и корректного обновления в будущем, рекомендуем использовать механизм расширений. Создадим расширение и добавим в него процедуру-обработчик с типом вызова &Вместо или &ИзменениеИВхода. Наша задача — «обернуть» обращение к реквизитам в проверку их существования.

Рассмотрим пример исправленного кода, который необходимо внедрить в модуль менеджера обмена:


// В процедуре ПКО_Документ_СчетФактураВыданный_Отправка_ПриОтправкеДанных

МетаданныеДокОснования = ДанныеИБ.ДокументОснование.Метаданные;

// Проверяем наличие и заполняем данные руководителя
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("Руководитель", МетаданныеДокОснования) Тогда
    Руководитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеИБ.ДокументОснование, "Руководитель");
    Если ЗначениеЗаполнено(Руководитель) Тогда
        ДанныеXDTO.Вставить("Руководитель", Руководитель.ФизическоеЛицо);
    КонецЕсли;
КонецЕсли;

// Проверяем наличие и заполняем данные главного бухгалтера
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ГлавныйБухгалтер", МетаданныеДокОснования) Тогда
    ГлавныйБухгалтер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеИБ.ДокументОснование, "ГлавныйБухгалтер");
    Если ЗначениеЗаполнено(ГлавныйБухгалтер) Тогда
        ДанныеXDTO.Вставить("ГлавныйБухгалтер", ГлавныйБухгалтер.ФизическоеЛицо);
    КонецЕсли;
КонецЕсли;

Важный нюанс: при создании расширения обязательно снимите флаг «Безопасный режим» в свойствах расширения. В противном случае код, обращающийся к метаданным и общим модулям обмена, может не выполниться из-за ограничений прав доступа в контексте сервера.

Шаг 3: Проблема проведения документа в «1С:Бухгалтерии»

Даже если выгрузка прошла успешно, вы можете заметить, что в «1С:Бухгалтерии» корректировочный счет-фактура не проводится автоматически. Причиной часто является отсутствие связи с исходным (основным) счетом-фактурой. В некоторых версиях формата EnterpriseData (например, 1.7) в объекте Документ.СчетФактураВыданный могут отсутствовать свойства ДатаИсходногоДокумента и НомерИсходногоДокумента.

Для решения этой проблемы проанализируем XDTO-пакеты в обеих базах. Если в схеме EnterpriseData_1_x_xx отсутствуют эти поля, документ в БП 3.0 создается с пустой табличной частью оснований. В таком случае у вас есть два пути:

  1. Ручной ввод: Если таких документов единицы, проще всего отменить регистрацию проблемного счета-фактуры в УТ и создать его в Бухгалтерии вручную.
  2. Доработка XDTO: Добавить недостающие свойства в пакеты расширения, что является более сложной задачей для опытных разработчиков.

Шаг 4: Отладка и проверка

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

Посмотрим на результат выполнения функции ОбщегоНазначения.ЗначениеРеквизитаОбъекта. Если документ-основание — это Возврат товаров от клиента, убедитесь, что в нем заполнены ответственные лица на вкладке «Дополнительно». Если они не заполнены в УТ, они не попадут в БП, и документ может не провестись из-за отсутствия обязательных подписей.

Резюме: Данная ошибка была признана разработчиками 1С и исправлена в более поздних релизах (начиная с 11.4.7/2.4.7). Если вы работаете на более ранних версиях и не имеете возможности оперативно обновиться, использование описанного выше расширения с проверкой ЕстьРеквизитОбъекта является наиболее эффективным и безопасным способом восстановления работоспособности обмена.

← На главную