HelpF.pro

Полная регистрация изменений для узла

Код 1C v 8.х
 Процедура ПолнаяРегистрацияДанныхПоУзлу(Узел, РегистрироватьВсе) Экспорт

// Регистрация изменений всех данных для узла производится в случае
// значения параметра РегистрироватьВсе = Истина или
// значение склада в узле не установлено
Сообщение = Новый СообщениеПользователю();
Если РегистрироватьВсе Или Узел.Склад.Пустая() Тогда
Сообщение.Текст = "Регистрация всех данных по узлу " + Узел;
Сообщение.Сообщить();
ПланыОбмена.ЗарегистрироватьИзменения(Узел);
Иначе
Сообщение.Текст = "Регистрация данных по узлу " + Узел + " -----------";
Сообщение.Сообщить();
ПланОбмена = Узел.Метаданные();
Состав = ПланОбмена.Состав;
Для Каждого ЭлементСостава Из Состав Цикл
Сообщение.Текст = " Регистрация данных " + ЭлементСостава.Метаданные + " по узлу " + Узел;
Сообщение.Сообщить();
Если ЭлементСостава.Метаданные = Метаданные.Документы.РасходнаяНакладная Тогда

// Для документов РасходнаяНакладная регистрация изменений
// для узла производится только при совпадении складов узла и накладной
// Выбираем документы РасходнаяНакладная по складу узла
Запрос = Новый Запрос("ВЫБРАТЬ
|Ссылка
|ИЗ
|Документ.РасходнаяНакладная
|ГДЕ
|Склад = &Склад");
Запрос.УстановитьПараметр("Склад", Узел.Склад);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл

// регистрируем изменение документа для узла
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Выборка.Ссылка);
КонецЦикла;
ИначеЕсли ЭлементСостава.Метаданные = Метаданные.РегистрыНакопления.УчетНоменклатуры Тогда

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

// Создаем набор записей регистра с отбором по регистратору
НаборЗаписей = РегистрыНакопления.УчетНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);

// регистрируем изменения набора записей для узла
ПланыОбмена.ЗарегистрироватьИзменения(Узел, НаборЗаписей);
КонецЦикла;
Иначе

// Регистрация изменений всех данных объекта для узла
ПланыОбмена.ЗарегистрироватьИзменения(Узел, ЭлементСостава.Метаданные);
КонецЕсли;
КонецЦикла; // обход состава плана обмена
КонецЕсли;

КонецПроцедуры

В случае если в качестве второго параметра передается значение Ложь, расходные накладные и записи регистра накопления регистрируются как измененные только в случае совпадения склада со складом, определенным в узле плана обмена. Все остальные данные регистрируются обычным образом.
Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq82/view/1340.html