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

09.10.12

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

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

Скачать файлы

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

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! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 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 36520 руб.

04.08.2015    159706    364    267    

345

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 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 22572 руб.

12.06.2017    134954    721    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 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 27720 руб.

15.04.2019    68426    179    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 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 34760 руб.

03.12.2020    34173    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 25200 руб.

23.07.2020    46303    196    64    

158

Перенос данных из Парус 10 в ЗГУ ред.3

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9214    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20257    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 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 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231428    124    327    

296
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. m_gin 46 11.10.12 16:36 Сейчас в теме
Уважаемый, Олег, мне очень понравилась Ваша идея дать пользователям одну обработку для обмена данными между конфигурациями.
И сейчас пытаюсь реализовать этот подход для обмена между 1с 7.7 БП и 1с 8.2 КА.
Возникло вот такое затруднение:
Один из параметров, который надо прередать обработке, выгружающей из семерки (V77Exp.ert), - это ТаблицаНастройкиПараметров.
Подскажите, пожалуйста, какое у него должно быть значение.
Или направьте в какую сторону копать.
3. Oleg_nsk 277 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 277 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 277 12.10.12 14:30 Сейчас в теме
(7) mixa_gr, Смотрите правила обмена. Там в глобальном обработчике "При выгрузке объекта" смотрится есть ли выгружаемый объект в массиве "Документы".
9. dimk@a 25.11.12 17:33 Сейчас в теме
Oleg_nsk, спасибо! Выручила ваша обработка - как раз собирался делать нечто подобное, но решил сперва посмотреть на инфостарте ))
Только вот параметры передать не удалось - в самой обработке в процедуре ВыполнитьЗагрузку() все переданные мною параметры очищаются. Прописал запрос параметров в обработчике ПередВыгрузкойДанных() через функцию ВвестиЗначение().
10. Жолтокнижниг 258 18.12.12 16:49 Сейчас в теме
Идея хороша, реализация не очень, не универсально
Если Параметры.Документы.Найти(Объект) = Неопределено Тогда
	Отказ = Истина;
Иначе
	Сообщить("Выгружается документ: "+Объект);
КонецЕсли;
11. beard1 20.02.13 01:08 Сейчас в теме
Обработка.Параметры.Вставить("Документы",СписокДок);


Ткни носом, будь ласка, где описать параметр Документы... :(
12. Oleg_nsk 277 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 277 21.02.13 07:57 Сейчас в теме
(13) beard1, Может быть, но построитель уходит в прошлое и у меня к нему личная неприязнь. Всё новое создается на СКД. Думаю и универсальную обработку со временем перепишут. Я недавно другую реализацию делал. Выбор периода на форме и в табличной части много видов документов и флажок у каждой строки "отдельный выбор". Пользователь может выгрузить все доки за период или установить флажок и сам накидать в список доки определенного вида которые хочет. Везде у всех потребности разные. Там как раз пришлось построитель использовать.
35. al_zzz 309 09.02.20 09:34 Сейчас в теме
(14) У меня тоже к нему личная неприязнь. Но как вы заблуждались в своем 2013-ом!)))
Anchoret; Diyversus; +2 Ответить
15. beard1 25.02.13 19:43 Сейчас в теме
Спасибо! Наверное, самый красивый способ для данной задачи!
Можно ли применить такой подход для 77? Или там как-то по другому?
17. Oleg_nsk 277 28.02.13 07:55 Сейчас в теме
(15) beard1, По 77 не скажу. Эта платформа давно подзабылась
(16) LexSeIch, Спасибо
16. LexSeIch 210 27.02.13 12:21 Сейчас в теме
Мир этому дому! Прекрасный вариант реализации оболочки для пользователей, которым не надо заморачиваться выбором параметров.
18. beard1 28.02.13 09:21 Сейчас в теме
По 77 не скажу


Разобрался с 7.7. Не так красиво там получается, но работает.
25. Xershi 1475 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 35 18.04.13 12:52 Сейчас в теме
Вот то что доктор прописал. Спасибо. Плюсую
22. tgr123 26 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 1475 05.02.15 13:32 Сейчас в теме
Тоже разобрался с синтаксисом.
В глобальном модуле, когда заходит бот написал
ОткрытьФорму("Обработка.МояОбработка");

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

Хочу передать определенный список объектов, которые нужно выгрузить..
28. ITEkb 29.02.16 15:15 Сейчас в теме
Прошел год.. и я снова вернулся к тому же вопросу :-)
29. Xershi 1475 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 не передается. Как вы решили эту проблему?
Оставьте свое сообщение