1с универсальный обмен данными в формате xml программно
Обработка "Универсальный обмен данными в формате XML" предназначена для загрузки и выгрузки данных в файл из любой конфигурации, реализованной на платформе 1С:Предприятие 8.
Режим работы
При использовании управляемой формы обработка имеет два режим работы:
1. На клиенте. При использовании этого режима файлы правил и загружаемых данных передаются с клиента на сервер, а файл выгружаемых данных передается с сервера на клиент. Пути к этим файлам, находящимся на клиенте, необходимо указывать в диалоговом окне непосредственно перед выполнением действия.
2. На сервере. В этом режиме файлы не передаются на клиентн и пути к ним необходимо указывать на сервере.
Примечание: Файл внешней обработки и файлы протоколов обмена всегда должны находиться на сервере вне зависимости от режима работы.
Обработка имеет четыре закладки
Выгрузка данных
Для осуществления выгрузки данных необходимо указать имя файла, в который будет осуществляться выгрузка данных и выбрать файл правил обмена. Правила обмена для любых конфигураций могут быть настроены в специализированной конфигурации "Конвертация данных, редакция 2".
Для выгрузки документов и записей независимых периодических регистров сведений необходимо указать период - "Дату начала" и "Дату окончания". Результирующий файл с выгруженными данными может быть сжат.
На закладке "Правила выгрузки данных" можно выбрать те типы объектов, которые должны выгружаться, настроить отборы для выборки объектов, либо указать узел обмена данными, для которого нужно выгружать данные.
На закладке "Параметры выгрузки" можно указать дополнительные параметры выгрузки данных.
На закладке "Комментарий" можно написать произвольный текст-комментарий, включаемый в файл обмена.
Загрузка данных
Для осуществления загрузки данных необходимо указать имя файла, из которого будет осуществляться загрузка данных.
Есть возможность настроить загрузку данных в транзакции. Для этого необходимо взвести флажок "Использовать транзакции" и указать количество элементов в одной транзакции при загрузке.
"Загружать данные в режиме обмена (ОбменДанными.Загрузка = Истина)" – если флаг установлен, то загрузка объектов будет выполнятся с установленным признаком загрузки. Это означает, что при записи объектов в базу данных будут отключены все платформенные и прикладные проверки. Исключение составляют документы, которые записываются в режиме проведения или отмены проведения. Проведение и отмена проведения документа выполняется всегда без установки режима загрузки, т.е. проверки будут выполняться.
Дополнительные настройки
Закладка служит для детальной настройки выгрузки и загрузки данных.
"Количество обработанных объектов для обновления статуса" – параметр служит для определения количества обработанных элементов перед изменением строки состояние загрузки/выгрузки
"Настройки выгрузки данных" – позволяют определить количество элементов обрабатываемых в одной транзакции при выгрузке данных, выгружать и обрабатывать только те объекты, на которые есть права доступа, настроить тип изменения регистрации для выгруженных объектов через планы обмена.
"Использовать транзакции при выгрузке для планов обмена" – флаг определяет режим использования транзакций при выгрузке данных при выборке изменений на узлах планов обмена. Если флаг установлен, то выгрузка данных будет выполняться в транзакции.
"Выгружать объекты на которые есть права доступа" – если флаг установлен, то выборка объектов информационной базы будет выполняться с учетом прав доступа текущего пользователя программы. Это предполагает использование литерала "РАЗРЕШЕННЫЕ" в тексте запроса для выборки данных.
"Изменения регистрации для узлов обмена после выгрузки" – поле определяет режим работы с регистрацией изменений данных после завершения выгрузки данных. Возможные значения:
Не удалять регистрацию – после выгрузки данных регистрация изменений на узле удалена не будет.
Полностью удалить регистрацию для узла обмена – после выгрузки данных регистрация изменений на узле будет полностью удалена.
Удалить регистрацию только для выгруженных метаданных – после выгрузки данных регистрация изменений на узле будет удалена только для объектов метаданных, которые были указаны к выгрузке.
"Имя файла, протокола обмена" – имя файла для вывода протокола процесса обмена данными.
"Протокол загрузки (для COM - соединения)" – имя файла для вывода протокола процесса обмена данными в базе-приемнике при обмене через COM-соединение. Важно: путь к файлу должен быть доступен с компьютера, на котором установлена база-приемник.
"Дописывать данные в протокол обмена" – если флаг установлен, то содержимое файла протокола обмена сохраняется, если файл протокола уже существует.
"Открывать файлы протоколов обмена после выполнения операций" – если флаг установлен, то после выполнения обмена данными файлы протоколов обмена будут автоматически открыты для просмотра.
Удаление данных
Закладка нужна только для разработчиков правил обмена. Позволяет удалять из информационной базы произвольные объекты.
Отладка выгрузки и загрузки данных
Обработка позволяет совершать отладку обработчиков событий и генерировать модуль отладки из файла-правил или файла-данных.
Включение режима отладки обработчиков выгрузки производится на закладке "Выгрузка данных" установкой флажка "Режим отладки обработчиков выгрузки". Соответственно, на закладке "Загрузка данных" включение режима отладки загрузки производится установкой флажка "Режим отладки обработчиков загрузки".
После установки режима отладки обработчиков станет доступной кнопка настройки отладки. По нажатию на эту кнопку откроется окно настройки.
Настройка отладки обработчиков выполняется в четыре шага:
Шаг 1: Выбор режима отладки алгоритмов
На первом шаге необходимо определиться с режимом отладки алгоритмов:
Без отладки алгоритмов
Вызывать алгоритмы как процедуры
Подставлять код алгоритмов по месту вызова
Первый режим удобно использовать, когда мы точно знаем, что ошибка в обработчике не связана с кодом какого-либо алгоритма. В этом режиме код алгоритмов не выгружается в модуль отладки. Алгоритмы выполняются в контексте оператора "Выполнить()" и их код недоступен для отладки.
Второй режим необходимо использовать в тех случаях, когда ошибка находится в коде алгоритма. При установке этого режима алгоритмы будут выгружены как отдельные процедуры. В момент вызова алгоритма из какого-либо обработчика происходит обращение к соответствующей процедуре обработки. Этот режим удобно использовать, когда для передачи параметров в алгоритмы используется глобальная переменная "Параметры". Ограничения использования этого режима в том, что при отладке в алгоритме недоступны локальные переменные обработчика, из которого он вызывается.
Третий режим отладки используется, как и во втором случае, при отладке кода алгоритмов и в тех случаях, при которых второй режим отладки не подходит. При установке этого режима алгоритмы будут выгружены как интегрированный код в обработчиках. Т.е. взамен оператора вызова алгоритма вставляется полный код алгоритма с учетом вложенных алгоритмов. В этом режиме нет ограничений на использование локальных переменных обработчика, однако есть ограничение при отладке алгоритмов с рекурсивным вызовом.
Шаг 2: Формирование модуля отладки
На втором шаге необходимо произвести выгрузку обработчиков нажатием на кнопку "Сформировать модуль отладки выгрузки (загрузки)". Сформированные обработчики и алгоритмы будут выведены в отдельное окно для просмотра. Содержимое модуля отладки необходимо скопировать в буфер обмена нажатием на кнопку "Копировать в буфер обмена".
Шаг 3: Создание внешней обработки
На этом шаге необходимо запустить конфигуратор и создать новую внешнюю обработку. В модуль обработки необходимо вставить содержимое буфера обмена (модуль отладки) и сохранить обработку под любым именем.
Шаг 4: Подключение внешней обработки
На четвертом, завершающем шаге, надо указать имя файла внешней обработки в поле ввода. При этом программа выполняет проверку по времени создания (обновления) файла обработки. Если обработка имеет более раннюю версию, чем версия файла модуля отладки, то будет выведено предупреждение и форма настройки закрыта не будет.
Примечание: Возможность отладки глобального обработчика конвертации "После загрузки правил обмена" не поддерживается.
Похожие FAQ
Еще в этой же категории
2. Выгрузка
Форма выгрузки у меня выглядела следующим образом:
При изменении даты табличное поле заполняется документами за выбранную дату. Сами правила обмена были вставлены в обработку как макет с типом "Двоичные данные".
При нажатии на кнопку "Выгрузка" выполняется код:
Процедура ДействияФормыВыгрузка ( Кнопка )
ДиалогФайла = Новый ДиалогВыбораФайла ( РежимДиалогаВыбораФайла . Сохранение );
ДиалогФайла . Фильтр = "Файл данных (*.xml)|*.xml" ;
ДиалогФайла . ПолноеИмяФайла = "Retail_" + СтрЗаменить ( Формат ( Дата , "ДФ=dd.MM.yyyy" ), "." , "-" );
Если ДиалогФайла . Выбрать () Тогда
ИмяФайла = ДиалогФайла . ПолноеИмяФайла ;
Попытка
ВыгрузитьДанные ( ИмяФайла );
ДвоичныеДанные = Новый ДвоичныеДанные ( ИмяФайла );
ДвоичныеДанные . Записать ( ИмяФайла );
Исключение
Предупреждение ( "Внешний файл не сохранен
|" + ОписаниеОшибки ());
КонецПопытки;
КонецЕсли;
Сама процедура выгрузки выглядит так:
Процедура ВыгрузитьДанные ( ИмяФайлаОбмена )
Обработка = Обработки . УниверсальныйОбменДаннымиXML . Создать ();
Обработка . РежимОбмена = "Выгрузка" ;
ВремФайл = ПолучитьИмяВременногоФайла ( "xml" );
МакетПравилОбмена = ПолучитьМакет ( "ПравилаВыгрузки" );
МакетПравилОбмена . Записать ( ВремФайл );
Обработка . ИмяФайлаПравилОбмена = ВремФайл ; //ФайлПравилОбмена;
Обработка . ЗагружатьДанныеВРежимеОбмена = Истина;
Обработка . ЗаписыватьРегистрыНаборамиЗаписей = Истина;
Обработка . ЗапоминатьЗагруженныеОбъекты = Истина;
Обработка . ИспользоватьОтборПоДатеДляВсехОбъектов = Истина;
СписокДок = Новый Массив ;
Для каждого Стр Из Документы Цикл
Если НЕ Стр . Флаг Тогда
Продолжить;
КонецЕсли;
СписокДок . Добавить ( Стр . Реализация );
КонецЦикла;
Обработка . ДатаНачала = Дата ;
Обработка . ДатаОкончания = КонецДня ( Дата );
Обработка . ВыгружатьТолькоРазрешенные = Истина;
Обработка . ИмяФайлаОбмена = ИмяФайлаОбмена ;
Обработка . ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 0 ; // 0 - не снимать регистрацию, 1 - снимать регистрацию
Обработка . ЗагрузитьПравилаОбмена ();
Обработка . Параметры . Вставить ( "Документы" , СписокДок );
Обработка . ВыполнитьВыгрузку ();
Отбор по документам осуществляется с помощью параметра "Документы", описанного в правилах обмена.
3. Загрузка
А вот это форма для загрузки:
При загрузке отрабатывает следующий код:
ОбработкаОбмена = Обработки . УниверсальныйОбменДаннымиXML . Создать ();
ОбработкаОбмена . ИмяФайлаОбмена = ФайлЗагрузки ;
ОбработкаОбмена . РежимОбмена = "Загрузка" ;
ОбработкаОбмена . ОткрытьФайлЗагрузки (Истина);
ОбработкаОбмена . АрхивироватьФайл = Ложь;;
ОбработкаОбмена . ВыполнитьЗагрузку ();
ОбработкаОбмена = Неопределено;
4. Заключение
В результате получилась предельно простая для понимания пользователей технология обмена. Теперь нас не будут ждать неожиданности вроде выгрузки данных за большой период и не будут поступать вопросы о том "Почему ничего не выгружается?" при неправильном указании отборов. Сделал и забыл. Быстро, просто, прозрачно.
Автоматизация обмена между базами используя обработку "Универсальный обмен данными в формате XML"
В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки "Универсальный обмен данными в формате XML" . Но предлагается вариант автоматизации решения задачи которая позволяет выполнять обмен неквалифицированным пользователям, либо по регламенту. Скажем такой обмен применим если вы не можите по ряду причин использовать РБД, либо совсем разные конфигурации баз (случаи бывают разные, а хочется максимально настраиваемой гибкости).
Вначале безусловно воспользуемся конфигурацией "Конвертация данных" чтобы создать необходимые нам правила обмена (как - это отдельная тема).
Итак Собственно сама ВЫГРУЗКА:
Код 1C v 8.х
Настройка ОТБОРА:
Тут надо обратить внимание на массив "ВременнаяТаблицаПравил.Строки[1]" и в частности на индекс массива строк,
1 - это ветка "Справочники". Ну и так далее по аналогии
Код 1C v 8.х
Сдесь вы определяете искомое правило выгрузки которое нужно оставить включенным на определенной ветке (сами можите варьировать чего и сколько)
Код 1C v 8.х
Теперь настраиваем ОТБОР смысл которого передать в нашу выгрузку ссылку на документ(ты) который(е) хотим выгрузить:
Код 1C v 8.х
Обработка.ТаблицаПравилВыгрузки = ВременнаяТаблицаПравил.Скопировать();
Ну и собственно запускаем саму выгрузку и получаем файл для загрузки:
Код 1C v 8.х
Далее процесс загрузки:
Он довольно прост
Код 1C v 8.х
Расширение .zip для файлов обмена пусть вас не смущает, обработка самостоятельно упакует .xml файл в архив:
Код 1C v 8.х
И также самостоятельно уже без дополнительных указаний распакует и загрузит. Это существенно уменьшает размеры файла обмена.
Похожие FAQ
Еще в этой же категории
Конвертация данных 3.0. Настройка правил конвертации в формате Enterprise Data. Пример использования 65
Задача Передать информацию о контрагентах из УП в БП . Данные передаются в одностороннем порядке, идентификация производится по уникальному идентификатору.Настройка правил конвертации выполняется с помощью специальной конфигурации Конвертация Как отключить узел от распределенной информационной базы? 12
1. Создаешь внешнюю обработку или отчет в ней форме пишешь " ПланыОбмена.УстановитьГлавныйУзел(Неопределено);" 2. Сохраняешь обработку. 3. Закрываешь конфигуратор 4. Запускаешь пользовательский режим. 5. Запускаешь обработку. Еще Вариант ко Автоматическая выгрузка загрузка данных используя регламентное задание 12
Для обмена данными между программами необходимо сделать следующее: 1. При помощи Конвертации Данных создать правила выгрузки данных 2. Нужно чтобы в конфигурации была обработка УниверсальныйОбменДаннымиXML , желательно последней версии! (При помо Планы обмена и их использование 12
Для того чтобы существовала возможность обмена какими-либо данными с кем-либо, необходимо некоторым образом идентифицировать тех, с кем мы будем обмениваться, и для каждого из них описать перечень обмена Обе эти задачи позволяет решать прикладной об Импорт - экспорт данных через XML. Обработка обмена документами 7
Восстановление документов 1С из архива в рабочую базу (XML обмен) Не редко требуется восстановить данные испорченного документа 1С из архива базы после не умышленных, а зачастую ошибочных, действий удачливого пользователя. Самым простым способом я Посмотреть все в категории Конвертация данных, Обмен, Перенос
Данный способ автоматического обмена хорошо подходит для обмена данными как между типовыми (если есть готовые правила обмена) так и доработанными конфигурациями. Однажды потратил некоторое время на выявление необходимых параметров, чтобы можно было выгружать данные без открытия формы обработки "Универсальный обмен данными" Вам, теперь, меньше придётся думать. Загрузка тоже присутствует. Механизм подходит как для серверной так и для файловой базы. Изменения в конфигурацию вносить не придётся. Но не реализован контроль на ошибки при загрузке/выгрузке данных.
Что необходимо для автоматического обмена данными, без внесения изменений в конфигурацию:
1) Обработка "Универсальный обмен данными в формате XML", которая входит в состав большинства типовых конфигураций. Если её там не оказалось, то её легко найти на диске ИТС или на просторах интернета. В конфигурации она обзывается "УниверсальныйОбменДаннымиXML"
2) Правила обмена данными. Создаются с помощью "Конвертации данных". Работу с которой вам придётся освоить. Есть и видеокурсы и учебные пособия. Например: http://programmist1s.ru/wp-content/uploads/2013/06/Konvertatsiya_dannyih._Metodika_rabotyi_i_primeryi.pdf
3) Внешняя обработка, содержащая процедуры загрузки/выгрузки. Займемся её созданием:
Создаётся внешняя обработка в модуле объекта которой будет нижеприведённый текст (подставляете свои данные по базам и пользователям). Желательно создать отдельного пользователя с полными правами для обмена данными. Назовём обработку, к примеру, "ОбменДанными.epf".
4) Bat файл выгрузки, который будет запускать 1с и внешнюю обработку с параметром запуска под пользователем, который предназначен для обмен данными. Файл необходимо создать к примеру в notepad++ с кодировкой OEM(MS-Dos), иначе работать не будет. Файл назовём, например "BatVygruz.bat". Текст будет следующим:
Если база файловая:
"C:\Program Files (x86)\1cv82\common\1cestart.exe" ENTERPRISE /F"C:\Inbox\КБФ\1Cv8_Base_8.1\Зевс 83 БП3\Зевс 83 БП3" /N"РоботОбменаДанными" /P"pass" /DisableStartupMessages /RunModeManagedApplication /Execute"C:\Inbox\ОлегА\ОбменДанными.epf" /C"Выгрузка"
Пояснения:
а) C:\Program Files (x86)\1cv82\common\1cestart.exe - ваш путь к стартеру 1С
б) C:\Inbox\КБФ\1Cv8_Base_8.1\Зевс 83 БП3\Зевс 83 БП3 - ваш путь к файловой базе, из которой будем выгружать данные
в) РоботОбменаДанными - Имя пользователя, под которым запускам 1С для обмена данными
г) pass - пароль пользователя
д) /DisableStartupMessages - закрываем всплывающие окна при старте 1С
е) /RunModeOrdinaryApplication - запуск в обычном режиме толстый клиент
ж) C:\Inbox\ОлегА\ОбменДанными.epf - путь к нашей обработке, которая запустится при старте
з) Выгрузка - передаём параметр запуска 1С, сообщает, что надо выгружать данные
Если база серверная:
"C:\Program Files (x86)\1cv82\common\1cestart.exe" ENTERPRISE /S"Server1C/DataBase" /N"РоботОбменаДанными" /P"pass" /DisableStartupMessages /RunModeManagedApplication /Execute"C:\Inbox\ОлегА\ОбменДанными.epf" /C"Выгрузка"
Пояснения:
а) C:\Program Files (x86)\1cv82\common\1cestart.exe - ваш путь к стартеру 1С
б) Server1C/DataBase - ваш сервер на котором находится база и имя самой базы из которой выгружаем данные.
Остальные параметры аналогичны файловому варианту bat файла
5) Bat файл загрузки (при необходимости). Если вы решили выгружать данные в файл, а не напрямую в базу. То этот пункт нам тоже понадобится (обычно необходим).
Создание Bat файла загрузки аналогично файлу выгрузки, но отличается лишь параметр запуска, вместо "Выгрузка", мы ставим "Загрузка"
6) Задать расписание запуска наших Bat файлов загрузки/выгрузки на сервере. Для этого надо зайти в администрирование панели управления на сервере и в планировщике заданий создать новое задание запуска файла выгрузки на 23 часа каждый день и задание на загрузку с указанием Bat файла загрузки(если надо) на 04 часа к примеру.
Разберем кейс, как настроить простенький обмен с любой устаревшей конфигурацией на базе 8.2 через обработку "Универсальный обмен данными в формате XML" и Конвертацию данных 2.0 с возможностью настройки гибких отборов по периоду, организации и списку документов.
Вступление
Несмотря на бурное развитие 1С и на огромное количество технологий обмена данными в среде 1С, обработка "Универсальный обмен данными в формате XML" по-моему мнению до сих пор остается очень мощным инструментом, позволяющим настроить обмен данными между различными конфигурациями, за достаточно короткий срок. Одним из ее основных преимуществ, это возможность полностью "программной" настройки. Не всегда же бизнесу требуются сложные обмены, иногда достаточно одностороннего обмена с 1С:Бухгалтерия 3.0, но при этом источником данных может быть любая конфигурация "динозавр". Так же потребуется выполнить определенные манипуляции с правилами конвертации в 1С:Конвертации данных 2.0.
Постановка задачи
Необходимо настроить односторонний обмен между устаревшей конфигурацией (например УНФ 1.4) и 1С:Бухгалтерия 3.0. Прежде всего у нас уже должны быть разработаны правила конвертации в Конвертации данных 2.0. Некоторые лайфхаки для настройки правил будут разобраны чуть ниже по тексту.
Основная задача реализовать удобный интерфейс обмена, понятный не только программисту, но и бухгалтеру с гибкими отборами по организации, периоду и видам документов.
Реализация
1. Создание обработки и подключение макета с правилами
Создаем внешнюю обработку, добавляем к ней макет с типом двоичные данные, загружаем наши правила, разработанные в КД 2.0 в формате XML. Во вложениях к публикации есть примерные правила, которые можно использовать как заготовку.
2. Накидаем простенький интерфейс на форме
Тут просто пример как это можно сделать.
3. Реализуем основную логику выгрузки данных
Программный код для кнопки выгрузить данные:
4. Настраиваем отбор по организациям с использованием Конвертации данных 2.0
Для того чтобы можно было использовать отбор по организации в обработке, нужно в правилах Конвертации данных 2.0 добавить параметр.
Далее этот параметр нужно задействовать в правилах выгрузки данных (ПВД) в событии "Перед выгрузкой" Например вот так:
И в правилах конвертации объектов (ПКО) в событии "Перед выгрузкой", например вот так:
Для выгрузки данных с отбором по организации программно заполняем значение нашего параметра в обработке
Реализуем дополнительную функцию для определения активных документов
Реализуем заполнение настроек отбора по документам. Основная идея в том, чтобы заполнить для каждого ПВД настройки отбора с помощью построителя отчетов.
Обходим табличную часть "Список документов" на форме, для формирования списка документов к выгрузке
Для удобства пользователя можно реализовать универсальную процедуру для заполнения списка документов с отбором по организации и периоду при переключения флажков на форме.
После выгрузки данных полученный XML файл можно легко загрузить обработкой "Универсальный обмен данными в формате XML" в конфигурации-приемнике.
Читайте также: