При обновлении типовых конфигураций 1С, особенно таких динамичных, как «Бухгалтерия предприятия, редакция 3.0», разработчики часто сталкиваются с ситуацией, когда годами работавшие обмены данными внезапно «ломаются». Одной из самых распространенных причин является изменение структуры метаданных. В этой статье мы подробно разберем ситуацию, когда после обновления перестает работать выгрузка/загрузка данных из-за изменений в механизме учета ставок НДС, и выясним, как правильно актуализировать правила обмена.
Рассмотрим ситуацию: имеется доработанная или внешняя обработка, которая переносит документы (например, «Реализация товаров и услуг» превращается в «Поступление») между двумя базами БП 3.0. После очередного обновления конфигурации процесс выгрузки прерывается. Чтобы понять причину, первым делом необходимо воспользоваться инструментом УниверсальныйОбменДаннымиXML. Попробуем запустить выгрузку через эту стандартную обработку, используя имеющийся файл правил.
Проанализируем типичный текст ошибки, который выдает система:
Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 8 (СтавкаНДС --> СтавкаНДС)
Объект = Кап.ремонт а/д (Номенклатура)
СвойствоПриемника = СтавкаНДС (ПеречислениеСсылка.СтавкиНДС)
ОписаниеОшибки = Поле объекта не обнаружено (СтавкаНДС)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9625)
Из данного сообщения мы видим, что при попытке обратиться к свойству СтавкаНДС у объекта типа СправочникСсылка.Номенклатура, система выдает отказ. Это прямо указывает на то, что в структуре метаданных реквизит с таким именем либо удален, либо переименован.
Разберем причину таких изменений. В старых релизах БП 3.0 (например, 3.0.39 и ранее) ставка НДС была реализована через Перечисление (Перечисления.СтавкиНДС). Это было удобно, но негибко — любое изменение законодательства (например, введение ставки 20%) требовало внесения изменений в саму конфигурацию на уровне метаданных.
Для обеспечения гибкости фирма «1С» перевела учет ставок НДС на Справочник (Справочники.СтавкиНДС). В процессе этого перехода старый реквизит СтавкаНДС во многих объектах (Номенклатура, Документы) был переименован в УдалитьСтавкаНДС, а на его место пришел новый реквизит с тем же именем СтавкаНДС, но уже имеющий тип СправочникСсылка.СтавкиНДС.
Если данные нужно перенести «здесь и сейчас», можно прибегнуть к методу прямой правки XML-файла правил обмена или их корректировке в «Конвертации данных 2.0» без глубокого обновления структуры. Как показывает практика, замена имени свойства источника со СтавкаНДС на УдалитьСтавкаНДС в правилах конвертации свойств (ПКС) позволяет временно обойти ошибку.
Важно: Этот метод имеет два критических недостатка:
УдалитьСтавкаНДС у него будет пустым, так как система теперь пишет данные только в новый реквизит-справочник.Рассмотрим по шагам правильный алгоритм актуализации правил обмена:
MD83Exp.epf (обычно идет в комплекте с шаблоном КД 2.0) и запустим ее в актуальных базах Источника и Приемника. Сформируем XML-файлы со структурой метаданных.СтавкаНДС изменился с ПеречислениеСсылка.СтавкиНДС на СправочникСсылка.СтавкиНДС.СтавкиНДС.
GUID элементов справочника в разных базах могут отличаться, в отличие от значений перечисления.СтавкаНДС.Если поддержка самописных правил на базе КД 2.0 становится слишком трудозатратной из-за частых обновлений «1С:Бухгалтерии», стоит рассмотреть переход на использование Универсального формата (EnterpriseData). Выясним преимущества этого подхода:
В конфигурации БП 3.0 встроены стандартные механизмы синхронизации. Формат EnterpriseData является версионным. Это означает, что даже если внутренняя структура метаданных (как в случае со справочником Ставки НДС) меняется, логика выгрузки в универсальный формат поддерживается разработчиками «1С». Внешние системы, потребляющие эти данные, продолжают работать со стабильной структурой XML/JSON.
Посмотрим на пример использования встроенной обработки ВыгрузкаЗагрузкаEnterpriseData. Она позволяет выгружать данные в файл, используя стандартные алгоритмы конфигурации, что избавляет программиста от необходимости вручную править правила при каждом обновлении реквизитов.
Мы проанализировали ситуацию сбоя обмена данными в 1С 8.3 и выяснили, что основной причиной является эволюция метаданных. Для надежной работы системы рекомендуем:
EnterpriseData для снижения затрат на сопровождение обменов.Используя эти инструкции, вы сможете не только быстро восстановить работоспособность обмена, но и сделать его более устойчивым к будущим изменениям типовых конфигураций.