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

09.10.12

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

В статье рассказывается о быстром написании обработок для выгрузки и загрузки данных, используя методы обработки "Универсальный обмен данными в формате xml".

Скачать исходный код

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

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

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

 

2. Выгрузка

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

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

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


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

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

КонецПроцедуры

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


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

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

КонецПроцедуры

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

 

3. Загрузка

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

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


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

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

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

См. также.

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    137343    748    292    

399

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 руб.

04.08.2015    161916    365    272    

357

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 руб.

15.04.2019    69767    172    143    

113

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3.87.x и УТ 11.5.16.x

28000 руб.

23.07.2020    47912    207    64    

169

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

14580 руб.

18.02.2016    184036    570    509    

514

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 руб.

03.12.2020    34995    85    59    

82

Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

45650 руб.

31.10.2014    233566    91    329    

299

Перенос данных 1C Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Перенос данных из УПП 1.3 в УНФ | из КА 1.1 в УНФ | из УТ 10.3 в УНФ | В продаже с 2019г. | Воспользовались более 32 предприятий! | Продукт включен в реестр российского ПО | Перенос разработан в формате КД 2 (правила конвертации объектов) | Выгружаются все возможные виды документов, начальных остатков и вся нормативно-справочная информация | Есть фильтр по организациям при выгрузке данных | Есть несколько алгоритмов выгрузки начальных остатков товаров на выбор | Оперативно обновляем перенос при выходе новых релизов 1С | Можете проверить перед покупкой на своем сервере! Оставьте заявку, и мы договоримся об удобном времени подключения нашего специалиста.

38100 руб.

17.10.2019    38015    36    87    

43
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. m_gin 46 11.10.12 16:36 Сейчас в теме
Уважаемый, Олег, мне очень понравилась Ваша идея дать пользователям одну обработку для обмена данными между конфигурациями.
И сейчас пытаюсь реализовать этот подход для обмена между 1с 7.7 БП и 1с 8.2 КА.
Возникло вот такое затруднение:
Один из параметров, который надо прередать обработке, выгружающей из семерки (V77Exp.ert), - это ТаблицаНастройкиПараметров.
Подскажите, пожалуйста, какое у него должно быть значение.
Или направьте в какую сторону копать.
3. Oleg_nsk 279 12.10.12 06:41 Сейчас в теме
(1) Таблица настройки параметров заполняется также как обычная таблица в 7.7. У нее пять колонок: Имя, Наименование, ТипЗначения, ВидЗначения, Значение. Подробности заполнения можете найти в коде V77Exp.ert.
4. m_gin 46 12.10.12 09:10 Сейчас в теме
(3) Oleg_nsk, параметр ТаблицаНастройкиПараметров - это оказывается Список значений.
Еще пока мне не понятно, какие же значения он предназначен передавать обработке V77Exp.ert.
Но она сработала и с пустым списком.
5. Oleg_nsk 279 12.10.12 11:33 Сейчас в теме
(4) Может мы говорим о разном, но ТаблицаНастройкиПараметров в Универсальном обмене это однозначно таблица значений, а не список.
6. m_gin 46 12.10.12 11:42 Сейчас в теме
(5) Oleg_nsk, Вы правы в обработке есть ТаблицаНастройкиПараметров - это таблица.
При открытии обработки передается параметр, который также называется:
ЗнТаблицаНастройкиПараметров= СписокПараметров.Получить("ТаблицаНастройкиПараметров");

Это список, его содержимое потом заносится в таблицу:
Для НомерСтрокиСписка = 1 По ЗнТаблицаНастройкиПараметров.РазмерСписка() Цикл
  ЗнТаблицаНастройкиПараметров.ПолучитьЗначение(НомерСтрокиСписка, ПредставлениеЗначения);
  Если ТаблицаНастройкиПараметров.НайтиЗначение(ПредставлениеЗначения,СтрокаТаблицы,1) = 1 Тогда
    ТаблицаНастройкиПараметров.Значение = ЗнТаблицаНастройкиПараметров.Получить(ПредставлениеЗначения);
  КонецЕсли;
КонецЦикла;
2. alexware 11.10.12 19:25 Сейчас в теме
Полезная статья. Давать пользователям в пользование "Универсальный обмен данными в формате XML" - плохая идея. А вот в такой оболочке - самое то!
jif; dedicated; +2 Ответить
7. mixa_gr 54 12.10.12 13:37 Сейчас в теме
Подскажите, как передать список документов для отбора при выгрузке.
не понятно как работает строка

Обработка.Параметры.Вставить("Документы",СписокДок);
8. Oleg_nsk 279 12.10.12 14:30 Сейчас в теме
(7) mixa_gr, Смотрите правила обмена. Там в глобальном обработчике "При выгрузке объекта" смотрится есть ли выгружаемый объект в массиве "Документы".
9. dimk@a 25.11.12 17:33 Сейчас в теме
Oleg_nsk, спасибо! Выручила ваша обработка - как раз собирался делать нечто подобное, но решил сперва посмотреть на инфостарте ))
Только вот параметры передать не удалось - в самой обработке в процедуре ВыполнитьЗагрузку() все переданные мною параметры очищаются. Прописал запрос параметров в обработчике ПередВыгрузкойДанных() через функцию ВвестиЗначение().
10. Жолтокнижниг 259 18.12.12 16:49 Сейчас в теме
Идея хороша, реализация не очень, не универсально
Если Параметры.Документы.Найти(Объект) = Неопределено Тогда
	Отказ = Истина;
Иначе
	Сообщить("Выгружается документ: "+Объект);
КонецЕсли;
11. beard1 20.02.13 01:08 Сейчас в теме
Обработка.Параметры.Вставить("Документы",СписокДок);


Ткни носом, будь ласка, где описать параметр Документы... :(
12. Oleg_nsk 279 20.02.13 08:51 Сейчас в теме
(11) beard1, Описывать его не надо. Он будет существовать после загрузки правил обмена. Надо к нему обращаться в правилах обмена в глобальном обработчике "Перед выгрузкой объекта" и там если объект не найден в переданном массиве документов, то писать "Отказ = Истина".
13. beard1 21.02.13 02:38 Сейчас в теме
Надо к нему обращаться в правилах обмена в глобальном обработчике "Перед выгрузкой объекта"

Спасибо! Работает. Изящьненько...
У меня первые шаги в КД. Я так понял, что глобальный обработчик правил обмена , это Конвертация_ПередВыгрузкойОбъекта, и сначала происходит отбор всех объектов по дате, а в обработчике "Перед выгрузкой объекта" накладывается фильтр по списку документов.

Другими словами, если в периоде отбора будет много документов, то может быть оптимальнее использовать метод описанный здесь http://www.forum.mista.ru/topic.php?id=474869 ? Или без разницы? Вопрос так, теоретический...
14. Oleg_nsk 279 21.02.13 07:57 Сейчас в теме
(13) beard1, Может быть, но построитель уходит в прошлое и у меня к нему личная неприязнь. Всё новое создается на СКД. Думаю и универсальную обработку со временем перепишут. Я недавно другую реализацию делал. Выбор периода на форме и в табличной части много видов документов и флажок у каждой строки "отдельный выбор". Пользователь может выгрузить все доки за период или установить флажок и сам накидать в список доки определенного вида которые хочет. Везде у всех потребности разные. Там как раз пришлось построитель использовать.
35. al_zzz 313 09.02.20 09:34 Сейчас в теме
(14) У меня тоже к нему личная неприязнь. Но как вы заблуждались в своем 2013-ом!)))
Anchoret; Diyversus; +2 Ответить
15. beard1 25.02.13 19:43 Сейчас в теме
Спасибо! Наверное, самый красивый способ для данной задачи!
Можно ли применить такой подход для 77? Или там как-то по другому?
17. Oleg_nsk 279 28.02.13 07:55 Сейчас в теме
(15) beard1, По 77 не скажу. Эта платформа давно подзабылась
(16) LexSeIch, Спасибо
16. LexSeIch 211 27.02.13 12:21 Сейчас в теме
Мир этому дому! Прекрасный вариант реализации оболочки для пользователей, которым не надо заморачиваться выбором параметров.
18. beard1 28.02.13 09:21 Сейчас в теме
По 77 не скажу


Разобрался с 7.7. Не так красиво там получается, но работает.
25. Xershi 1497 05.02.15 11:43 Сейчас в теме
(18) beard1, покажи решение, нужен код для 7.7. Хочу выгружать ночью данные из 7.7.
19. ArtemiFD 42 10.03.13 10:45 Сейчас в теме
Спасибо, очень полезная статья. Воспльзовался полученными знаниями в своей обработке http://infostart.ru/public/177099/
20. Ксакеп 63 26.03.13 09:47 Сейчас в теме
Спасибо за замечательную идею =)
С выгрузкой разобрался без проблем, все работает как надо. А вот загрузка идет в управляемоем приложение, чувствую предстоит покопаться прежде чем удастся все реализовать.
21. aochkasov 36 18.04.13 12:52 Сейчас в теме
Вот то что доктор прописал. Спасибо. Плюсую
22. tgr123 32 03.12.13 12:08 Сейчас в теме
Спасибо за статью. Использовал идею для своей обработки. Отличие - непосредственная выгрузка в базу-приемник, без выгрузки промежуточного файла XML и обработки для загрузки в базу-приемник. Получилась действительно простая выгрузка в три клика. http://infostart.ru/public/238944/
23. kurmanov 103 15.02.14 13:55 Сейчас в теме
Спасибо, помогло решить проблему.
24. relanium86 14 27.02.14 09:31 Сейчас в теме
Спасибо за полезную информацию
26. Xershi 1497 05.02.15 13:32 Сейчас в теме
Тоже разобрался с синтаксисом.
В глобальном модуле, когда заходит бот написал
ОткрытьФорму("Обработка.МояОбработка");

А в коде обработки уже написал при открытии формы этим ботом выполнить выгрузку.
27. ITEkb 09.02.15 12:17 Сейчас в теме
Вроде обсудили, а ответ не понятен.
В обработку передается таблица настройки параметров.
Она в виде списка значений, но в коде, есть и как список значений, и как таблица.
Валится с ошибками.

Хочу передать определенный список объектов, которые нужно выгрузить..
28. ITEkb 29.02.16 15:15 Сейчас в теме
Прошел год.. и я снова вернулся к тому же вопросу :-)
29. Xershi 1497 29.02.16 15:16 Сейчас в теме
(28) OrsoBear, спустя год, он понятнее не стал!
30. Sibiande_ 26.04.16 15:56 Сейчас в теме
Внешний файл не сохранён.
Обработка универсальный обмен данными XML модуль объекта 2172: Тип не определён (СправочникСсылкаВидыНоменклатуры)
31. ITEkb 01.11.16 15:38 Сейчас в теме
Вы будете смеяться. Но только спустя 2 года меня в полной мере достала эта тема. Потому сел, и детально разобрался. Частично воспользовался фрагментами кода.
Доработал семерочную выгрузку, чтобы можно было в нее закидывать параметры, изначально функционал беден.
С загрузкой оказалось все просто. Разве что не устраивают бесполезные сообщения с началом, окончанием загрузки, и с количеством объектов. Пользователям это ни о чем не говорит. Пришлось кидать во внешнюю обработку, и переписывать уведомления под пожелания трудящихся.
33. vis_tmp 32 26.06.19 10:46 Сейчас в теме
(31)Можешь дать обработку для 7.7 ?
34. ITEkb 26.06.19 12:05 Сейчас в теме
(33) Увы. Базы перевел на восьмерку. Старые разработки удалил за ненадобностью.
32. fieryfist 15 03.02.18 15:48 Сейчас в теме
При организации обмена подобным способом возникает проблема при удалении объектов. Например из ИБ1 передали в ИБ2 некий объект, затем в ИБ1 его удалили, в итоге в ИБ2 объект остался и удален не будет, т.к. при последующих выгрузках информация о нем из ИБ1 не передается. Как вы решили эту проблему?
Оставьте свое сообщение