Как исправить правила обмена в 1С:Бухгалтерия 3.0 при ошибке «Поле объекта не обнаружено (СтавкаНДС)»

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

При обновлении типовых конфигураций 1С, особенно таких динамичных, как «Бухгалтерия предприятия, редакция 3.0», разработчики часто сталкиваются с ситуацией, когда годами работавшие обмены данными внезапно «ломаются». Одной из самых распространенных причин является изменение структуры метаданных. В этой статье мы подробно разберем ситуацию, когда после обновления перестает работать выгрузка/загрузка данных из-за изменений в механизме учета ставок НДС, и выясним, как правильно актуализировать правила обмена.

Анализ проблемы и диагностика ошибки

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

Проанализируем типичный текст ошибки, который выдает система:


Ошибка получения значения свойства объекта (по имени свойства источника)
    ПКО                =  Номенклатура  (Справочник: Номенклатура)
    ПКС                =  8  (СтавкаНДС --> СтавкаНДС)
    Объект             =  Кап.ремонт а/д (Номенклатура)
    СвойствоПриемника  =  СтавкаНДС  (ПеречислениеСсылка.СтавкиНДС)
    ОписаниеОшибки     =  Поле объекта не обнаружено (СтавкаНДС)
    ПозицияМодуля      =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9625)

Из данного сообщения мы видим, что при попытке обратиться к свойству СтавкаНДС у объекта типа СправочникСсылка.Номенклатура, система выдает отказ. Это прямо указывает на то, что в структуре метаданных реквизит с таким именем либо удален, либо переименован.

Почему изменилась структура метаданных

Разберем причину таких изменений. В старых релизах БП 3.0 (например, 3.0.39 и ранее) ставка НДС была реализована через Перечисление (Перечисления.СтавкиНДС). Это было удобно, но негибко — любое изменение законодательства (например, введение ставки 20%) требовало внесения изменений в саму конфигурацию на уровне метаданных.

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

Вариант 1: Быстрое исправление («Костыль»)

Если данные нужно перенести «здесь и сейчас», можно прибегнуть к методу прямой правки XML-файла правил обмена или их корректировке в «Конвертации данных 2.0» без глубокого обновления структуры. Как показывает практика, замена имени свойства источника со СтавкаНДС на УдалитьСтавкаНДС в правилах конвертации свойств (ПКС) позволяет временно обойти ошибку.

Важно: Этот метод имеет два критических недостатка:

  1. Реквизиты с префиксом «Удалить» со временем полностью вычищаются из конфигурации (через несколько релизов).
  2. Если пользователь создал новую номенклатуру в обновленной базе, значение в поле УдалитьСтавкаНДС у него будет пустым, так как система теперь пишет данные только в новый реквизит-справочник.

Вариант 2: Правильное исправление через Конвертацию данных 2.0

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

  1. Выгрузка структуры конфигурации: Возьмем обработку MD83Exp.epf (обычно идет в комплекте с шаблоном КД 2.0) и запустим ее в актуальных базах Источника и Приемника. Сформируем XML-файлы со структурой метаданных.
  2. Загрузка структуры в КД 2.0: Откроем информационную базу «Конвертация данных 2.0» и загрузим обновленные структуры. Проанализируем изменения: мы увидим, что тип данных для свойства СтавкаНДС изменился с ПеречислениеСсылка.СтавкиНДС на СправочникСсылка.СтавкиНДС.
  3. Настройка ПКО для Ставок НДС: Так как теперь это справочник, нам необходимо создать новое «Правило Конвертации Объектов» (ПКО) для СтавкиНДС.
    • Если мы переносим данные между одинаковыми конфигурациями, настроим поиск по Наименованию или по реквизиту Ставка (числовое значение).
    • Это критично, так как GUID элементов справочника в разных базах могут отличаться, в отличие от значений перечисления.
  4. Обновление ПКС: В правилах конвертации Номенклатуры и Документов укажем новое ПКО для свойства СтавкаНДС.
  5. Сохранение и тестирование: Сохраним обновленные правила, подгрузим их в нашу обработку и проверим обмен на небольшом массиве данных.

Современный подход: Переход на EnterpriseData

Если поддержка самописных правил на базе КД 2.0 становится слишком трудозатратной из-за частых обновлений «1С:Бухгалтерии», стоит рассмотреть переход на использование Универсального формата (EnterpriseData). Выясним преимущества этого подхода:

В конфигурации БП 3.0 встроены стандартные механизмы синхронизации. Формат EnterpriseData является версионным. Это означает, что даже если внутренняя структура метаданных (как в случае со справочником Ставки НДС) меняется, логика выгрузки в универсальный формат поддерживается разработчиками «1С». Внешние системы, потребляющие эти данные, продолжают работать со стабильной структурой XML/JSON.

Посмотрим на пример использования встроенной обработки ВыгрузкаЗагрузкаEnterpriseData. Она позволяет выгружать данные в файл, используя стандартные алгоритмы конфигурации, что избавляет программиста от необходимости вручную править правила при каждом обновлении реквизитов.

Заключение

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

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

← На главную