Чтение файла xml в 1с 8.2. Формирование файла XML. Простая выгрузка для стороннего приложения. Процесс выгрузки данных в xml. Подключение внешней обработки

Работа с XML-документами доступна непосредственно из встроенного языка системы 1С:Предприятие 8.

Имеется возможность:

  • последовательно читать и записывать xml-документы:
    • преобразовывать из строки, полученной из текста элемента или значения атрибута XML, в значение в соответствии с указанным типом;
    • получать строковое представление значения для помещения в текст элемента или значение атрибута XML;
    • получить тип данных XML, соответствующий переданному в качестве параметра типу;
    • производить проверку возможности чтения из XML значения указанного типа;
    • производить проверку соответствия схеме XML при чтении XML
    • производить запись значения в формате XML;
    • возвращать тип, соответствующий типу данных XML.
  • использовать модель объектного доступа к данным xml-документов (ДокументDOM), соответствующую следующим стандартам:
    • DOM Level 2;
    • XPath (DOM Level 3);
    • DOM Load and Save (DOM Level 3).
  • использовать объектную модель схемы XML (СхемаXML);
  • использовать канонический XML стандарт 1.1 (Canonical XML 1.1).

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

Fast Infoset

Платформа предоставляет средства для работы с XML-документами в бинарном формате Fast Infoset. Технология Fast Infoset использует альтернативный синтаксис отображения XML-данных. Это обеспечивает меньший объем файлов и более высокую скорость обработки, чем скорость обработки данных, записанных в обычном XML-формате. Файл, записанный в формате Fast Infoset, имеет расширение.fi или.finf.

— всем известные веб-страницы, которые также представляют из себя аналог XML с нестрогими проверками.

Объекты чтения/записи XML, FastInfoset, HTML расширяют возможности чтения текстового файла встроенной обработкой тегов разметки.

Также они используются для объектов ПостроительDOM/ЗаписьDOM (см. далее) как источники данных.

Файлы XML 1С содержат текстовую информацию, то есть являются текстовыми файлами. Объекты ЧтениеXML 1С и ЗаписьXML 1С являются «надстройкой», позволяющей упростить работу с тегами XML файла 1С.

Объекты ЧтениеFastInfoset 1С и ЗаписьFastInfoset 1С, ЧтениеHTML 1С и ЗаписьHTML 1С полностью аналогичны ЧтениеXML 1С и ЗаписьXML 1С и служат для работы таким же способом с другими форматами.

Файл XML 1С, который использовался в примерах

Справочник>

Справочник>

Текстовое значениеРеквизит>
Справочник>
Конфигурация>

Пример 1. Считывание файла XML 1С в дерево значений с помощью ЧтениеXML 1С

//открываем файл XML 1С на чтение с помощью ЧтениеXML 1С
Файл = Новый ЧтениеXML();
Файл.ОткрытьФайл("D:\СтруктураКонфигурации.xml");

//подготовим дерево значений
//у каждой ветки XML может быть наименование, атрибуты и значение
дзXML = Новый ДеревоЗначений();
дзXML.Колонки.Добавить("Наименование");
дзXML.Колонки.Добавить("Значение");
дзXML.Колонки.Добавить("Атрибуты");

//так как атрибутов у строки XML может быть несколько - будем записывать их в таблицу значений
//каждый атрибут имеет имя и значение
тАтрибутов = Новый ТаблицаЗначений();
тАтрибутов.Колонки.Добавить("Имя");
тАтрибутов.Колонки.Добавить("Значение");

//уровень вложенности поможет нам понимать когда требуется добавить вложенную ветку, а когда нужно вернуться на уровень вверх
УровеньВложенности = 0;
//текущая строка - строка дерева, будет меняться при увеличении вложенности
ТекущаяСтрока = Неопределено;
//чтение файла XML 1С производится не построчно, а по структуре, при окончании файла чтение вернет ЛОЖЬ
Пока Файл.Прочитать() Цикл

//нас интересуют три вида узлов - начало элемента, текст (значение элемента) и конец элемента (чтобы вернуться на уровень вверх)
Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

УровеньВложенности = УровеньВложенности + 1;

//если это первая строка, то добавим ее в самый верх дерева и сохраним только наименование
Если ТекущаяСтрока = Неопределено Тогда
ТекущаяСтрока = дзXML.Строки.Добавить();
ТекущаяСтрока.Наименование = Файл.Имя;
Продолжить;
Иначе
//вложенные строки
ТекущаяСтрока = ТекущаяСтрока.Строки.Добавить();
ТекущаяСтрока.Наименование = Файл.Имя; //сохраним наименование

//есть ли у этого элемента XML атрибуты?
Если Файл.КоличествоАтрибутов() > 0 Тогда
//если да - скопируем подготовленную пустую таблицу для сохранения атрибутов
тАтрибутыУзла = тАтрибутов.Скопировать();
//цикл по количеству атрибутов у этого элемента
Для Сч = 0 по Файл.КоличествоАтрибутов()-1 Цикл
//для каждого атрибута запомним имя и значение
Строка = тАтрибутыУзла.Добавить();
Строка.Имя = Файл.ИмяАтрибута(Сч);
Строка.Значение = Файл.ЗначениеАтрибута(Сч);
КонецЦикла;
//сохраним таблицу атрибутов элемента в текущую строку
ТекущаяСтрока.Атрибуты = тАтрибутыУзла;
КонецЕсли;
КонецЕсли;

ИначеЕсли Файл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
//в начале элемента увеличиваем уровень вложенности, в конце элемента уменьшаем
УровеньВложенности = УровеньВложенности - 1;
//возвращаем текущую строку на уровень вверх
ТекущаяСтрока = ТекущаяСтрока.Родитель;

ИначеЕсли Файл.ТипУзла = ТипУзлаXML.Текст Тогда
//если у элемента есть значение - просто сохраним его
ТекущаяСтрока.Значение = Файл.Значение;

КонецЕсли;

КонецЦикла;

Файл.Закрыть();

Пример 2. Запись файла 1С XML с помощью объекта ЗаписьXML 1С

//создаем файл ЗаписьXML 1С
Файл = Новый ЗаписьXML();
Файл.ОткрытьФайл("D:\СтруктураКонфигурации.xml", "UTF-8");
Файл.ЗаписатьНачалоЭлемента("Конфигурация");

//по метаданным обходим все справочники (подробнее см. "Работа с метаданными")
Для каждого Справочник из Метаданные.Справочники Цикл

//ЗаписатьНачалоЭлемента - открывает новую [подчиненную] ветку
Файл.ЗаписатьНачалоЭлемента("Справочник");
//ЗаписатьАтрибут - записывает атрибут в открытую ранее ветку
Файл.ЗаписатьАтрибут("Имя", Справочник.Имя);
Файл.ЗаписатьАтрибут("Синоним", Справочник.Синоним);

//по метаданным обходим все реквизиты справочника
Для каждого Реквизит из Справочник.Реквизиты Цикл




КонецЦикла;

//по метаданным обходим все табличные части справочника
Для каждого ТЧ из Справочник.ТабличныеЧасти Цикл
Файл.ЗаписатьНачалоЭлемента("ТабличнаяЧасть");
Файл.ЗаписатьАтрибут("Имя", ТЧ.Имя);
Файл.ЗаписатьАтрибут("Синоним", ТЧ.Синоним);

Для каждого Реквизит из ТЧ.Реквизиты Цикл
Файл.ЗаписатьНачалоЭлемента("Реквизит");
Файл.ЗаписатьАтрибут("Имя", Реквизит.Имя);
Файл.ЗаписатьАтрибут("Синоним", Реквизит.Синоним);
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;

Файл.ЗаписатьКонецЭлемента();
КонецЦикла;

//ЗаписатьКонецЭлемента - "закрывает" открытую ранее с помощью ЗаписатьНачалоЭлемента ветку
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;

Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();

Позволит сэкономить время на занесение в 1С сведений о покупке услуг компании Peterhost.
Для этого необходимо загрузить в 1С XML -файл и из него сформируется документ «Поступление товаров и услуг», содержащий сведения о приобретенных услугах. Счет-фактуру можно сформировать на основании этого документа.

Подробная инструкция представлена ниже.

1. Подключение внешней обработки

1.1. В случае, если используется информационная база 1С:Предприятие 8.X c конфигурацией «Бухгалтерия предприятия 2.0», для загрузки документа в формате CommerceML необходимо подключить внешнюю обработку ()
Это можно сделать двумя способами:
1. Сохранить файл внешней обработки локально на диск и открывать через меню «Файл» → «Открыть» перед каждой загрузкой данных в формате CML .
2. Подключить обработку к информационной базе (ИБ) постоянно. Тогда она будет доступна всем (в случае работы по сети) из меню «Сервис» → «Дополнительные отчеты и обработки» → «Дополнительные внешние обработки».

  • В меню «Сервис» необходимо выбрать «Дополнительные отчеты и обработки» – «Дополнительные внешние обработки».
  • Нажать кнопку «Добавить». Откроется форма добавления нового элемента справочника:
  • В поле «Наименование» указать название обработки, например «Загрузка данных в формате CommerceML (RU-CENTER Group)».
  • Нажать кнопку выбора файла и указать путь к файлу обработки загрузки ().
  • Нажать кнопку «ОК» Теперь обработка подключена к информационной базе и находится в справочнике «Дополнительные внешние обработки», и её можно открыть двойным щелчком мыши.

1.2. В случае использования конфигурации «Управление производственным предприятием» (версии 10.3 и выше) и «Управление торговлей» (версии 1.3 и выше) эта обработка уже включена и можно перейти к п.2.

2. Формирование документа «Поступление товаров и услуг»

В результате выполненных ниже действий в 1С будет занесена информация об услугах, приобретенных в компании Peterhost.
1. Далее необходимо сохранить на свой компьютер XML -файл с данными документа «Поступление товаров и услуг» за нужный период. Файл в формате XML находится в разделе Личного кабинета под ссылкой «XML для «1С»».
Нажать кнопку выбора справа от поля «Имя файла данных» и выбрать этот файл (см. рисунок 1). На вопрос «Прочитать данные из файла?» ответьте «ОК». Файл с данными будет прочитан обработкой.
2. Если обработке удастся определить все соответствия элементов данных файла с данными информационной базы, то будет задан вопрос «Сохранить данные в информационную базу?». Если ответить «Да», то будет создан новый документ «Поступление товаров и услуг». Перейдите к пункту 3.
3. Если не все соответствия данных будут определены, то будет выведено сообщение: «При загрузке данных программе не удалось автоматически найти объекты ИБ, соответствующие элементам, переданным в файле обмена…» и предложит выполнить сопоставление вручную. В этом случае необходимо выполнить следующее:

  • Нажать «ОК». Откроется форма сопоставления объектов файла и ИБ. В ней имеется несколько закладок, которые соответствуют различным типам объектов (организации, контрагенты, номенклатура и т.д.). Если данные какого-то типа не были сопоставлены, то на соответствующих закладках будут красные восклицательные знаки (см. рисунок 2).
  • Зайти на соответствующие закладки и вручную выставить соответствия элементов. Следует учесть, что соответствия контрагентов и организаций ищутся по ИНН, а соответствия номенклатуры – сначала по артикулу, затем по наименованию. Если элемента, который соответствует данным файла, нет в ИБ, то его можно создать автоматически по данным файла, нажав кнопку «Создать по данным из файла».
  • При добавлении номенклатуры необходимо отметить галочкой свойство «Услуга» (см. рисунок 3). Так же можно изменить полное и краткое наименования элемента номенклатуры.
  • На закладке «Счета учёта» желательно добавить счета учета номенклатуры, чтобы при создании документа «Поступление товаров и услуг» эти номера проставлялись автоматически. Например, для услуг могут быть установлены следующие значения: «Счет учёта» – 25 (Общепроизводственные расходы) и «Счет учёта предъявленного НДС» – 19.04 (НДС по приобретённым услугам) (см. рисунок 4).
  • После сопоставления всех элементов и нажатия кнопки «ОК» программа запросит подтверждение на загрузку документа в ИБ, после чего создаст новый документ «Поступление товаров и услуг» (см. рисунок 5).

3. Проводка документа «Поступление товаров и услуг»

Чтобы провести документ «Поступление товаров и услуг», необходимо открыть его двойным нажатием и заполнить недостающие поля, такие как «Зачет авансов» (например, «Автоматический») и поля на закладке «Счета расчетов» (см. рисунок 6). Значения этих полей определяются учётной политикой вашей организации. Для проведения документа необходимо нажать кнопку «ОК».

4. Формирование документа «Счет-фактура»

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

Перенос данных — очень важный процесс в любой учетной системе, платформа 1С 8.3 и 8.2 не исключение. Ниже мы рассмотрим инструкцию, как проще всего перенести данные из одной системы в другую, имеющую аналогичную конфигурацию (для различных конфигураций можно использовать инструмент для программистов — или ).

Перед любыми действиями необходимо , изменения являются невозвратимыми!

Самый простой и удобный способ переноса данных из 1С 8.3 в 1С 8.3 бухгалтерия 3.0 — использование обработки Выгрузка и загрузка данных в формате XML (скачать — для 8.2 или для 1С 8.3 или на ИТС). Обработка универсальная и подходит для любых конфигураций.

Не будем вдаваться в подробности, рассмотрим пошаговую инструкцию по миграции данных с помощью данной обработки на примере простейшего переноса товаров.

Выгрузка данных в XML

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

Получите 267 видеоуроков по 1С бесплатно:

Сразу необходимо заполнить поле «Имя файла» — по этому пути будет создан новый файл данных, который мы будем загружать в базу приемник. Чуть ниже, в табличной части «Данные для выгрузки» необходимо выбрать те данные, которые мы хотим выгрузить из базы данных.

После выделения объекта из левой табличной части можно наложить отбор в правой табличной части:

В нашем примере я хочу выгрузить все товары с наименованием «Грабли».

После того как все настройке заполнены, данные можно выгружать. Для этого необходимо нажать на кнопку «Выгрузить данные»:

Загрузка данных из xml в 1с 8.3

Данные выгружены из базы источника, теперь их необходимо перенести в базу-приемник.

Для этого необходимо запустить обработку уже в той базе, в которую необходимо загрузить данные, и зайти на вкладку «Загрузка», выбрать выгруженный файл на диске и нажать на кнопку «Загрузить данные»:

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

2018-11-15T19:32:35+00:00

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

Обработка может использоваться только в тех случаях, когда информационная база, в которой осуществлялась выгрузка данных, и та, в которой данные загружаются, являются однородными (конфигурации идентичны, данные могут различаться), либо все выгружаемые объекты практически полностью идентичны по составу и типам реквизитов и табличных частей, свойствам "ведущего" объекта метаданных и так далее.

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

Обработка поддерживает выгрузку данных с возможностью задания отбора по периоду. Также реализована проверка объектов на наличие недопустимых символов при обмене через XML.

С уважением, (преподаватель и разработчик ).