====== Работа с Планом Обмена ====== ===== Поиск и создание узла обмена для ПланаОбмена ===== Функция ПолучитьУзелОбменаОтметокСБУХ() ЭтотУзел = ПланыОбмена.ОтметкиНДЗаказовКлиентовВБуХ.ЭтотУзел(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОтметкиНДЗаказовКлиентовВБуХ.Ссылка, | ОтметкиНДЗаказовКлиентовВБуХ.Наименование |ИЗ | ПланОбмена.ОтметкиНДЗаказовКлиентовВБуХ КАК ОтметкиНДЗаказовКлиентовВБуХ |ГДЕ | ОтметкиНДЗаказовКлиентовВБуХ.Ссылка <> &ЭтотУзел"; Запрос.УстановитьПараметр("ЭтотУзел", ЭтотУзел); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда УзелОтметкиНДЗаказовКлиентовВБуХ = ПланыОбмена.ОтметкиНДЗаказовКлиентовВБуХ.СоздатьУзел(); УзелОтметкиНДЗаказовКлиентовВБуХ.Наименование = "УзелОтметкиНДЗаказовКлиентовВБуХ"; УзелОтметкиНДЗаказовКлиентовВБуХ.Код = 1; УзелОтметкиНДЗаказовКлиентовВБуХ.Записать(); Узел = УзелОтметкиНДЗаказовКлиентовВБуХ.Ссылка; Иначе Выборка = Результат.Выбрать(); Выборка.Следующий(); Узел = Выборка.Ссылка; КонецЕсли; Возврат Узел; КонецФункции ===== Програмная поставка на регистрацию в плане обменов ===== **Вариант 1** ПланыОбменаМенеджер.ЗарегистрироватьИзменения(Узел, Метаданные.Справочники.Номенклатура); или Узел = ПланыОбмена.ОбменНоменклатурой_Тест.НайтиПоКоду("НазваниеПланаОбмена"); ПланыОбмена.ЗарегистрироватьИзменения(Узел, Источник); Для регистрации конкретных данных различных типов необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные либо сами данные, либо ссылку на них. Например узел = ПланыОбмена.ОбменУправлениеТорговлей31Бухгалтерия20.НайтиПоНаименованию("Бухгалтерия для Украины, редакция 2.0"); ОбменДаннымиСобытия.ЗарегистрироватьИзмененияДанных(узел, Источник.ссылка, истина); **Вариант 2** Процедура ЗарегистрироватьВПланОбменОтметкиНДЗаказовКлиентовВБуХ(ТекущийЗаказ) Экспорт ПланыОбмена.ЗарегистрироватьИзменения(ПолучитьУзелОбменаОтметокСБУХ(), ТекущийЗаказ); КонецПроцедуры ===== Програмное чтение изменений с плана обмена ===== **Вариант 1** Процедура ПолучитьИзПланаОбменаОтметкиНДЗаказовКлиентовВБуХ(ТекущийЗаказ) Экспорт Узел = ПланыОбмена.ОтметкиНДЗаказовКлиентовВБуХ.НайтиПоНаименованию("ОтметкиНДЗаказовКлиентовВБуХ",Истина); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ВременнаяЗаписьXML = Новый ЗаписьXML(); ВременнаяЗаписьXML.УстановитьСтроку(); ЗаписьСообщения.НачатьЗапись(ВременнаяЗаписьXML, Узел); Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗаписьСообщения.НомерСообщения); ЗаписьСообщения.ЗакончитьЗапись(); КонецПроцедуры **Вариант 2** Для формирования запроса к объекту с изменениями через конструктор необходимо включить опцию отображения таблиц с изменениями {{ ::snimok_ehkrana_2021-05-13_101757.png |}} узел = ПолучитьУзелДляРегистрацииБУХ(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ФизическиеЛицаИзменения.Ссылка, | ФизическиеЛицаИзменения.НомерСообщения |ИЗ | Справочник.ФизическиеЛица.Изменения КАК ФизическиеЛицаИзменения |ГДЕ | ФизическиеЛицаИзменения.Узел = &Узел"; Запрос.УстановитьПараметр("Узел", узел); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Функция ПолучитьУзелДляРегистрацииБУХ() УзелБух = Неопределено; ВыборкаУзлов = ПланыОбмена.ОбменЗУП21Бухгалтерия21.Выбрать(); Пока ВыборкаУзлов.Следующий() Цикл Если ВыборкаУзлов.Ссылка=ПланыОбмена.ОбменЗУП21Бухгалтерия21.ЭтотУзел() Тогда Продолжить; КонецЕсли; УзелБух = ВыборкаУзлов.Ссылка; КонецЦикла; Возврат УзелБух; КонецФункции ===== Програмная очистка изменений с плана обмена ===== Процедура ОчиститьВПланОбменаОтметкиНДЗаказовКлиентовВБуХ(ТекущийЗаказ) Экспорт Узел = ПланыОбмена.ОтметкиНДЗаказовКлиентовВБуХ.НайтиПоНаименованию("ОтметкиНДЗаказовКлиентовВБуХ",Истина); ПланыОбмена.УдалитьРегистрациюИзменений(Узел,ТекущийЗаказ); КонецПроцедуры