Главная страница » Как создать файл xml для обмена 1с

Как создать файл xml для обмена 1с

  • автор:

Формирование файла XML. Простая выгрузка для стороннего приложения

В организации учет может вестить не только в решениях на платформе 1С:Предприятие, но и в других программным комплексах (Галактика, Парус, SAP и прочее). При этом появляются задачи интеграции двух приложений.

Напрмер, в некотором приложении (назовем его «X») требуется прочитать список документов конфигурации. О практической пользе решения подобной задачи говорить не будем, отмечу лишь, что наиболее удобным и универсальным способом в такой ситуации будет выгрузка списка документов в формате XML .

Изображение

Обмен с использованием этого формата является универсальным, поскольку с ним могут работать большинство приложений. Рассмотрим как можно из 1С:Предприятия выгрузить список документов конфигурации в XML-файл.

Выгрузка в XML

И так, перейдем к главному. Нам нужно обойти список метаданных документов и сформировать список в XML-файле. На следующем скриншоте представлен алгоритм формирования XML-файла:

Каждый созданный элемент должен быть правильно завершен. После выполнения «ЗаписатьНачалоЭлемента()» обязательно должен быть выполнен метод «ЗаписатьКонецЭлемента», иначе структура XML-файла будет некорректной.

Общий шаблон создания XML-файлов предсавляет собой следующую последовательность:

С помощью этих пяти шагов создается практически любой XML-файл.

В нашем примере созданный файл переводится в двоичные данные и возвращается в место вызова функции «СоздатьXML». Далее этот файл может быть записан в файловую систему.

Пример выгруженного файла Вы могли видеть на скриншоте выше.

Стороннее приложение

Для примере создал приложение на .NET Framework, чтобы продемонстрировать чтенеие XML-файла в стороннем приложении.

Програма читает созданный файл и выводит документы в виде списка:

Изображение

Можете попробовать сами, приложение доступно для загрузки по ссылке в конце статьи.

Универсальность

Формат XML используется в большинстве конфигурации обмена данными между прикладными решениями на платформе 1С:Предприятие. Другим часто используемым способом обмена является подключение через COM-соединение. XML-позволяет выполнять обмен практически с любыми приложениями, чем и заслужил называться универсальным.

Пошаговая инструкция настройки обмена через файл между 1С: Управление торговлей 11 и 1С: Бухгалтерия 3.0

Задача: требуется настроить обмен данными через файл из 1С: Управление торговлей 11 (далее УТ) в 1С: Бухгалтерия 3.0 (далее Бухгалтерия).

  • платформа 1С: Предприятие 8.3 (8.3.13.1690),
  • конфигурация Управление торговлей, редакция 11 (11.4.7.150),
  • конфигурация Бухгалтерия предприятия (базовая), редакция 3.0 (3.0.72.72)
  • режим Файловый (без сжатия).
  • настроить параметры подключения.
  • настроить параметры подключения,
  • настроить правила отправки и получения данных,
  • выполнить начальную выгрузку данных.
  • настроить правила отправки и получения данных,
  • выполнить сопоставление и загрузку данных,
  • выполнить начальную выгрузку данных.

ШАГ 1. Настройка в УТ

Переходим в раздел «НСИ и администрирование» и выбираем пункт «Синхронизация данных». Обязательно должен быть указан префикс информационной базы. В нашем случае это «ЦБ».

Устанавливаем флаг «Синхронизация данных» и переходим по ссылке «Настройки синхронизации данных». Нажимаем кнопку «Новая синхронизация данных». В открывшемся окне выбираем конфигурацию, с которой будем настраивать обмен. В нашем случае это «Бухгалтерия предприятия, редакция 3.0».

Откроется окно настройки синхронизации. Выберем пункт «Настроить параметры подключения».

Так как обмен будет настраивать через файл, то выбираем пункт «синхронизация данных через файл, без подключения к другой программе».

Далее укажем каталог и настроим архивацию файлов.

Далее укажем префикс базы бухгалтерии и название файла с настройками синхронизации.

Обратите внимание: если указать префикс, по которому уже есть обмен, то будет ошибка, программа предложит указать уникальный код. Нажимаем «Далее» и на этом заканчивается первый шаг настройки.

В результате у нас появится два файла в указанной папке: файл с данными (Message_ЦБ_БП.zip) и файл с настройками обмена (Синхронизация данных через универсальный формат.xml). Обратите внимание: если в УТ попробовать перейти к этапу «Настроить правила отправки и получения данных», то будет ошибка.

ШАГ 2. Настройка в Бухгалтерии

Перед настройкой синхронизации в Бухгалтерии нам понадобятся два файла, созданных на предыдущем шаге. Разместим файлы Message_ЦБ_БП.zip и Синхронизация данных через универсальный формат.xml в любую папку на компьютере с базой Бухгалтерии. Внимание: если Бухгалтерия находится на одном компьютере с УТ, то ничего переносить не нужно. Будем использовать ту же папку, что и для УТ.

Сначала перейдем в раздел «Администрирование» и выберем пункт «Синхронизация данных». В открывшемся окне проверим, чтобы префикс указанной базы совпадал с префиксом, который мы указали на первом шаге.

Устанавливаем флаг «Синхронизация данных» и переходим по ссылке «Настройки синхронизации данных». Нажимаем кнопку «Новая синхронизация данных». В открывшемся окне выбираем конфигурацию, с которой будет настроен обмен. В нашем случае это «1С: Управление торговлей, редакция 11».

Откроется окно настройки синхронизации. Выберем пункт «Настроить параметры подключения».

Так как обмен настраиваем через файл, то выбираем пункт «синхронизация данных через файл, без подключения к другой программе». На Шаге 1 мы уже создали файл с настройками обмена Синхронизация данных через универсальный формат.xml, поэтому выберем его. Если был создан другой каталог и туда скопировали файл с настройками обмена, то выбираем его.

Далее укажем каталог и настроим архивацию файлов. В данном случае каталог может быть тот же самый или тот, в который перенесли два файла.

Далее проверяем настройки префиксов и на этом настройка параметров подключения в Бухгалтерии завершена.

Далее переходим к следующему этапу «Настройка правил отправки и получения данных».

Так как задачи выгрузки из Бухгалтерии у нас нет, то в настройках отправки данных укажем «не отправлять».

В настройках получения данных укажем типовые настройки. При необходимости можно указать свои настройки.

Нажимаем «Записать и закрыть». Далее переходим к следующему этапу «Выполнить начальную выгрузку данных».

После выполнения операции будет создан в каталоге обмена файл с данными Message_БП_ЦБ.zip. На этом этап настройка обмена в Бухгалтерии закончена.

ШАГ 3. Окончание настройки в УТ

Вернемся в УТ. Если использовался другой каталог, то в папку обмена УТ перенесем файл, созданный на прошлом шаге Message_БП_ЦБ.zip.

Продолжим настройку синхронизации в УТ с этапа «Настроить правила отправки и получения данных».

В настройках обратим внимание на два поля.

1.Отправлять только используемую в документах нормативно-справочную информацию.

2.Отправлять все, начиная с даты. Это поле полезно, так как бывает, что нужно начать синхронизацию с определенного времени. Например, учет в УТ уже был настроен ранее, а в
Бухгалтерии только начинаем вести учет. Тогда нет необходимости переносить все документы из УТ в Бухгалтерию. Или второй случай: нужно поменять настройки обмена, но чтобы они действовали только для документов с определенной даты.

Все остальные поля заполняем в зависимости от учета.

В нашем случае настройка получения данных не требуется. Оставляем ее без изменений.

Нажимаем «Записать и закрыть». Переходим к следующему этапу «Выполнить сопоставление и загрузку данных».

В нашем случае программа ничего загружать не будет и перейдет к следующему этапу.

На последнем этапе «Выполнить начальную выгрузку данных» программа выгрузит данные из УТ в файл Message_ЦБ_БП.zip.

Обратите внимание (для случая с двумя каталогами): полученный файл Message_ЦБ_БП.zip копируем в каталог обмена Бухгалтерии. В Бухгалтерии выполняем синхронизацию. При этом Бухгалтерия сначала загрузит данные из присланного файла Message_ЦБ_БП.zip, потом обновит свой файл выгрузки Message_БП_ЦБ.zip Этот файл выгрузки Message_БП_ЦБ.zip нужно скопировать обратно в каталог обмена УТ и в УТ выполнить синхронизацию. При этом УТ сначала загрузит данные (если они там есть) из файла Message _БП_ЦБ.zip, а потом обновит свой файл выгрузки Message _ЦБ_БП.zip и т.д.

Как загрузить или выгрузить данные из 1С в формате xml

Иногда нам необходимо перенести данные из одной базы 1С в другую. Чаще всего подобная потребность возникает при переходе большого количества контрагентов с одной организации в другую, либо же при передачи склада другой компании. Для переноса данных между идентичными конфигурациями существует обработка “Выгрузка и загрузка данных xml”, данная обработка предоставляется бесплатно и находится на диске Внешние обработки (N) удаленного рабочего стола.

Некоторые конфигурации имеют типовой функционал для переноса данных. Если конфигурации разные, то потребуется создать правила переноса в конфигурации 1С: Конвертация данных.

В данной инструкции мы рассмотрим перенос между одинаковыми конфигурациями, именно с помощью внешней обработки. Для корректной работы обработки базы, которые участвуют в переносе данных, должны быть одного и того же релиза.

Это универсальная процедура, подходящая для любой конфигурации, с ее помощью можно выполнить полную или частичную выгрузку данных в формате xml и, соответственно, выгрузить их в другую информационную базу. Для примера сделаем выгрузку и загрузку Справочников, Документов и Задач.

Если нам нужно выгрузить данные в xml: открываем базу, из которой нужно извлечь данные, запускаем обработку через Файл — Открыть, далее выбираем Внешние обработки (N), выбираем и открываем нашу обработку Выгрузка и загрузка данных XML.

В табличной части формы выбираем, что именно будем выгружать. Есть возможность указать период выгрузки. В поле данные для выгрузки указываем нужные строки, в данном случае, отмечаем Справочники, Документы и Задачи, нажимаем Определить данные, выгружаемые по ссылке, и программа нам показывает, какие еще объекты, связанные с отмеченными, необходимы для полных данных в выгружаемых элементах, это: Планы Видов Характеристик, Планы Счетов, Планы Видов Расчетов, Бизнес Процессы, Планы Обмена, напротив этих строк у нас автоматически проставлен флаг Выгружать при необходимости. Если вам не нужно их выгружать, можно снять этот флаг. Но если эти данные не выгружать, то в наших данных эти строки будут пустыми, неполными . Также, в зависимости от того, что именно вам требуется выгрузить, можем поставить флаг на Вместе с документами выгружать их движения, это дополнит наши данные.

Есть два варианта сохранения файла выгрузки — на клиентский компьютер и в файл на сервере. Если мы выбираем: На клиентский компьютер, выгрузка начинается сразу и только после выгрузки мы прописываем место выгрузки, когда выбираем В файл на сервере, то вначале выбираем папку для файла, и только потом идет выгрузка.

Также можно проставить флаг выгружать в формате FastInfoSet. Этот формат использует альтернативный синтаксис для отображения xml-данных, предоставляет меньше файлов и более высокую скорость обработки, чем данные, записанные в xml-формате. Файл этого формата имеет расширение .fi или .finf. После выгрузки данных программа предложит, что делать с полученным файлом: Открыть или Сохранить. Выбираем Сохранить и указываем путь к нужной папке.

Если нам нужно загрузить данные из xml

Открываем базу в которую нам нужно загрузить данные. Если эта база уже имеет какие-то данные, рекомендуется сделать резервное копирование. Откроем в меню Файл — Открыть обработку Выгрузка и загрузка данных XML и выбираем вкладку Загрузить данные.У нас открывается форма загрузки. Отмечаем: Загрузить данные в режиме обмена, выбираем загрузить данные из файла на сервере и сразу же указываем путь, где именно находится наш импортируемый файл, выбираем его. Теперь нажимаем кнопку

Как создать файл xml для обмена 1с

Все случайно упомянутые в статье торговые марки принадлежат своим владельцам.
Статья опубликована под лицензией Creative Commons Attribution-Share Alike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/

Автор статьи — Виктор Сахнов (Asmody)

Сразу замечу, что все нижеследующее относится к релизу платформы 8.0.7.36 и выше.

Шаг 1. Создание плана обмена

Создаем в конфигурации план обмена. Называем его, например «РаспределеннаяБаза». Обязательно в
свойствах плана обмена ставим флажок «Распределенная информационная база».

На закладке «Прочее» по кнопке «Состав» определяем, какие объекты будут включаться в обмен. По
умолчанию можно включить все объекты («Действия»-«Включить все»). Важным моментом является параметр
«Авторегистрация». В общем случае ее нужно разрешить для всех объектов.

Замечание: при добавлении новых объектов в конфигурацию, они не включаются в план обмена. Т.е. после
добавления объекта его необходимо добавить в состав плана обмена.

Если Вы хотите, чтобы некоторые объекты не участвовали в обмене, просто исключаете их из состава
плана обмена. Но тогда контроль ссылочной целостности остается целиком на вашей совести. Если, к
примеру, некий документ не включен в план обмена, а регистр, по которому он делает движения включен,
то в базе-приемнике вполне реально получить движения по регистру без документа-регистратора, что
согласитесь, не есть хорошо.

В принципе, этих действий достаточно, чтобы РБД заработала в «ручном» режиме. Для этого запускаем
Предприятие, открываем наш план обмена через меню «Операции». В плане обмена всегда присутствует
предопределенный узел «с точкой». Это описание текущего узла. Его нужно открыть и заполнить. В нашем
случае будут доступны поля «Код» и «Наименование». Присвоим нашему узлу код «AA» и назовем
«Центральная». Добавим в план обмена один узел. Присвоим ему код «ВВ» и назовем «Периферийная».

Теперь мы можем создать образ периферийной базы. Делается это нажатием кнопки «Создать начальный
образ». В списке узлов должна быть выбрана периферийная база. Образ базы создается в виде готовой ИБ
в каталоге или на сервере 1С:Предприятия. (в отличие от 7.7, где образ ИБ создавался как файл
выгрузки). Далее созданную базу можно перенести в нужное место, просто скопировав файлик 1CV8.1CD
(для файлового варианта), либо через Конфигуратор через выгрузку-загрузку данных.

Если Вы откроете план обмена в периферийной ИБ, то Вы увидите, что узлом «с точкой», т.е. текущим
узлом стал узел «Периферийная», а иконка у узла «Центральная» стала красного цвета, т.е. узел
«Центральная» является главным узлом по отношению к текущему.

Обмен в «ручном» режиме можно производить при помощи кнопок «Записать изменения» и «Прочитать
изменения». В первом случае будет предложено выбрать файл, куда изменения будут записаны, во втором
— файл, откуда изменения будут считаны. Обмен ведется в формате xml. Изменения записываются для
выбранного узла.

Шаг 2. Выгрузка изменений в XML-файл и отправка по электронной почте

Итак мы создали план обмена, создали периферийную ИБ и даже научились переносить данные между
базами. Теперь наша задача научить базы обмениваться по электронной почте.

Добавляем в план обмена два реквизита: ЭлектронныйАдрес типа «строка» и «ВыполнятьОбмен» типа
«булево». В реквизите ЭлектронныйАдрес будем хранить email узла, т.е. тот адрес, на который будем
посылать сообщения обмена. Реквизит ВыполнятьОбмен нужен, чтобы быстро отключить автоматическую
посылку-отправку сообщений.

Процедуру для работы с электронной почтой сделаем универсальной, т.е. сделаем возможным
использование как MAPI (отправка-получение через почтового клиента, например, MS Outlook), так и
прямое обращение к SMTP/POP3 серверам.

Добавим в конфигурацию несколько констант:







ПользовательСервераPOP3Обмена
ПарольПользователяPOP3ОбменаВремяОжиданияСервера
ВыводитьСообщенияОбмена
ИмяТип
ИспользоватьОбменПоSMTPБулево
АдресСервераSMTPОбменаСтрока(50)
ПортСервераSMTPОбменаЧисло(4,0)
ПользовательСервераSMTPОбменаСтрока(10)
ПарольПользователяSMTPОбменаСтрока(10)
АдресСервераPOP3ОбменаСтрока(50)
ПортСервераPOP3ОбменаЧисло(4,0)
Строка(10)
Строка(10)
Число(3,0)
Булево

где-нибудь в общей форме обеспечиваем редактирование значений этих констант.

Добавим общий модуль, назовем его «рбРаспределеннаяБаза». В нем пишем:

Рекомендую в интерфейс добавить дополнительную панель, на одну из кнопок которой повесить вызов этой
процедуры. Теперь осталось запустить Предприятие, настроить электронный адрес периферийной ИБ,
поставить галку «Выполнять обмен», нажать на кнопку процедуры на панели и бежать получать почту для
указанного эл. адреса. Должно придти письмо с темой «1С:Обмен AA_BB» и вложенным файлом
«Message_AA_BB.xml».

Итак, половина дела сделана: мы научили «восьмерку» отправлять сообщения обмена РБД по электронной
почте.

Шаг 3. Получение обновлений по электронной почте и запись их в ИБ

Теперь займемся обратной процедурой: получение обновлений по электронной почте и запись их в ИБ.

В параметры сеанса добавим параметр «ИдетОбменРаспределеннойБазы» типа Булево. Ниже я объясню его
назначение.

Добавим в общий модуль рбРаспределеннаяБаза такую процедуру:

<FONT COLOR=»#66666″>Теперь про то, для чего нужен параметр сеанса ИдетОбменРаспределеннойБазы.
Дело в том, что при чтении данных методом ПланыОбмена.ПрочитатьИзменения() происходит вызов
процедур-обработчиков события ПередЗаписью() изменяемых/добавляемых объектов. И если при записи
какого-либо объекта в процедуре обработчике параметр Отказ будет установлен в значение Истина, то
при выполнении ПланыОбмена.ПрочитатьИзменения() возникнет исключение, и, соответственно, обмен
выполнен не будет. Значение параметра сеанса ИдетОбменРаспределеннойБазы может быть
проанализированно в процедурах-обработчиках, дабы избежать подобной ситуации.
С выходом редакции 12 (хотя я могу ошибаться в версиях), актуальность этого метода несколько
устарелаА, поскольку у объектов появилось свойство ПараметрыОбмена , у которого, в свою
очередь, есть свойство Загрузка . Это свойство принимает значение Истина, когда идет
сохранение данных через план обмена.

Теперь в интерфейсе на нашей панели добавляем еще одну кнопку, на которую вешаем вызов этой
процедуры. Запускаем Предприятие и наслаждаемся.
Почти все сделано, осталась малость: заставить наши процедуры выполняться в автоматическом режиме.
Шаг 4. Настройка автоматического обмена

Итак, мы почти вплотную приблизились к цели нашего повествования. Остался всего один шаг: запустить
выполнение процедур обмена в автоматическом режиме. Приступим.

Добавим константу ИнтервалАвтообменаРаспределеннойБазы типа Число(5,0).

В настройки пользователя добавим параметр ВыполнятьОбменРаспределенныхБаз. Для конфигурации
«Управление торговлей» это делается так:

* В план видов характеристик «НастройкиПользователей» добавим предопределенную
характеристику ВыполнятьОбменРаспределенныхБаз типа Булево.
* В форме элемента справочника «Пользователи» настраиваем изменение этого параметра (как это
сделать можно посмотреть в модуле формы, по аналогии с остальными параметрами).

В модуль рбРаспределеннаяБаза добавляем процедуру:

в модуль приложения:

в процедуру ПриНачалеРаботыСистемы() модуля приложения добавим такие строки:

(после подключения торгового оборудования)
.

Добавим на нашу панель еще пару кнопок для управления процессом: на одну вешаем процедуру
ПроверитьПодключениеАвтообмена(), на другую — ОтключитьАвтообмен()

Запускаем предприятие, настраиваем свойства пользователя и интервал автообмена и все!

Теперь при заходе в базу под этим-самым-настроенным пользователем будет запускаться обработчик
ожидания ВыполнитьАвтообмен(). Естественно, в периферийной базе тоже нужно настроить пользователя
для обмена.

Еще одно маленькое, но важное замечание:

Во всей, созданной нами прелести, присутствует одна неприятность: изменение конфигурации. При
получении периферийной базой сообщения, в котором будут содержаться изменения конфигурации, оно
будет принято, но возникнет исключительная ситуация. При этом измененная конфигурация будет
загружена. Для обновления конфигурации БД необходимо выгнать всех пользователей, зайти в
конфигуратор и выполнить обновление конфигурации БД (перед этим неплохо сделать выгрузку данных). К
сожалению, это неизбежное зло. Можно немного облегчить себе жизнь, написав коротенький bat-файл
примерно такого содержания:

1cv8.exe CONFIG /F<путь к ИБ> /N<Пользователь> /P<Пароль> /UpdateIBCfg

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *