Как исправить ошибку «Поле объекта не обнаружено (СпособПогашенияЗадолженности)» при обмене УТ 10.3 и БП 3.0?

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

Синхронизация данных между конфигурациями «Управление торговлей» старого поколения (редакция 10.3) и современными версиями «Бухгалтерии предприятия» (редакция 3.0) нередко преподносит сюрпризы в виде системных ошибок. Одной из наиболее частых проблем при экспорте документов является сбой на этапе выгрузки, когда платформа пытается обратиться к несуществующему реквизиту объекта. Разберем детально механизм возникновения этой ошибки и рассмотрим практические способы ее устранения.

Анализ механизма возникновения ошибки

Рассмотрим структуру диагностического сообщения, которое получает пользователь при запуске обмена:

Ошибка получения значения свойства подчиненного объекта (по имени свойства приемника)... ПКО = РасходныйКассовыйОрдер... ПКС = 32 (--> СпособПогашенияЗадолженности)... Объект = Расходный кассовый ордер УТ000000008... ОписаниеОшибки = Поле объекта не обнаружено (СпособПогашенияЗадолженности)

Для того чтобы понять причины происходящего, проанализируем внутреннее устройство технологии «1С:Конвертация данных 2.1», на которой построены правила данного обмена:

  1. Аббревиатуры ПКО и ПКС: ПКО обозначает «Правило конвертации объекта» (в данном случае конвертируется документ РасходныйКассовыйОрдер). ПКС — это «Правило конвертации свойства», под номером 32 в котором настраивается передача конкретного реквизита — СпособПогашенияЗадолженности.
  2. Поведение обработчика обмена: В настройках правила конвертации свойств поле «Источник» было оставлено пустым, либо правила рассчитаны на конфигурацию-источник более новой структуры. Когда поле «Источник» не задано напрямую в правилах обмена, XML-платформа по умолчанию пытается прочитать значение из одноименного реквизита объекта источника. То есть система выполняет обращение вида: Источник.СпособПогашенияЗадолженности.
  3. Суть конфликта метаданных: В типовой конфигурации «Управление торговлей» редакции 10.3 у документа РасходныйКассовыйОрдер (РКО) в шапке никогда не существовало реквизита СпособПогашенияЗадолженности. В то же время в целевой конфигурации «Бухгалтерия предприятия 3.0» этот реквизит присутствует и активно используется в табличных частях (например, в расшифровках платежей). Из-за несоответствия версий правил обмена обработка выгрузки пытается извлечь из шапки РКО в УТ 10.3 то, чего там физически нет, порождая критическую ошибку Поле объекта не обнаружено.

Выясним основные причины, приводящие к такому сбою:

---

Способ 1. Выравнивание версий конфигураций и обновление правил (Рекомендуемый)

Самый надежный и корректный способ устранения ошибок синхронизации — это обновление обеих систем до актуальных релизов и использование штатных правил обмена, поставляемых фирмой «1С».

Рассмотрим алгоритм действий по шагам:

  1. Выполните резервное копирование баз данных «Управление торговлей 10.3» и «Бухгалтерия предприятия 3.0».
  2. Обновите обе конфигурации до последних выпущенных релизов. Найти актуальные дистрибутивы обновлений можно на портале поддержки пользователей 1С.
  3. Локализуйте каталог шаблонов обновлений на вашем компьютере. По умолчанию файлы обновлений распаковываются по следующему пути:
    C:\Users\<ИмяПользователя>\AppData\Roaming\1C\1cv8\tmplts\1c\
  4. Перейдите в папку с установленным актуальным релизом БП 3.0 (каталог Accounting\<Номер_Релиза>\) или УТ 10.3. Внутри этих папок найдите подкаталог Обмены данными или специализированный архив с правилами. Файлы правил обычно имеют названия вида Trade_Accounting_Rules.xml или Rules.xml.
  5. Перейдите в конфигурацию «Управление торговлей 10.3» в меню настройки синхронизации данных. Загрузите обновленные файлы правил конвертации объектов и правил регистрации в соответствующий узел обмена.

---

Способ 2. Диагностика и исправление проблемного документа в УТ 10.3

Если обновление конфигураций в данный момент невозможно, проанализируем сам документ, на котором спотыкается выгрузка. В тексте ошибки четко указан проблемный объект: Расходный кассовый ордер УТ000000008 от 06.04.2019.

Выполним детальную проверку этого документа непосредственно в «Управление торговлей»:

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

---

Способ 3. Модификация правил через «1С:Конвертация данных 2.1»

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

Для этого выполним следующие действия:

  1. Выгрузите текущие правила обмена из вашей базы «Управление торговлей 10.3» в XML-файл.
  2. Запустите специализированную базу «1С:Конвертация данных» редакции 2.1.
  3. Загрузите XML-файл правил в Конвертацию данных через обработку «Загрузка правил обмена».
  4. В структуре правил найдите раздел «Правила конвертации объектов (ПКО)» и выберите строку РасходныйКассовыйОрдер.
  5. Перейдите на вкладку «Правила конвертации свойств (ПКС)». Прокрутите список и найдите строку, где свойством-приемником является СпособПогашенияЗадолженности.
  6. Проанализируем ПКС. Если поле «Источник» там пустое и система пытается программно вычислить значение, мы можем написать обходной алгоритм. Откройте свойства этого ПКС и перейдите к обработчику события Перед выгрузкой.
  7. Пропишем в обработчике безопасный код, который предотвратит обращение к несуществующему реквизиту шапки документа:

// Проверяем тип источника перед обращением к свойствам
Если ТипЗнч(Источник) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
    // Исключаем автоматический поиск свойства в шапке источника
    // Принудительно задаем дефолтное значение для приемника БП 3.0
    Значение = "Автоматически"; 
КонецЕсли;
  1. Сохраните изменения в правилах конвертации объектов. Выгрузите обновленные правила обратно в файл XML и загрузите их в настройках синхронизации УТ 10.3.

---

Настройка одностороннего обмена (УТ 10.3 -> БП 3.0)

В сообщениях темы пользователь также интересуется механизмом организации одностороннего обмена (передача данных только из торговли в бухгалтерию). Разберем, как правильно настроить этот процесс, чтобы изменения из бухгалтерии не замусоривали торговую базу.

Для создания корректного одностороннего обмена необходимо выполнить настройки на обеих сторонах:

Настройка на стороне «Бухгалтерии предприятия 3.0» (Приемник)

В современных конфигурациях на управляемых формах реализован гибкий механизм управления отправкой данных:

  1. Перейдите в раздел Администрирование — Синхронизация данных — Настройки синхронизации.
  2. Выберите ваш узел обмена с УТ 10.3 и нажмите кнопку «Изменить настройки».
  3. В открывшемся окне найдите вкладку «Правила отправки данных».
  4. Установите переключатель отправки документов в положение «Не отправлять» (или выберите ручной режим отправки и никогда его не задействуйте). Это гарантирует, что при выполнении сеанса связи БП 3.0 не будет формировать пакет выгрузки для УТ 10.3.

Настройка на стороне «Управления торговлей 10.3» (Источник)

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

  1. Для того чтобы базы не тратили лишнее процессорное время и дисковое пространство на регистрацию изменений в БП 3.0, воспользуйтесь обработкой Регистрация изменений для обмена (или аналогичным встроенным инструментом работы с планами обмена).
  2. В «Бухгалтерии предприятия» полностью очистите все зарегистрированные изменения для узла обмена с УТ 10.3. Если изменений нет на регистрации, то даже при попытке выгрузки файл обмена со стороны БП будет пустым.
  3. В УТ 10.3 настройте расписание так, чтобы выполнялась только односторонняя загрузка/выгрузка.

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

← На главную