При работе с распределенной информационной базой (РИБ) по магазинам в конфигурации «1С:Розница 2.2» нередко возникает ситуация, когда документы (например, Установка цен номенклатуры или Поступление товаров), созданные в центральном узле, не попадают в пакет выгрузки для периферийных магазинов. При этом движения по регистрам (цены, остатки) могут успешно передаваться в сообщение обмена, а сами документы-регистраторы в периферийный узел не уходят.
Проанализируем причины такого поведения системы, разберем механизм регистрации изменений в Библиотеке стандартных подсистем (БСП) и рассмотрим способы устранения проблемы.
Выясним, почему документы могут игнорироваться механизмами обмена:
УстановкаЦенНоменклатуры содержат запрос с обращением к табличной части документа в базе данных. Поскольку регистрация изменений в БСП инициируется в подписке на события ПередЗаписью, нового документа в физических таблицах базы данных еще не существует. В результате запрос отбора возвращает пустой список магазинов, и авторегистрация для узлов не срабатывает. При повторной перезаписи уже существующего документа данные в базе уже есть, и он успешно регистрируется.ДополнительныеВидыЦен) присутствуют виды цен из документа. Если в документе указан вид цены, не привязанный к магазину, выгрузка для этого узла не произойдет. Для документов поступления отбор выполняется по складу и признаку Склад управляющей системы.Для корректной обработки новых документов необходимо изменить текст запроса в обработчике правил регистрации объекта, передав во временную таблицу данные непосредственно из оперативной памяти объекта (Объект.ВидыЦен.Выгрузить()), а не обращаться к табличной части через ссылку в базе данных.
Рассмотрим пример правильного формирования запроса для правил регистрации документа УстановкаЦенНоменклатуры:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидыЦен.ВидЦены КАК ВидЦены
|ПОМЕСТИТЬ ВидыЦен
|ИЗ
| &ОбъектВидыЦен КАК ВидыЦен
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПравилаЦенообразования.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ПравилаЦенообразования
|ИЗ
| Справочник.ПравилаЦенообразования КАК ПравилаЦенообразования
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВидыЦен КАК ВидыЦен
| ПО ПравилаЦенообразования.ВидЦен.Ссылка = ВидыЦен.ВидЦены
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПравилаЦенообразованияДополнительныеВидыЦен.Ссылка
|ИЗ
| Справочник.ПравилаЦенообразования.ДополнительныеВидыЦен КАК ПравилаЦенообразованияДополнительныеВидыЦен
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВидыЦен КАК ВидыЦен
| ПО ПравилаЦенообразованияДополнительныеВидыЦен.ВидЦен.Ссылка = ВидыЦен.ВидЦены
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Магазины.Ссылка КАК Магазин
|ИЗ
| Справочник.Магазины КАК Магазины
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПравилаЦенообразования КАК ПравилаЦенообразования
| ПО Магазины.ПравилоЦенообразования = ПравилаЦенообразования.Ссылка
|ГДЕ
| Магазины.СкладУправляющейСистемы = ЛОЖЬ";
Запрос.УстановитьПараметр("ОбъектВидыЦен", Объект.ВидыЦен.Выгрузить());
МассивМагазинов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Магазин");
ПараметрыЗапроса.Вставить("МассивМагазинов", МассивМагазинов);
Такой подход гарантирует, что даже при первом проведении нового документа система получит список видов цен напрямую из объекта и корректно определит список магазинов-получателей.
Разберем регламентные способы решения проблемы без прямого редактирования метаданных конфигурации:
Правила для обмена данными).Обратите внимание на важные технические нюансы работы механизма обмена:
Авторегистрация в метаданных: В конфигурациях на БСП свойство Авторегистрация для объектов планов обмена РИБ штатно установлено в положение Запретить. Не следует принудительно включать его в конфигураторе, так как это нарушит выборочную фильтрацию данных по магазинам и приведет к переполнению очереди сообщений избыточными данными.
Сброс ручной регистрации: Если зарегистрировать документ принудительно через обработку Регистрация изменений для обмена данными, но объект не соответствует условиям правил выгрузки узла, при непосредственном формировании XML-пакета выгрузки БСП выполнит повторную проверку и автоматически снимет объект с регистрации, исключив его из файла.