Почему в 1С:Розница 2.2 при обмене РИБ по магазинам не выгружаются новые документы?

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

При работе с распределенной информационной базой (РИБ) по магазинам в конфигурации «1С:Розница 2.2» нередко возникает ситуация, когда документы (например, Установка цен номенклатуры или Поступление товаров), созданные в центральном узле, не попадают в пакет выгрузки для периферийных магазинов. При этом движения по регистрам (цены, остатки) могут успешно передаваться в сообщение обмена, а сами документы-регистраторы в периферийный узел не уходят.

Проанализируем причины такого поведения системы, разберем механизм регистрации изменений в Библиотеке стандартных подсистем (БСП) и рассмотрим способы устранения проблемы.

Анализ причин сбоя регистрации документов

Выясним, почему документы могут игнорироваться механизмами обмена:

  1. Ошибка в типовых правилах регистрации объектов (ПРО): В релизах 1С:Розница ветки 2.2.6 правила регистрации для документа УстановкаЦенНоменклатуры содержат запрос с обращением к табличной части документа в базе данных. Поскольку регистрация изменений в БСП инициируется в подписке на события ПередЗаписью, нового документа в физических таблицах базы данных еще не существует. В результате запрос отбора возвращает пустой список магазинов, и авторегистрация для узлов не срабатывает. При повторной перезаписи уже существующего документа данные в базе уже есть, и он успешно регистрируется.
  2. Фильтрация по правилам ценообразования и складам: В плане обмена по магазинам действует строгое ограничение. Документ установки цен регистрируется только для тех магазинов, в правиле ценообразования которых (включая табличную часть ДополнительныеВидыЦен) присутствуют виды цен из документа. Если в документе указан вид цены, не привязанный к магазину, выгрузка для этого узла не произойдет. Для документов поступления отбор выполняется по складу и признаку Склад управляющей системы.
  3. Дата начала выгрузки: Если дата документа меньше установленной в настройках узла границы даты начала выгрузки, объект будет проигнорирован.
  4. Раздельная регистрация документов и движений: Правила регистрации документов и связанных с ними регистров сведений/накопления работают независимо. Движения могут проходить по общим фильтрам, в то время как сам документ отсекается условиями отбора правил регистрации.

Способ 1. Исправление запроса в правилах регистрации объектов

Для корректной обработки новых документов необходимо изменить текст запроса в обработчике правил регистрации объекта, передав во временную таблицу данные непосредственно из оперативной памяти объекта (Объект.ВидыЦен.Выгрузить()), а не обращаться к табличной части через ссылку в базе данных.

Рассмотрим пример правильного формирования запроса для правил регистрации документа УстановкаЦенНоменклатуры:


Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ВидыЦен.ВидЦены КАК ВидЦены
|ПОМЕСТИТЬ ВидыЦен
|ИЗ
|	&ОбъектВидыЦен КАК ВидыЦен
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|	ПравилаЦенообразования.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ПравилаЦенообразования
|ИЗ
|	Справочник.ПравилаЦенообразования КАК ПравилаЦенообразования
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВидыЦен КАК ВидыЦен
|		ПО ПравилаЦенообразования.ВидЦен.Ссылка = ВидыЦен.ВидЦены
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|	ПравилаЦенообразованияДополнительныеВидыЦен.Ссылка
|ИЗ
|	Справочник.ПравилаЦенообразования.ДополнительныеВидыЦен КАК ПравилаЦенообразованияДополнительныеВидыЦен
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВидыЦен КАК ВидыЦен
|		ПО ПравилаЦенообразованияДополнительныеВидыЦен.ВидЦен.Ссылка = ВидыЦен.ВидЦены
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|	Магазины.Ссылка КАК Магазин
|ИЗ
|	Справочник.Магазины КАК Магазины
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПравилаЦенообразования КАК ПравилаЦенообразования
|		ПО Магазины.ПравилоЦенообразования = ПравилаЦенообразования.Ссылка
|ГДЕ
|	Магазины.СкладУправляющейСистемы = ЛОЖЬ";

Запрос.УстановитьПараметр("ОбъектВидыЦен", Объект.ВидыЦен.Выгрузить());
МассивМагазинов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Магазин");
ПараметрыЗапроса.Вставить("МассивМагазинов", МассивМагазинов);

Такой подход гарантирует, что даже при первом проведении нового документа система получит список видов цен напрямую из объекта и корректно определит список магазинов-получателей.

Способ 2. Обновление конфигурации или загрузка внешних правил

Разберем регламентные способы решения проблемы без прямого редактирования метаданных конфигурации:

  1. Обновление конфигурации: В типовых релизах «1С:Розница» начиная с версии 2.2.7 данная логика получения видов цен из объекта уже исправлена разработчиками. Обновление конфигурации на актуальный релиз полностью устраняет ошибку.
  2. Загрузка исправленных правил регистрации (ПРО): Если конфигурация находится на типовой поддержке и оперативно обновить ее нельзя, можно скорректировать правила регистрации в конфигурации «Конвертация данных 2» и загрузить полученный XML-файл в режиме «1С:Предприятие» через форму настройки синхронизации данных (или регистр сведений Правила для обмена данными).
  3. Очистка кэша сеансов: Поскольку БСП кэширует скомпилированные правила регистрации данных, после применения любых изменений в правилах необходимо перезапустить рабочие сеансы пользователей (или службу сервера «1С:Предприятия»).

Особенности ручной регистрации и работы БСП

Обратите внимание на важные технические нюансы работы механизма обмена:

Авторегистрация в метаданных: В конфигурациях на БСП свойство Авторегистрация для объектов планов обмена РИБ штатно установлено в положение Запретить. Не следует принудительно включать его в конфигураторе, так как это нарушит выборочную фильтрацию данных по магазинам и приведет к переполнению очереди сообщений избыточными данными.

Сброс ручной регистрации: Если зарегистрировать документ принудительно через обработку Регистрация изменений для обмена данными, но объект не соответствует условиям правил выгрузки узла, при непосредственном формировании XML-пакета выгрузки БСП выполнит повторную проверку и автоматически снимет объект с регистрации, исключив его из файла.

← На главную