Функция для преобразования структуры данных 1С в JSON
Взято тут: http://pastebin.com/HFaEaETX
Спасибо Хабраюзеру http://habrahabr.ru/users/igrishaev/
Функция json(Объект)
Тип = ТипЗнч(Объект);
Если
Тип = Тип("Массив")
ИЛИ Тип = Тип("ТаблицаЗначений")
ИЛИ Тип = Тип("СписокЗначений")
Тогда
Количество = Объект.Количество();
Результат = "[";
Для н = 0 ПО Количество - 1 Цикл
Результат = Результат + json(Объект[н]) + ?(н < Количество - 1, ", ", "");
КонецЦикла;
Результат = Результат + "]";
Возврат Результат;
ИначеЕсли
Тип = Тип("Структура")
ИЛИ Тип = Тип("Соответствие") Тогда
н = 0;
Количество = Объект.Количество();
Результат = "{";
Для Каждого Пара Из Объект Цикл
Результат = Результат + json(Пара.Ключ) + ": " + json(Пара.Значение) + ?(н < Количество - 1, ", ", "");
н = н + 1;
КонецЦикла;
Результат = Результат + "}";
Возврат Результат;
ИначеЕсли Тип = Тип("СтрокаТаблицыЗначений") Тогда
Результат = "{";
Колонки = Объект.Владелец().Колонки;
Количество = Колонки.Количество();
Для н = 0 ПО Количество - 1 Цикл
Ключ = Колонки[н].Имя;
Результат = Результат + json(Ключ) + ": " + json(Объект[Ключ]) + ?(н < Количество - 1, ", ", "");
КонецЦикла;
Результат = Результат + "}";
Возврат Результат;
ИначеЕсли Тип = Тип("ЭлементСпискаЗначений") Тогда
Возврат json(Объект.Значение);
ИначеЕсли Тип = Тип("Строка") Тогда
Результат = Объект;
Результат = СтрЗаменить(Результат, "\", "\\");
Результат = СтрЗаменить(Результат, "/", "\/");
Результат = СтрЗаменить(Результат, """", "\""");
Результат = СтрЗаменить(Результат, Символы.ВК, "\r");
Результат = СтрЗаменить(Результат, Символы.Таб, "\t");
Результат = СтрЗаменить(Результат, Символы.ПС, "\n");
Возврат """" + Результат + """";
ИначеЕсли Тип = Тип("Число") Тогда
Возврат Формат(Объект, "ЧРД=.; ЧН=0; ЧГ=0");
ИначеЕсли Тип = Тип("Булево") Тогда
Возврат Формат(Объект, "БЛ=false; БИ=true");
ИначеЕсли Тип = Тип("Дата") Тогда
Возврат json(Формат(Объект, "ДФ=yyyy-MM-ddThh:mm:ss"));
ИначеЕсли
Объект = Неопределено
ИЛИ Объект = Null
Тогда Возврат "null";
ИначеЕсли
Справочники.ТипВсеСсылки().СодержитТип(Тип)
Или Документы.ТипВсеСсылки().СодержитТип(Тип)
Тогда
Возврат json(Объект.УникальныйИдентификатор());
Иначе
Возврат json(Строка(Объект));
КонецЕсли;
КонецФункции