За основу брались функции преобразования из JSON и UnJSON в 1С
Добавлена поддержка любых XML-сериализуемых типов (ссылочных типов 1С, дат, перечислений, двоичных данных, хранилище значений и др) + объектов 1С (справочников, документов, ПВХ, ПВР). При передачи объектов полное соответствие структур баз отправителя и получателя не обязательно. Совпадающие реквизиты заполняются, не совпадающие игнорируются. Если объект в базе приемнике найден, то он перезаполняется, иначе создается новый.
Преобразование простым обходом коллекций и обратное преобразование разбором строки. Возможно, для 8.3.6 можно будет переписать разбор через встроенные функции по работе с JSON для более быстрой работы.
Работа аналогична исходной обработке. Есть 2 функции: преобразование из строки в JSON и обратное из JSON в строку.
1. В первой базе выполняем команду "СтрокаJSON = JSON(Значение)";
2. Строковое значение "СтрокаJSON" передаем в другую базу любым способом (через файл, веб-сервис, .COM);
3. Во второй базе выполняем обратное преобразование "Значение = UnJSON(СтрокаJSON)";
Для использования достаточно перенести функции из модуля обработки в общий модуль и дополнительно указать соответствие между типами ссылок в двух базах.
#Область ПрограммныйИнтерфейс
Функция JSON(Значение) Экспорт
СоответствиеХМЛ = Новый Соответствие;
// СоответствиеХМЛ.Вставить(Тип("Тип этой 1С базы"),"Тип 1С базы получателя");
СоответствиеХМЛ.Вставить(Тип("Дата"),"Дата");
СоответствиеХМЛ.Вставить(Тип("ВидДвиженияНакопления"),"ВидДвиженияНакопления");
СоответствиеХМЛ.Вставить(Тип("ДвоичныеДанные"),"ДвоичныеДанные");
СоответствиеХМЛ.Вставить(Тип("ХранилищеЗначения"),"ХранилищеЗначения");
СоответствиеХМЛ.Вставить(Тип("УникальныйИдентификатор"),"УникальныйИдентификатор");
СоответствиеХМЛ.Вставить(Тип("ВидСчета"),"ВидСчета");
СоответствиеХМЛ.Вставить(Тип("ДокументСсылка.Поступление"),"ДокументСсылка.ПоступлениеТоваровУслуг");
СоответствиеОбъектов = Новый Соответствие;
// ДЛЯ УКАЗАННЫХ ТУТ ОБЪЕКТОВ ОБЯЗАТЕЛЬНО УКАЗАНИЕ СООТВЕТСТВИЯ ССЫЛОК В СТРУКТУРЕ СоответствиеХМЛ
// СоответствиеОбъектов.Вставить(Тип("Тип объекта этой 1С базы"),"Конструктор нового объекта базы получателя");
СоответствиеОбъектов.Вставить(Тип("ДокументОбъект.Поступление"),"Документы.ПоступлениеТоваровУслуг.СоздатьДокумент()");
СоответствиеТипов = Новый Структура("СоответствиеХМЛ,СоответствиеОбъектов",СоответствиеХМЛ,СоответствиеОбъектов);
Возврат НеФорматированныйJSON(Значение,СоответствиеТипов);
КонецФункции
Функция UnJSON(СтрJSON) Экспорт
Перем Значение;
Если ПолучитьЗначениеJSON(СтрJSON,Значение)=0 Тогда
Возврат Значение
КонецЕсли;
Возврат Неопределено
КонецФункции
#КонецОбласти
У обработки есть форма с несколькими примерами для проверки преобразования.
В приложении 2 варианта обработки. Первая преобразует только XML-сериализуемых типы, вторая также объекты 1С (справочники, документы, ПВХ, ПВР).
UPD. Пример использования:
1. Выгрузка/загрузка данных в формате JSON для отличающихся конфигураций (Такси+ОФ) - универсальная обработка по переносу данных между любыми конфигурациями.