При работе с распределенными информационными базами (РИБ) в 1С:Управление торговлей 11.5 системные администраторы и разработчики часто сталкиваются с неприятной ситуацией: документ Установка цен номенклатуры успешно мигрирует из центральной базы в периферийную, однако движения по регистрам сведений (фактические цены) в подчиненном узле отсутствуют. В итоге в дочерней базе документ есть, а цен нет. Проанализируем, почему это происходит и как восстановить корректную синхронизацию данных.
Основная причина кроется в масштабном обновлении архитектуры 1С. Начиная с версий УТ 11.5.7/11.5.8, компания 1С внедрила механизм «Ценообразование 2.5». В этой версии данные о ценах хранятся не в старом регистре ЦеныНоменклатуры, а в новом — ЦеныНоменклатуры25.
Система синхронизации в типовых конфигурациях (особенно в плане обмена «Полный») часто опирается на подписки на события, а не на авторегистрацию объектов. Если при выпуске очередного релиза разработчики добавили новый регистр, но забыли включить его в соответствующую подписку или в состав плана обмена, данные просто не будут помечаться к выгрузке. Рассмотрим, как выявить и устранить это упущение.
В современных версиях УТ для РИБ авторегистрация у большинства объектов отключена. Это сделано для того, чтобы программно управлять составом выгружаемых данных (например, фильтровать данные по организациям или складам). Регистрация изменений происходит в специальных подписках на события.
Выясним по шагам, где искать ошибку:
Полный (или СОтборами, если используется он).ЦеныНоменклатуры25 включен в состав плана обмена, а в колонке «Авторегистрация» стоит значение Запретить.Нас интересуют подписки, отвечающие за регистрацию наборов записей. Обычно они называются ПолныйРегистрацияНабора, ПолныйРегистрацияНабораЗаписей или аналогично для вашего плана обмена.
Рассмотрим ситуацию, когда документ переносится, а движения — нет. Это означает, что регистрация документа (объекта) работает, а регистрация набора записей регистра (движений) — отсутствует. Нам необходимо проверить источник события в подписке.
ПолныйРегистрацияНабора (название может незначительно отличаться в разных релизах, ищите по префиксу плана обмена).РегистрСведенийНаборЗаписей.ЦеныНоменклатуры25.Иногда простого включения типа в подписку недостаточно, если в самом обработчике стоит жесткая фильтрация. Проанализируем типичный код в модуле, к которому обращается подписка (например, ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюНабораЗаписей):
Процедура ПолныйРегистрацияНабораПередЗаписью(Источник, Отказ, Замещение) Экспорт
Если ОбменДаннымиСервер.ОбменДаннымиВключен() Тогда
Возврат;
КонецЕсли;
// Проверка, включен ли регистр в логику обмена
ТипИсточника = ТипЗнч(Источник);
Если ТипИсточника = Тип("РегистрСведенийНаборЗаписей.ЦеныНоменклатуры25") Тогда
// Здесь происходит вызов типовой процедуры регистрации
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Источник);
КонецЕсли;
КонецПроцедуры
Посмотрим внимательно: если вы используете расширение или доработанную конфигурацию, убедитесь, что новый регистр версии 2.5 добавлен во все логические блоки, где ранее фигурировал старый регистр ЦеныНоменклатуры.
Если конфигурация полностью типовая и вы не хотите снимать её с поддержки, проблема может быть в Правилах регистрации объектов. В УТ 11 они часто загружаются извне как XML-файлы.
Выполним следующие действия в режиме «1С:Предприятие»:
ЦеныНоменклатуры25, даже если он есть в составе плана обмена.Выясним, не заблокирована ли передача цен функциональными опциями. В 1С:УТ 11.5 важно, чтобы в периферийной базе настройки ценообразования полностью совпадали с центральной.
Проанализируем ситуацию: если в центре включено «Новое ценообразование», а в РИБ по какой-то причине (например, сбой при первом обмене) опция ИспользоватьНовоеЦенообразование не активировалась, система при загрузке может отсекать движения по «неизвестному» ей регистру.
Также рекомендуется проверить наличие установленных патчей (исправлений) от 1С. Для релизов 11.5.12.х выпускались патчи с описанием: «Исправлена регистрация изменений для регистров сведений в планах обмена РИБ». Установить их можно через: Администрирование -> Обслуживание -> Обновление программы -> Исправления (патчи).
Если цены нужны в подчиненном узле «здесь и сейчас», а вносить правки в конфигуратор нет времени, воспользуемся стандартной обработкой «Регистрация изменений для обмена данными»:
Регистры сведений -> Цены номенклатуры 2.5.Резюмируем: основная проблема синхронизации цен в УТ 11.5 чаще всего связана с тем, что новый регистр ЦеныНоменклатуры25 «забыли» добавить в Источник подписки на событие ПолныйРегистрацияНабора. Проверка этого флажка в конфигураторе в 90% случаев решает проблему отсутствующих движений в РИБ.