Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как без труда передавать данные между системами на базе 1С 8
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > База знаний > Наши статьи > 1С Предприятие 8
Vofka
Часто приходится писать какие-то обмены данными между разными либо одинаковыми системами. Кто-то использует для этого конфигурацию Конвертация данных. Сам лично не имею большого опыта работы с ней, поэтому не могу судить про её функциональность и удобство работы. Но во многих случаях, если надо сделать какой-то не сложный обмен, например, обменяться номенклатурой или контрагентами, гораздо проще сделать выгрузку в какой-то файл в своем формате с последующей загрузкой оттуда. Отчасти это проще потому, что не надо разбираться с Конвертацией smile.gif . Короче. Статья не про Конвертацию, поэтому кому не интересно - можно закрывать.

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

Функция ДанныеВСтроку(Данные)
    
    Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    Сериализатор.ЗаписатьXML(ЗаписьXML, Данные, НазначениеТипаXML.Явное);
    Возврат ЗаписьXML.Закрыть();
    
КонецФункции


На выходе получаем строку, которую можно записать в файл, передать в web/http сервис или по OLE. В принимающей системе, чтобы получить из строки объект, достаточно вызвать эту функцию:

Функция ДанныеИзСтроки(Строка)
    
    Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
    ЧтениеXML = Новый ЧтениеXML();
    ЧтениеXML.УстановитьСтроку(Строка);
    Возврат Сериализатор.ПрочитатьXML(ЧтениеXML);
    
КонецФункции


Нужно помнить о том, что если конфигурации не идентичны и вы будете таким образом передавать какой-то ссылочный объект или набор записей, то на стороне базы приемника чуда не произойдет и если структура объекта конфигурации отличается хоть как-то, то вы получите ошибку преобразования, потому что сериализатор XDTO не сможет распознать переданный ему XML.
pablo
Тогда уже следует озаглавить "Как без труда передавать данные между ИДЕНТИЧНЫМИ конфигурациями на базе 1С 8"
sava1
+ Взять готовую обработку.
Vofka
Цитата(pablo @ 10.03.16, 17:25) необходимо зарегистрироваться для просмотра ссылки
Тогда уже следует озаглавить "Как без труда передавать данные между ИДЕНТИЧНЫМИ конфигурациями на базе 1С 8"

Я как раз использую такой подход для обмена между разными конфигурациями. Очень удобно паковать какие-то данные в Структуру и в базе приемнике одной строкой получить Структуру с нужными свойствами.
pablo
Тогда "Как без труда передавать данные ПРОСТЫХ ТИПОВ между конфигурациями на базе 1С 8"
Vofka
pablo, а ТабличныйДокумент, это простой тип? smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.