Сериализация данных 1С

13.01.21

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

В данной статье я хочу рассказать о сериализации данных в 1С.

А сейчас немного о самом определении: Сериализация указывает возможность поддержки чтении/записи значений данных.

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

Хочется уточнить, что речь идет не только сериализации, применимой в рамках одной базы данных, но и о XML – сериализация. Последняя является отдельной возможностью, и применяется между различными базами данных.

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

Сейчас рассмотрим сериализацию в рамках одной информационной базы.

Для сохранения значений во время сеанса используют методы  ЗначениеВФайл() и ЗначениеИзФайла(). Если же нам требуется сохранить данные между сеансами, что удобно для пользователя, чтобы не вводить данные каждый раз на форме, то мы будем использовать методы СохранитьЗначение() и ВосстановитьЗначение(), но стоит обратить внимание что данные методы работают только при корректном завершении работы в программе,  если вдруг пк будет обесточен, то значения не сохранятся.  Также не стоит забывать о сохранении значений в объекте типа ХранилищеЗначений. Подобный тип используется для картинок, образов файлов, так как для них в конфигурации нет соответствующих типов полей.

Если необходимо сохранить значения в строку и восстановить значения из строки, то для этого используются методы ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр(). Эти методы реализованы в основном для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать их в большинстве случаев не рекомендуется. Для сохранения значений в базу данных рекомендуется использовать, описанный выше, объект типа ХранилищеЗначения, а для получения некоторого строкового идентификатора ссылочного значения можно использовать возможность получения уникального идентификатора ссылки (метод УникальныйИдентификатор()) и соответственно преобразование его к строке.

А теперь немного о XML – сериализации.

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

Есть глобальный метод ЗаписатьXML() предназначенный для этого.

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

К простым типам данных относятся типы, значения которых представляются подсистемой XML-сериализации в виде элементов XML только с текстовым содержимым:

К первому относятся:

  • Число;
  • Строка;
  • Дата;
  • Булево;
  • ДвоичныеДанные;
  • Null;
  • УникальныйИдентификатор;
  • ХранилищеЗначения;
  • все ссылки на объекты базы данных;
  • ссылки на перечисления, определяемые в метаданных.

Значения сложных типов представляются в виде элементов XML, содержащих вложенные элементы:

  • Тип;
  • ОписаниеТипов;
  • КонстантаМенеджерЗначения.<имя константы>;
  • все объекты базы данных;
  • наборы записей регистров, последовательностей, перерасчетов;
  • УдалениеОбъекта;

 

Пример кода

Функция ПолучитьПримерXML(Значение)

ЗаписьПримерXML = Новый ЗаписьXML;

ЗаписьПримерXML.УстановитьСтроку();

ЗаписатьXML(ЗаписьПримерXML, Значение);

Возврат ЗаписьПримерXML.Закрыть();

КонецФункции

Для всех остальных типов, для которых невозможно использовать метод ЗаписатьXML() - будем преобразовывать сначала значения в XDTO, а затем уже используем выше описанный метод.

Рассмотрим на примере подробнее:

У нас есть таблица значений, которую мы хотим  записать в XML:

 

Пример кода
 

Функция ПолучитьПримерXML(Значение)

ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(Значение);

ЗаписьПримерXML = Новый ЗаписьXML;

ЗаписьПримерXML.УстановитьСтроку();

ФабрикаXDTO.ЗаписатьXML(ЗаписьПримерXML, ОбъектXDTO);

Возврат ЗаписьПримерXML.Закрыть();

КонецФункции

Надеюсь, моя статья была для Вас полезна. Спасибо, что прочли.

Сериализация данных СериализаторXDTO XDTO XML

См. также

SALE! 20%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141529    798    297    

419

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

35000 руб.

15.12.2021    24023    169    51    

127

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 руб.

23.07.2020    51272    228    69    

185

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36594    94    66    

89

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56210    59    105    

61

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171178    303    257    

378

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186885    589    509    

526

SALE! 10%

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

55778 50200 руб.

24.04.2015    194984    150    243    

280
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dsdred 3631 13.01.21 14:53 Сейчас в теме
Откройте для себя JSON
-> СериализаторXDTO.ЗаписатьJSON(
Аж в 8.3.6 появилось
1CUnlimited; arbuz2525; simuljakr; vindsor; Риник; mysm; Поручик; Drivingblind; +8 Ответить
2. capitan 2507 14.01.21 09:32 Сейчас в теме
Руководитель поручил написать статью на ИС ?
3. caponid 14.01.21 15:31 Сейчас в теме
Для всех остальных типов, для которых невозможно использовать метод ЗаписатьXML() - будем преобразовывать сначала значения в XDTO, а затем уже используем выше описанный метод
и упадем в исключение при чтении, если поменяются метаданные.

ЗЫ: не тянет это на статью....
4. o4karek 18.01.21 08:57 Сейчас в теме
Сериализация указывает возможность поддержки чтении/записи значений данных.

Сериализация - это не возможность. Сериализация - это процесс.
Почитайте хотя-бы, как сама 1с определяет термин "сериализация".
5. lev6975 19.05.21 20:59 Сейчас в теме
не работает код для структуры
ошибка отображения типов!
Если кому пригодится - есть в 1С такая волшебная и всеми позабытая функция "ЗначениеВСтрокуВнутр(ЛюбойОбъект)"
Преобразует все надежно и без всяких ошибок...
Минусы - плохочитаемый контент... но тут уже кому чего, моим требованиям оно не помешало
serverstar; sulfur17; Raskad; +3 Ответить
6. user1312100 225 11.06.21 06:14 Сейчас в теме
(4) Что является здесь объектом?
7. UralKIT 1 06.12.21 20:08 Сейчас в теме
если 1С изменила имя объекта после обновления, а они это любят делать очень часто, сериализация в пролёте
Оставьте свое сообщение