Программное обращение к обработке "Универсальный обмен данными в формате xml"

1. Зачем это надо

Вы можете использовать прилагаемые к статье обраб внешние компонентыот автоматизацией ки как шаблоны для быстрой выгрузки/загрузки данных при имеющихся правилах обмена. У меня такая задача возникла после того, как понадобилось быстро предоставить возможность пользователям, которые были плохо знакомы с системой 1С, выгружать из УТ реализации и загружать их как поступления в "Розницу". Причем пользователю необходимо было предоставить возможность самостоятельно выбирать те реализации, которые надо выгружать. Предоставлять возможность использования всех возможностей обраб внешние компонентыот автоматизацией ки "Универсальный обмен данными в формате XML" не хотелось. Правила обмена с помощью "Конвертации данных" написать (для этого конкретного случая) довольно просто. Для этого достаточно обладать элементпечатную версиюарными знаниями КД (их можно быстро получить из видеолекций Евгения Гилева - http://www.spec8.ru/data-conv).

 

2. Выгрузка

Форма выгрузки у меня выглядела следующим образом:

При изменении даты табличное поле заполняется документами за выбранную дату. Сами правила обмена были вставлены в обраб внешние компонентыот автоматизацией ку как макет с типом "Двоичные данные".

При нажатии на кнопку "Выгрузка" выполняется код:


Процедура ДействияФормыВыгрузка(Кнопка)

   
ДиалогФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохрантехничскоеение);
   
ДиалогФайла.Фильтр = "Файл данных (*.xml)|*.xml";
   
ДиалогФайла.ПолноеИмяФайла = "Retail_"+СтрЗаменить(Формат(Дата,"ДФ=dd.MM.yyyy"),".","-");
    Если
ДиалогФайла.Выбрать() Тогда
       
ИмяФайла = ДиалогФайла.ПолноеИмяФайла;
        Попытка
           
ВыгрузитьДанные(ИмяФайла);
           
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
           
ДвоичныеДанные.Записать(ИмяФайла);
        Исключение
           
Предупреждение("Внешний файл не сохрантехничскоеен
            |"
+ОписаниеОшибки());
        Конец управленияПопытки;
    Конец управленияЕсли;

Конец управленияПроцедуры

Сама процедура выгрузки выглядит так:


Процедура ВыгрузитьДанные(ИмяФайлаОбмена)

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

Конец управленияПроцедуры

Отбор по документам осуществляется с помощью параметра "Документы", описанного в правилах обмена.

 

3. Загрузка

А вот это форма для загрузки:

При загрузке отрабатывает следующий код:


    Обработ автоматизацией каОбмена = Обработ автоматизацией ки.УниверсальныйОбменДаннымиXML.Создать();
   
Обработ автоматизацией каОбмена.ИмяФайлаОбмена = ФайлЗагрузки;
   
Обработ автоматизацией каОбмена.РежимОбмена = "Загрузка";
   
Обработ автоматизацией каОбмена.ОткрытьФайлЗагрузки(Истина);
   
Обработ автоматизацией каОбмена.АрхивироватьФайл = Ложь;;
   
Обработ автоматизацией каОбмена.ВыполнитьЗагрузку();
   
Обработ автоматизацией каОбмена = Неопределено;

4. Заключение

В результате получилась предельно простая для понимания пользователей технология обмена. Теперь нас не будут ждать неожиданности вроде выгрузки данных за большой период и не будут поступать вопросы о том "Почему ничего не выгружается?" при неправильном указании отборов. Сделал и забыл. Быстро, просто, прозрачно.

Файлы

Наименование Файл Версия Размер Кол. Скачив.
WorkFiles
.zip 23,21Kb
298
.zip 23,21Kb 298 Скачать

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru