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

09.10.12

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
WorkFiles
.zip 23,21Kb
306
306 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

55778 50200 руб.

04.08.2015    167300    340    278    

376

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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 руб.

12.06.2017    142262    803    297    

423

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

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

35000 руб.

15.12.2021    24375    172    51    

131

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

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

35000 руб.

23.07.2020    52028    229    72    

187

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171456    306    257    

382

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    36880    95    66    

92

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    81036    315    250    

268

Перенос данных 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, почту.

15300 руб.

18.02.2016    187224    591    513    

529
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 302 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 1551 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 1551 05.02.15 13:32 Сейчас в теме
Тоже разобрался с синтаксисом.
В глобальном модуле, когда заходит бот написал
ОткрытьФорму("Обработка.МояОбработка");

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

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