HelpF.pro

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

Для ручной регистрации изменений можно в модуле объекта (документа) определить следующий обработчик события
Код 1C v 8.х
 Процедура ПередЗаписью(Отказ)
Узел=ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");
Объект.ОбменДанными.Получатели.Удалить(Узел);
КонецПроцедуры

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

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

// Регистрация изменений для выбранных узлов
Пока Выборка.Следующий() Цикл
ОбменДанными.Получатели.Добавить(Выборка.Ссылка);
КонецЦикла;
КонецПроцедуры

Обе рассмотренные процедуры одновременно решают две задачи:
Регистрируют изменения для узла, у которого реквизит Склад совпадает со складом, указанным в документе.
Производят проверку (для ранее существовавших документов), не изменился ли склад.
Если склад изменился, то производится регистрация изменения для узла, значение реквизита Склад которого соответствует старому значению документа (хранимому на момент проверки в информационной базе). Далее в момент выгрузки изменений данная регистрация может быть «подменена» на объект УдалениеОбъекта, что приведет к удалению накладной, «не свойственной» узлу.
Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1339.html