При работе в распределенной информационной базе (РИБ) по магазинам в конфигурации 1С:Розница 2.2 пользователи часто сталкиваются со ситуацией, когда документ Установка цен номенклатуры, созданный в центральном узле, не передается в подчиненные узлы (периферийные базы). В результате при попытке перейти к документу-основателю в подчиненном узле возникает ошибка "Объект не найден", а розничные или акционные цены на кассах не обновляются.
Разберем по шагам причины возникновения этой проблемы и рассмотрим способы её полного устранения.
Проанализируем алгоритм работы плана обмена «По магазину». В 1С:Розница действует строго селективный фильтр выгрузки. Документ Установка цен номенклатуры и установленные им цены мигрируют в конкретный магазин подчиненного узла только в том случае, если виды цен из документа явно привязаны к действующему правилу ценообразования этого магазина.
Если в документе используются дополнительные виды цен (например, цены для акций, закупочные цены, виды цен для расчетных наценок), но они не указаны в правиле ценообразования магазина, система отсекает их при авторегистрации изменений.
Порядок решения:
Дополнительные виды цен.Если настройки видов цен выполнены верно, но документ Установка цен номенклатуры все равно не регистрируется автоматически при первичном проведении, причина заключается в ошибке самой конфигурации. В релизе 1С:Розница 2.2.6.33 присутствовала ошибка в подписке на событие проведения документа: авторегистрация объекта для узлов РИБ срабатывала только при повторном перепроведении документа в центральном узле.
Главное решение:
Выполним обновление конфигурации 1С:Розница до релиза 2.2.7.37 или выше. В последующих версиях разработчики исправили работу подписок на события и алгоритм авторегистрации документов цен для узлов плана обмена.
Если оперативно обновить информационную базу не представляется возможным, рассмотрим альтернативные методы решения задачи:
1. Двойное перепроведение документа
При записи и повторном проведении документа Установка цен номенклатуры в центральном узле механизм регистрации обмена срабатывает корректно, и документ попадает в очередь выгрузки.
2. Использование обработки «Регистрация изменений для обмена данными»
Для массовой отправки неотправленных документов за период выполним следующие действия:
Установка цен номенклатуры и зарегистрируем требуемые документы вручную или по фильтру периода.3. Принудительная регистрация через расширение конфигурации
Для автоматизации процесса создадим расширение с подпиской на событие ПриЗаписи или ОбработкаПроведения для документа УстановкаЦенНоменклатуры. В модуле вызовем метод программной регистрации:
Для Каждого Узел Из ПланыОбмена.ПоМагазину.Выбрать() Цикл
Если Узел <> ПланыОбмена.ПоМагазину.ЭтотУзел() Тогда
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Источник);
КонецЕсли;
КонецЦикла;
4. Использование схемы «Применение цен номенклатуры»
При включенном механизме применения цен для работы касс периферийной базы первоисточник (сам документ установки) не всегда обязателен. Достаточно, чтобы мигрировали записи регистра сведений Цены номенклатуры, а ввод цен в действие на месте выполнит документ Применение цен номенклатуры.
Выясним также, почему документы не передаются напрямую из одного подчиненного узла в другой (например, из Магазина 1 в Магазин 2). Обмен в РИБ 1С строится исключительно по топологии «Звезда». Прямой обмен между периферийными базами (ПБ1 ↔ ПБ2) платформой не поддерживается.
Все данные транзитом передаются по схеме: ПБ1 → Центральный узел → ПБ2. Чтобы документ из одной периферийной базы попал во вторую, он должен сначала успешно загрузиться в главный узел, пройти там проверку правил ценообразования второго магазина и только после этого зарегистрироваться для отправки во второй подчиненный узел.