При сопровождении обменов между Управление торговлей 10.3 и Бухгалтерия предприятия 3.0 программисты часто сталкиваются с ситуацией, когда внесенные изменения в правила конвертации через конфигуратор (в макеты плана обмена) никак не отражаются на процессе выгрузки или загрузки данных. Мы можем удалять реквизиты, менять логику сопоставления или вовсе очищать правила, но система продолжает работать по старому алгоритму. В этой статье мы подробно разберем, где именно 1С хранит правила обмена, какой источник является приоритетным и как правильно обновить логику синхронизации, чтобы изменения вступили в силу.
В современных конфигурациях 1С, особенно тех, что построены на Библиотеке стандартных подсистем (БСП), реализована гибкая многоуровневая система поиска правил. Проанализируем цепочку приоритетов, по которой система выбирает, какие именно правила использовать в текущий момент:
.xml.ПравилаОбмена_... или ПравилаРегистрации_....Рассмотрим подробнее ситуацию автора: изменения вносятся в конфигураторе, но результат нулевой. Это классический признак того, что в базе задействован первый вариант — правила хранятся в регистре сведений.
Выясним, как найти нужные настройки. В конфигурации Бухгалтерия предприятия 3.0 (приемник) или Управление торговлей 10.3 (источник, если обмен инициируется оттуда) необходимо перейти в раздел настроек синхронизации данных.
Проанализируем последовательность действий для актуализации правил:
Если выбран вариант с внешним файлом или загруженными правилами, именно там и кроется причина "нечувствительности" системы к вашим правкам в конфигураторе. Чтобы решить проблему, нам нужно либо переключить настройку на «Использовать правила из конфигурации», либо загрузить обновленный файл правил непосредственно в эту форму.
Если через стандартный интерфейс настроек найти источник не удается, воспользуемся «тяжелой артиллерией» — прямым обращением к регистру. Проделаем следующие шаги:
ПравилаДляОбменаДанными.ИмяПланаОбмена указан наш обмен.ХранилищеЗначения.Если вы обнаружили там запись для вашего обмена, значит, система берет данные именно отсюда. Чтобы принудительно заставить 1С использовать макеты из конфигурации, эту запись можно временно удалить (предварительно сделав бэкап или выгрузив правила в файл) либо обновить содержимое ресурса актуальным файлом .xml, подготовленным в Конвертации данных 2.1.
Рассмотрим специфическую задачу автора: убрать реквизит НоменклатурнаяГруппа из табличной части. С обновлением БП 3.0 структура этого документа изменилась (в связи с новыми стандартами ФСБУ 5/2019), и реквизит может отсутствовать в метаданных или быть переименован.
Разберем алгоритм работы в программе «Конвертация данных 2.1»:
ТребованиеНакладная.НоменклатурнаяГруппа (или аналитика затрат), и Приемник — соответствующий реквизит.Иногда простого удаления ПКС недостаточно, если логика заполнения прописана в обработчиках. Проанализируем события ПередВыгрузкой или ПриЗагрузке. Если там встречается код обращения к этому реквизиту, его нужно закомментировать:
// Пример: удаление старой аналитики в обработчике
// Если Объект.Метаданные().ТабличныеЧасти.Материалы.Реквизиты.Найти("НоменклатурнаяГруппа") <> Неопределено Тогда
// СтрокаТЧ.НоменклатурнаяГруппа = ...
// КонецЕсли;
Даже после того, как мы обновили правила в регистре или конфигурации, 1С может продолжать использовать старые алгоритмы из-за кэширования. Выясним, как с этим бороться:
AppData\Local\1C\1Cv8\.... При радикальных изменениях правил рекомендуется полностью очистить локальный кэш.Требование-накладная и зарегистрировать его заново после обновления правил.Подводя итог нашему исследованию, можно составить четкий чек-лист для проверки источника правил:
ПравилаДляОбменаДанными.ОбменУправлениеТорговлейБухгалтерияПредприятия30 и ОбменУправлениеТорговлей103БухгалтерияПредприятия30).Помните, что в сильно переписанных конфигурациях (как в случае с УТ 10.3 у автора) разработчики могли внедрить свои механизмы хранения правил, например, в справочниках или дополнительных константах. В таком случае поможет только глобальный поиск по конфигурации или использование отладчика в модуле обмена для отслеживания момента загрузки структуры правил.