Универсальный метод сериализации значений в XML для локальных баз 1С на любом типе клиента под платформы 8.2 и 8.3

15.09.21

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

Описаны способы сериализации данных со стороны 1С методов.

В настоящее время со стороны 1С существуют 3 метода сериализации значений:

  1. Старый способ со времен 7.7.
  2. Метод XML - довольно распространенный.
  3. Метод JSON - начиная с 8.3.6. 

Однако, при знакомстве с мобильной платформой выяснились следующие проблемы: старые добрые функции для серилизации не работают - это ЗначениеИзВнутСтроки() и ЗначениеВоВнутСтроку(). Точнее их вообще нет здесь.

Так как при создании моей Консоли Запросов я использовал не только платформу 8.3, но и 8.2 - то единственным доступным вариантом в моем случае остался 2-й метод. 

 

Универсальная Сериализация через XML

Стандартно для этих целей существуют следующие функции из БСП: 

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

// Выполняет преобразование (десериализацию) XML-строки в значение.
// См. также ЗначениеВСтрокуXML.
//
// Параметры:
//  СтрокаXML - Строка - XML-строка, с сериализованным объектом..
//
// Возвращаемое значение:
//  Произвольный - значение, полученное из переданной XML-строки.
//
Функция ЗначениеИзСтрокиXML(СтрокаXML) Экспорт
	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(СтрокаXML);
		
	Значение=СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
	Возврат Значение;
	
КонецФункции

Эти функции, взятые из БСП, - хорошие. Однако передать через них серьезные объекты (в моем случае это был тип данных РезультатЗапроса) без выгрузки или других танцев с бубном в рамках портирования консоли на мобильные платформы оказалось абсолютно невозможным, так как данные типы тип не сериализуются XDTO. 

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

  1. Если тип сериализуется - ничего не делаем. Сразу преобразуем.
  2. Если нельзя сериализовать- упаковываем в хранилище значений. Следует отметить, что хранилище значений упаковывается также, чтобы с ним не было проблем.

Итоговые правки в код дают следующие функции:

// Преобразованы в могут быть любые объекты (дополнено через ХранилищеЗначения.
// См. также ЗначениеИзСтрокиXML.
//
// Параметры:
//  Значение - Произвольный - значение, которое необходимо сериализовать в XML-строку.
//
// Возвращаемое значение:
//  Строка - XML-строка.
//
Функция ЗначениеВСтрокуXML(Значение) Экспорт
	
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.УстановитьСтроку();
    Если Значение=Тип("ХранилищеЗначения") Тогда
      //Сохраняем жизнь исходному типу - через оборачивание.
        ХранилищеЗначения=новый ХранилищеЗначения(Значение);
		СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ХранилищеЗначения);
    иначе
       //Выполняем Сериализацию:
	   попытка
		  СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение);
	   исключение
		 ХранилищеЗначения=новый ХранилищеЗначения(Значение);
		 СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ХранилищеЗначения);
	   КонецПопытки;
    КонецЕсли;
	Возврат ЗаписьXML.Закрыть();
КонецФункции

// Выполняет преобразование (десериализацию) XML-строки в значение.
// См. также ЗначениеВСтрокуXML.
//
// Параметры:
//  СтрокаXML - Строка - XML-строка, с сериализованным объектом..
//
// Возвращаемое значение:
//  Произвольный - значение, полученное из переданной XML-строки.
//
Функция ЗначениеИзСтрокиXML(СтрокаXML) Экспорт
	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(СтрокаXML);	
	ХранилищеЗначение=СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
    //Восстанавливаем значение из Хранилища:
	Если ХранилищеЗначение=Тип("ХранилищеЗначения") Тогда
		
		Возврат ХранилищеЗначение.Получить();

	иначе 
		Возврат ХранилищеЗначение;

	КонецЕсли;
	
КонецФункции

Если есть необходимость ввести универсальную функцию, которая совместима на компьютерных платформах со старым внутренним форматом 1С (мне понадобилось для работы с Консолью Запросов на Windows), тогда полученные универсальные функции:

Функция УниверсальнаяЗначениеВСтрокуВнутр(Значение) 
	
	Попытка
		
		
		возврат Вычислить("ЗначениеВСтрокуВнутр(Значение)");
		
	Исключение
		//Для мобильных приложений выполняем по правилам XMl-Функций, которые были переделаны:
		
		возврат ЗначениеВСтрокуXML(Значение);
		
		
	КонецПопытки;	
	
КонецФункции	


Функция УниверсальнаяЗначениеИзСтрокиВнутр(Значение) 
	
	Попытка
		
		возврат Вычислить("ЗначениеИзСтрокиВнутр(Значение)");
		
	Исключение
		//Для мобильных приложений выполняем по правилам XMl-Функций, которые были переделаны:
		
		возврат ЗначениеИзСтрокиXML(Значение);
				
	КонецПопытки;	
	
КонецФункции

PS: приведенными функциями в пределах одной базы можно пользоваться на следующих платформах: 

  1. Компьютерные: 1С 8.2 и 1С 8.3 - Тонкий, Толстый, ВебКлиент.
  2. На мобильных платформах 8.3 можно использовать универсальные переделанные функции БСП для аналога внутренних значений.

Тестировалось на платформах 8.2 и 8.3. Режим совместимости с 8.1 не пострадал.

ЗначениеВоВнутСтроку ЗначениеИзВнутСтроки мобильная платформа.

См. также

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135397    725    291    

388

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68720    179    139    

111

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 руб.

23.07.2020    46634    199    64    

162

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 руб.

15.12.2021    20487    134    38    

92

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

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

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

48278 43450 руб.

03.12.2020    34345    81    58    

78

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

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

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 45650 руб.

10.07.2018    67653    41    122    

46

Перенос данных из Парус 10 в ЗГУ ред.3

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9289    9    8    

11

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

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

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.04.2024, версия 9.9 - 9.10)

14400 руб.

20.11.2015    151210    366    376    

502
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Никулин Леонид 4 27.07.23 13:03 Сейчас в теме
В БСП:
Ведомость = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаXML); // ТЗ из XML строки
СтрокаXML = ОбщегоНазначения.ЗначениеВСтрокуXML(Ведомость); // ТЗ в XML строку
2. user1206119 80 27.07.23 13:38 Сейчас в теме
(1) Таблица значений может быть параметром серилизатора, а результат запроса, внешняя обработка нет. Их нужно помещать в хранилище значений предварительно. Поэтому БСП функционал с этими функциями мне не подошёл. Я таким образом перегоняю Результат Запроса.
Оставьте свое сообщение