|
Универсальный обмен xml программно | ☑ | ||
---|---|---|---|---|
0
Gossar1C
26.02.15
✎
14:26
|
Здравствуйте. Делаю программно выгрузку номенклатуры из одной базы. Хочу также через com соединение не открывая вторую базу сделать загрузку. Подскажите как это можно реализовать? Заранее благодарю!
ОбъектПодключения = ПодключитсяКИнформационнойБазе(СтруктураПодключения); //////////////////////////////////////////////////////////////////////////////////////////////////////////////// Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать(); Обработка.РежимОбмена = "Выгрузка"; Обработка.ВыводВОкноСообщенийИнформационныхСообщений = Истина; Обработка.ИмяФайлаПравилОбмена = "\\staff\Правила.xml"; Обработка.ИмяФайлаОбмена = "\\staff\ВыгрузкаTrade.xml"; Обработка.ЗагрузитьПравилаОбмена(); ВременнаяТаблицаПравил = Обработка.ТаблицаПравилВыгрузки.Скопировать(); Для Каждого СтрокаУровня2 Из ВременнаяТаблицаПравил.Строки[0].Строки Цикл Наименование = СтрокаУровня2.Имя; Если Наименование <> "ПеремещениеТоваров00001" Тогда СтрокаУровня2.Включить = 0; КонецЕсли; КонецЦикла; //Сдесь вы определяете искомое правило выгрузки которое нужно оставить включенным на определенной ветке (сами можите варьировать чего и сколько) Для Каждого СтрокаУровня2 Из ВременнаяТаблицаПравил.Строки[0].Строки Цикл Наименование = СтрокаУровня2.Имя; Если Наименование = "Номенклатура" Тогда СтрокаУровня2.Включить = 1; Иначе СтрокаУровня2.Включить = 0; КонецЕсли; КонецЦикла; Обработка.ТаблицаПравилВыгрузки = ВременнаяТаблицаПравил.Скопировать(); Для Каждого СтрокаУровня2 Из ВременнаяТаблицаПравил.Строки[0].Строки Цикл Наименование = СтрокаУровня2.Имя; Если Наименование = "Номенклатура" Тогда ТекущееПВД = СтрокаУровня2; Построитель = Новый ПостроительОтчета; //Если ТекущееПВД.ИмяОбъектаДляЗапроса <> Неопределено Тогда // // Построитель.Текст = // "ВЫБРАТЬ Разрешенные _.* ИЗ " + ТекущееПВД.ИмяОбъектаДляЗапроса + " КАК _ // | // | // |{ГДЕ _.Ссылка.* КАК " + СтрЗаменить(ТекущееПВД.ИмяОбъектаДляЗапроса, ".", "_") + "}"; //КонецЕсли; Построитель.Текст = "ВЫБРАТЬ Разрешенные _.* ИЗ Справочник.Номенклатура КАК _ {ГДЕ _.Ссылка.* КАК Справочник_Номенклатура}"; Отбор = Построитель.Отбор; Если Отбор.Найти("Справочник_Номенклатура") = Неопределено Тогда Отбор.Добавить("Справочник_Номенклатура"); КонецЕсли; Массив = Новый Массив; Массив.Добавить(Тип("СправочникСсылка.Номенклатура")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , ); Отбор["Справочник_Номенклатура"].Использование = Истина; Отбор["Справочник_Номенклатура"].Значение = Группа; Отбор["Справочник_Номенклатура"].ВидСравнения = ВидСравнения.ВИерархии; ДоступностьПостроителя = Истина; Если Построитель.Отбор.Количество() > 0 Тогда ТекущееПВД.НастройкиПостроителя = Построитель.ПолучитьНастройки(); ТекущееПВД.ИспользоватьОтбор = ИСТИНА; КонецЕсли; КонецЕсли; КонецЦикла; Обработка.ТаблицаПравилВыгрузки = ВременнаяТаблицаПравил.Скопировать(); //Ну и собственно запускаем саму выгрузку и получаем файл для загрузки: Обработка.АрхивироватьФайл = Истина; Обработка.ВыполнитьВыгрузку(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// МассивФайлов = НайтиФайлы("\\staff\ВыгрузкаTrade.zip"); Для Каждого Стм Из МассивФайлов Цикл Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать(); Обработка.ИмяФайлаОбмена = Стм.ПолноеИмя; Обработка.РежимОбмена = "Загрузка"; Обработка.ЗаписыватьРегистрыНаборамиЗаписей = Истина; Обработка.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты = Истина; Обработка.ЗагружатьДанныеВРежимеОбмена = Истина; Обработка.ВыполнитьЗагрузку(); УдалитьФайлы(Стм.ПолноеИмя); КонецЦикла; |
|||
1
Gossar1C
26.02.15
✎
14:43
|
проблему решил, если кому интересно все очень просто оказалось :)
МассивФайлов = НайтиФайлы("\\staff\ВыгрузкаTrade.zip"); Для Каждого Стм Из МассивФайлов Цикл МенеджерОбработки = ОбъектПодключения.Обработки.УниверсальныйОбменДаннымиXML; ОбработкаCOM = МенеджерОбработки.Создать(); ОбработкаCOM.ИмяФайлаОбмена = Стм.ПолноеИмя; ОбработкаCOM.РежимОбмена = "Загрузка"; ОбработкаCOM.ЗаписыватьРегистрыНаборамиЗаписей = Истина; ОбработкаCOM.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты = Истина; ОбработкаCOM.ЗагружатьДанныеВРежимеОбмена = Истина; ОбработкаCOM.ВыполнитьЗагрузку(); УдалитьФайлы(Стм.ПолноеИмя); КонецЦикла; |
|||
2
zippygrill
26.02.15
✎
14:49
|
А что не напрямую (онлайн)?
|
|||
3
zippygrill
26.02.15
✎
14:51
|
Например у меня, в одну сторону выгружаю в файл на общий диск и через 10 минут из другой программы читаю выгруженный xml.
А обратно онлайн настроил. |
|||
4
Gossar1C
26.02.15
✎
15:21
|
(2) так в данном случае я и произвожу онлайн обмен из одной базы из одной обработки + по итогам переноса я снова получаю иерархию номенклатуры другой базы дабы видеть что номенклатура перенеслась
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |