1С сериализация в xml

1С сериализация в xml

Программирование системы 29.10.2016 13:17 8919

XML сериализация — это преобразование объектов 1С:Предприятия 8 в строку содержащию данные в xml формате. Данный механизм часто применяется при переносе данных из одной базы в другую. Не все объекты могут быть сериализованы. В Синтаксис-пощнике можно посмотреть информацию о том сериализуется или нет тот или иной объект. Если он сериализуется, то в его свойствах будет написано об этом: Сериализуется. Данный объект может быть сериализован в/из XDTO.

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

2. Сериализованные объекты платформы, такие как Документ, Справочник или другие метаданные, могут быть перенесены, если их структура в базе источнике и в базе приемнике одинаковая.

3. Объекты имеющие разную структуру в источнике и приемнике не могут быть перенесены только с использованием сериализации, так как не могут быть автоматически распознаны в базе приемнике.

Чтобы выполнить перенос, нужно из базы источника выгрузить в XML файл сериализованное представление объекта. В базе приемнике прочитать содержимое XML файла и преобразовать в объект.

Для сериализации предназначен специальный объект "СериализаторXDTO".

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

В прошлой статье я рассказывал о том, что такое XDTO в 1С, для чего этот механизм нужен и как его использовать.

Сегодня я попробую рассказать о еще одном применении механизма XDTO, а именно об XDTO-сериализации.

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

Читайте также:  Asus zenfone max m1 zb555kl nfc

Пример справочника

В этом случае передать данные из одной конфигурации в другую достаточно просто.

После сериализации у нас получается вот такой файл:

XDTO-сериализация объекта

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

Нужно заметить, что XDTO-сериализации подвергаются не только объекты конфигурации (документы, справочники), но и многие объекты встроенного языка (структуры например):

XDTO-сериализация объектов встроенного языка

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

На самом деле, я не знаю, как выполнить эту задачу при помощи объекта «СериализаторXDTO», я пользуюсь только фабрикой, но продолжаю считать этот процесс XDTO-сериализацией. Если Вы знаете более правильный способ, то я с удовольствием его изучу. А сейчас продолжим.

Во-первых нам потребуется XDTO-пакет (или соответствующий XSD-файл) описывающий данные которые мы хотим сериализировать. Для своего справочника я сделал вот такой XDTO-пакет:

XDTO-пакет для сериализации

Как видно, я хочу чтобы в сериализации участвовали только «Код», «Наименование» и «Реквизит1».

Сама XDTO-сериализация выглядит так:

В коде выше на основании XDTO-пакета создается фабрика, затем тип объекта XDTO, а после этого и сам объект XDTO нужного типа. После заполнения всех нужных свойств, объект записывается в XML-файл:

Выборочная XDTO-сериализация объекта

По очень похожему алгоритму происходит и десериализация объекта:

На выходе мы получаем объект XDTO со свойствами заполненными из файла, дальше мы можем делать с этим объектом все, что нам нужно.

На этом все, буду рад услышать любые дополнения и замечания.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Здравствуйте! Ваш блог нашла поиском по ошибке, кот возникает в конфигурации Витязь (достроенная БГУ) при загрузке комплекта отчетности.
Если Вы так просто рассказываете о непонятной сериализации, то:
Помогите разобраться что происходит и как выпутаться из этой ситуации!

Читайте также:  Http error 403 что это значит

Вот проблема:
[2016-07-28 12:49:51 (•)]: Начало загрузки существующего объекта.
— Объект: «ф.0503178стр. 02гр. 3»
— Метаданные: «Справочник.ОперандыПоказателей»
[EESE0000] [SDXC0200] Объект XDTO ‘/assertionGroup[4]/assertionGroup[1]/assertionDef[63]/operand[2]’ не может быть прочитан.
Модуль: , Номер строки:
причина:

[EESE0000] Поле объекта не обнаружено (СпособыВычисленияПараметровОперандов)
Модуль: Обработка.СериализацияУниверсальнаяОтчетностьМета.МодульОбъекта, Номер строки: 1 514
Модуль: Обработка.ДиспетчерСериализации.МодульОбъекта, Номер строки: 1 042

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

Простой пример xml сериализации объекта в 1с8.

В этом примере приведен простой код сериализация объектов.

Это две функции:
1. Получить xml файл из объекта
ПолучитьСериализациюОбъекта(СсылкаНаОбъект,ПутьКФайлу)
2. Получить объект из xml файла
ПолучитьОбъектИзXML(ПутьКФайлу)

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

  • Организуем вам индивидуальное экспресс обучение программам 1С.
  • Мы поможем Вам начать работать с программами 1С.
  • Мы поможем Вам настроить ваши отчеты в 1С.
  • Установим и настроим 1С под ваши задачи.
  • Поможем сделать ввод начальных остатков по складам и контрагентам
  • Перенесем данные из старых систем.
  • Подскажем как избежать ошибок.

Доработка и сопровождение 1С:

  • Доработаем существующие или создадим новые печатных формы и документы.
  • Разработаем внешние отчеты по Вашим требованиям.
  • Напишем внешние обработоки по загрузке документов из учетных (торговых) систем в бухгалтерию.
  • Разработаем приложения для выгрузки данных на сайты.

Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

Ссылка на основную публикацию
Adblock detector