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