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