К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Как программно передать параметры отбора в УниверсальныйОбменДанными.XML

Гость
0 - 20.11.2012 - 07:15
Здравствуйте! Есть конфигурация Бухгалтерия 2.0 и самописанная на управляемых формах. Есть правило обмена, работающие через Универсальный обмен данными. Выгружается только справочник контрагенты. В ручном режиме все отлично, но необходимо чтобы при записи элемента справочника Контрагенты, он выгружался автоматом. От сюда вопрос, как установить параметры отбора по конкретному контрагенту? На форме обработки это реквизит ПостроительОтбор, Данные типа ПостроительОтчета. Сама выгрузка работает вот простой код, как в него добавить параметры?

ОбработкаВыгрузка = Обработки.УниверсальныйОбменДаннымиXML;
Выгрузка = ОбработкаВыгрузка.Создать();
Выгрузка.ИмяФайлаПравилОбмена = "d:\ПравилаОбменаДанными.xml";
Выгрузка.ИмяФайлаОбмена = "d:\Контрагенты.xml";
Выгрузка.ЗагрузитьПравилаОбмена();
//
Отбор
//
Выгрузка.ВыполнитьВыгрузку();



Гость
1 - 17.01.2013 - 16:58
Сейчас возникла примерно та же задача : как передать параметры отбора?
Да еще и следующая : на форме обработки, кот-я вызывается, есть реквизит типа "Дерево значений". Как передать параметры для заполнения этого реквизита ?
Буду признателен, если поделишься опытом. )))
Гость
2 - 17.01.2013 - 17:23
Для регистрации измененных объектов существуют ПланыОбмена.
А код такой:

Процедура ВыполнитьОбмен()
......
ОбменДанными = Обработки.УниверсальныйОбменДаннымиXML.Создать();
//Здесь заполняем нужные реквизиты

//Установка узла обмена
Для Каждого СтрокаПравилВыгрузки Из ОбменДанными.ТаблицаПравилВыгрузки.Строки Цикла УстановитьУзелОбмена(СтрокаПравилВыгрузки);
КонецЦикла;
............
КонецПроцедуры

Процедура УстановитьУзелОбмена(СтрокиДереваПравилВыгрузки);

_Имя = СтрокиДереваПравилВыгрузки.Имя;

Если СтрокиДереваПравилВыгрузки.Строки.Количество() = 0 Тогда
Если НЕ СтрокиДереваПравилВыгрузки.ЭтоГруппа Тогда
Если СоставПланаОбмена.Найти(СтрокиДереваПравилВыгрузки .Имя) <> Неопределено Тогда
Если СоставПланаОбменаИсключение.Найти(СтрокиДереваПрав илВыгрузки.Имя) = Неопределено Тогда
СтрокиДереваПравилВыгрузки.СсылкаНаУзелОбмена = УзелОбмена;
КонецЕсли;
Иначе
СтрокиДереваПравилВыгрузки.Включить = 0;
КонецЕсли;
КонецЕсли;
Возврат;
Иначе
Для Каждого СтрокаДереваПравил Из СтрокиДереваПравилВыгрузки.Строки Цикл
Если НЕ СтрокаДереваПравил.ЭтоГруппа Тогда
Если СоставПланаОбмена.Найти(СтрокаДереваПравил.Имя) <> Неопределено Тогда
Если СоставПланаОбменаИсключение.Найти(СтрокаДереваПрав ил.Имя) = Неопределено Тогда
СтрокаДереваПравил.СсылкаНаУзелОбмена = УзелОбмена;
КонецЕсли;
Иначе
СтрокаДереваПравил.Включить = 0;
КонецЕсли;
КонецЕсли;
УстановитьУзелОбмена(СтрокаДереваПравил);
КонецЦикла;
КонецЕсли;

КонецПроцедуры
Гость
3 - 17.01.2013 - 18:13
http://its.1c.ru/db/bspdoc#content:34:1
Гость
4 - 17.01.2013 - 18:53
(3) Ненавязчивая реклама ))))
Гость
5 - 18.01.2013 - 17:21
(2) Спасибо... Может я не точно сформулировал проблему ? Есть типовая выгрузка/загрузка V8Exchan82.epf, кот-я поставляется с КД. В ней есть реквизит "ДеревоМетаданны" (тип - ДеревоЗначений).Он инициализируется при открытии обработки. Пользователи будут запускать мою обработку (им не под силу справиться с таким большим количеством параметров в типовой).Мне нужно из моей обработки передать в эту типовую необходимые параметры.Со всеми реквизитами, кроме ДереваМетаданных, все понятно . А ДеревоМетаданных мне нужно принициализировать в моей (или в типовой) обработке так, чтобы пользователь об этом даже не задумывался.
В моей обработке :

Процедура КнопкаВыполнитьНажатие(Кнопка)
Обработка = ВнешниеОбработки.Создать("C:\Program Files\1cv81\tmplts\1c\Conversion\2_1_5_1\ВыгрузкаЗ агрузкаДанныхXML82.epf");

Обработка.ИмяФайлаВыгрузки = ИмяФайлаВыгрузки;
Обработка.ДатаНачала = ДатаНачала;
Обработка.ДатаОкончания = ДатаОкончания;
Обработка.ПриЗагрузкеИспользоватьРежимОбменаДанным и = ПриЗагрузкеИспользоватьРежимОбменаДанными;
Обработка.ТипВыгрузкиПериодическихРегистров = 0;
Обработка.ВыполнитьВыгрузку(ИмяФайлаВыгрузки);
КонецПРоцедуры

В типовой в Процедуру "ВЫполнитьВыгрузку" дописал :

Процедура ВыполнитьВыгрузку(ИмяФайла, ТолькоПроверкаНедопустимыхСимволов = Ложь) Экспорт
ОбойтиУровеньДерева(ДеревоМетаданных.строки); //G
......
КонецПроцедуры


Процедура ОбойтиУровеньДерева(Строки)
СписокТипов = Новый СписокЗначений;

СписокТипов.Добавить("ПоступлениеТоваровУслуг");
СписокТипов.Добавить("РеализацияТоваровУслуг");
СписокТипов.Добавить("ТребованиеНакладная");
СписокТипов.Добавить("ОприходованиеТоваров");
СписокТипов.Добавить("СписаниеТоваров");
СписокТипов.Добавить("ПоступлениеНаРасчетныйСчет" );
СписокТипов.Добавить("СписаниеСРасчетногоСчета" );
СписокТипов.Добавить("ПриходныйКассовыйОрдер" );
СписокТипов.Добавить("РасходныйКассовыйОрдер" );


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

КонецПроцедуры
Гость
6 - 18.01.2013 - 17:22
Выдается сообщение "НЕ задан состав"


К списку вопросов






Copyright ©, Все права защищены