Вступление
Возникла задача удобного просмотра и редактирования JSON объектов в интерфейсе 1С.
Поиском на infostart нашел несколько похожих по смыслу обработок но реализованных через дерево значений 1С, после использование онлайн инструментов http://jsoneditoronline.org/ использование интерфейса построенного на дереве значений показалось сильно не удобным.
В результате решил сделать собственный вариант который позволил бы использовать все возможности http://jsoneditoronline.org/ в интерфейсе 1С.
Как основа для обработки используется сайт http://jsoneditoronline.org/ (так же по похожему принципу можно использовать и другие, но этот на мой взгляд самый удобный и хорошо переваривает большие JSON объекты).
Основная сложность при разработке была в поиске методов Установки текста, Парсинга текста, Получения результатов, и способе их вызова из 1С.
Описание
В обработке реализованы 2 формы:
- Форма - основная форма которая содержит пример вызова редактора.
&НаКлиенте
Процедура ТекстJSONОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ОткрытьФорму("ВнешняяОбработка.РедакторJSON.Форма.РедакторJSON",Новый Структура("ТекстJSON",ТекстJSON),Элемент,,,,Новый ОписаниеОповещения("ОбработкаРезультатаРедактиораJSON",ЭтотОбъект),РежимОткрытияОкнаФормы.Независимый);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаРезультатаРедактиораJSON(РезультатЗакрытия,ДопПараметры) Экспорт
Если РезультатЗакрытия<>Неопределено тогда
ТекстJSON=РезультатЗакрытия
КонецЕсли;
КонецПроцедуры
- РедакторJSON - форма редактора (для использования можно встроить в конфигурацию в качестве общей формы).
При открытии формы редактора, происходит загрузка сайта в "Поле HTML документа", затем:
- Отключается реклама;
- Удаляются лишние блоки оформления;
- Путем вызова JS функций Устанавливается текст JSON;
- Инициируется парсинг JSON и построение дерева объектов.
Далее можно работать с текстом, добавлять объекты, изменять значения (как в редакторе так и в дереве).
При нажатии на "Сохранить и закрыть":
- Извлекается текст с учетом внесенных изменений;
- Передается в качестве результата закрытия;
Проверялось на Windows, Тонкий/Толстый клиенты, 8.3.14.1630.