Выгрузка любого запроса или таблицы значений в текст JSON, разбор JSON в таблицу

29.09.20

Разработка - Инструментарий разработчика

Отчет позволяет выгрузить любые данные из 1С в JSON текст, выполнив произвольный запрос к данным, в том числе со вложенными таблицами. Параметр для запроса можно задать на форме. Есть возможность использовать конструктор запросов прямо в отчете, а так же разбор несложного JSON текста в таблицу и вывод в табличный документ.

Скачать файлы

Наименование Файл Версия Размер
Запрос или Таблица Значений в JSON
.erf 13,87Kb
132
.erf 1.1 13,87Kb 132 Скачать

Отчет позволяет выгрузить любые данные из 1С в JSON текст, выполнив произвольный запрос к данным, прямо на форме.

Сами функции позволяют использовать их в коде, чтобы легко получать JSON текст из любых произвольных запросов или таблиц значений.

Также в JSON можно выгружать просто любую таблицу значений. Запись идёт через 1С объект "ЗаписьJSON". 

Получившийся JSON текст можно использовать для обмена с сайтами через HTTP POST запросы.

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

А визуальная часть будет работать на любой конфигурации с управляемыми формами. Отчет может быть подключен к дополнительным отчетам и обработкам в стандартные конфигурации.

Тестировалось на движке 1С: 8.3.8.1784, 8.3.13.1513, 8.3.16.1063 и на конфигурациях УТ 11.2.3.108, 11.4.6.166, БП 2.0.66.91, ЗУП 3.1.10.307

Кусочек кода из обработки:
 

//Функция Выполнения Запроса и конвертации его в JSON
Функция ЗапросВJsonСервер(ТекстЗапроса,ПараметрыЗапроса) 
    
    //Формируем ТЗвых из запроса
    ТЗвых = ЗапросВТЗ(ТекстЗапроса,ПараметрыЗапроса);
    
    //Это название массива для выгрузки в JSON
    ИмяТаблицы = "Товары"; 
    
    //Формируем текст JSON из ТЗвых
    ВыхТекст = ТЗвJSON(ТЗвых,ИмяТаблицы);
    
    Возврат ВыхТекст;    
КонецФункции    

 

JSON Запрос Таблица ТаблицаЗначений Выгрузка обмен http POST

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122091    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7281    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3521    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177733    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99343    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18106    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28104    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23599    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. PLAstic 295 07.02.20 11:57 Сейчас в теме
И как передаётся инфа о типах колонок? О ссылочных сущностях? Или речь только о примитивных типах?
Как выгружается пустой результат?
5. LastRoot 21 07.02.20 15:10 Сейчас в теме
(1) Выгрузка в текст, подразумевает что туда куда это будет загружаться - нет таких сущностей. Типы колонок не имеют значения, когда это всеравно всё переходит в текст, который будет разбираться на той стороне. Ну если нужно передать например сущность, то в запросе просто выводить все необходимые поля по сущности - которые будут по сути примитивными типами.

Пустой результат будет что-то типа:
{ 
 "type": "ИмяТаблицы", 
 "data": []
} 
9. PLAstic 295 07.02.20 15:23 Сейчас в теме
(5) Проверь. Тега data вообще не будет. Если ничего не изменили в 8.3.15.
10. LastRoot 21 07.02.20 15:26 Сейчас в теме
(9) Будет, потому что начало и конец формируется в ручном режиме как текст.
Данный отчет - это просто наработки, которые легко использовать у себя в коде. Ну или кому надо быстро данные перевести из 1С в JSON - там можно и руками "заголовок" подправить как хочется.
20. PLAstic 295 10.02.20 10:09 Сейчас в теме
(10) Считаю, обработка даже вредна, т.к. зачем-то учит пользоваться потеговым сбором и разбором текстов вместо использования CериализатораXDTO или даже фабрик и схем XDTO, если обмен будет регулярным. Почитайте на эту тему, видимо, это следующий шаг для вас.
21. LastRoot 21 11.02.20 09:25 Сейчас в теме
(20) Да, вероятно это может быть следующим шагом, когда надо что-то одинаковое всегда выгружать и загружать.
Но потегового сбора текста тут нет. Вот основная директива, которая делает всю задачу перевода итогов запроса в текст JSON:
ЗаписатьJSON(ЗаписьJSON, ВхМассив);

Поэтому не очень понятно как тут можно использовать CериализаторXDTO. Разбора JSON тут нет. Сможете подсказать?
2. awk 741 07.02.20 12:44 Сейчас в теме
Ждем обработку с функциями Сложить(А,Б), Вычесть(А,Б)...

Жесть....
user778500; d4rkmesa; DmitrySinichnikov; CyberCerber; TimurD; +5 Ответить
3. VmvLer 07.02.20 14:51 Сейчас в теме
(2) я бы в заголовок вставил еще "можно использовать в блокчейне"
сразу +100
CyberCerber; ixijixi; awk; +3 Ответить
4. awk 741 07.02.20 15:05 Сейчас в теме
(3) Ну и одобрено РПЦ... Тогда +100 к морали :)
6. LastRoot 21 07.02.20 15:15 Сейчас в теме
(4) РПЦ не одобрено, как и Ваш троллинг. Никто не претендует на какую-то уникальность или сложность, но в качестве готовой функции для простейшей выгрузки в JSON формат данных из 1С - почему бы и не воспользоваться. Если есть способ проще и быстрее, как выгрузить любые данные из 1С в JSON - пишите.
14. awk 741 07.02.20 15:39 Сейчас в теме
(6) ОК.

Тогда дарю всем:

Функция ЗначениеВСтрокуJSON(Значение) Экспорт
	Значение1 = Значение;
	Если ТипЗнч(Значение) = Тип("ТаблицаЗначений") Тогда
		Значение1 = ОбщегоНазначения.ТаблицаЗначенийВМассив(Значение);
	КонецЕсли;
	Запись = Новый ЗаписьJSON;
	Запись.УстановитьСтроку();
	ЗаписатьJSON(Запись, Значение1,,"ПростаяФункцияПреобразованияJSON", ЭтотОбъект);
	Возврат Запись.Закрыть();
	
КонецФункции


Функция СтрокаВЗначениеJSON(Строка, ПрочитатьВСоответствие=Ложь) Экспорт
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(Строка);
	Значение = ПрочитатьJSON(Чтение, ПрочитатьВСоответствие);
	Чтение.Закрыть();
	Возврат Значение;
КонецФункции


Функция ПростаяФункцияПреобразованияJSON(Свойство,Значение,ДополнительныеПараметры,Отказ) Экспорт
	Если ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Значение)) Тогда
		Возврат XMLСтрока(Значение);
	КонецЕсли;
КонецФункции
Показать
Hexed; magv; link_l; abasovit; Sergafan10; METAL; ulen; d.zhukov; chemezov; kuzyara; Razrab1c; leongl; purgin; CyberCerber; acanta; +15 Ответить
16. LastRoot 21 07.02.20 17:00 Сейчас в теме
(14) Что-то не увидел запроса к данным в вашем коде, и еще
ЗаписатьJSON(Запись, Значение1,,"ПростаяФункцияПреобразованияJSON", ЭтотОбъект); 

Как-то по ошибке вываливается.

Пока никак в качестве готовой функции для получения выгрузки данных использовать не получается. Но в целом конечно направление верное, подобным способом и сделана "конвертация" у меня, но ваш код пока не рабочий и не для запросов.
7. LastRoot 21 07.02.20 15:20 Сейчас в теме
(3) В этом и смысл, что можно быстро использовать где угодно, хоть в блокчейне. Иметь приличное количество таких небольших "обработок" - очень удобно, не думаешь над кодом, а думаешь над алгоритмом.

Можно строить дом из блоков, можно из кирпичей, а можно и из песка с глиной. Но проще работать с модулями, чем делать всё с нуля.
user720385; +1 Ответить
11. LastRoot 21 07.02.20 15:30 Сейчас в теме
(2)
Функция Сложить(Вх1,Вх2)
	Попытка
		Возврат Число(СтрЗаменить(СтрЗаменить(Вх1," ",""),Символы.НПП,""))+Число(СтрЗаменить(СтрЗаменить(Вх2," ",""),Символы.НПП,""));
	Исключение
		Возврат Ложь;
	КонецПопытки;
КонецФункции


Вторую не осилил, но думаю что повод ответить снова предоставил, ведь больше заняться нечем, кроме как оставлять комментарии не о чем.
8. acanta 07.02.20 15:22 Сейчас в теме
А системный раздел в рам диск уже не в моде?
12. LastRoot 21 07.02.20 15:32 Сейчас в теме
(8) Мода возвращается, особенно к тем, кому раньше она была не интересна.
13. Pixar0000 07.02.20 15:35 Сейчас в теме
выгрузка сама в себе - потом пилить со стороны приема это "разгребать" - JSON так не работает
15. LastRoot 21 07.02.20 16:17 Сейчас в теме
(13) Поясните как "так не работает" текстовый формат, который на самом простом уровне представляет легкочитаемые конструкции, которые так же легко десериализуются в разных языках. В данном случае, что сериализация, что обратный процесс максимально простой и универсальный. Не требующий сложного разбора. А разгребать, возможно потребуется, уже получившийся объект, но без этого никуда.

Придумайте как одинаковым способом будет удобнее выгрузить справочник или например регистр или может быть документ, так чтобы разгребать не надо было? Ну или хотя бы предложите, чтобы понимать куда двигаться и ради чего?
17. пользователь 08.02.20 19:54
Сообщение было скрыто модератором.
...
18. пользователь 08.02.20 19:56
Сообщение было скрыто модератором.
...
19. пользователь 09.02.20 12:10
Сообщение было скрыто модератором.
...
22. ProgrammistC 60 10.08.20 18:44 Сейчас в теме
"Отчет позволяет выгрузить любые данные из 1С в JSON текст, выполнив произвольный запрос к данным, прямо на форме" - не любые, вложенные таблицы не может, я расстроен...
24. LastRoot 21 29.09.20 16:42 Сейчас в теме
(22) Доработал, так что теперь позволяет и вложенные таблицы + добавил возможность устанавливать параметр на форме.
23. 6есик 52 29.09.20 16:34 Сейчас в теме
Может кому еще пригодится :

СтрокаJSON = "{""data"":"+ТЗВsimpleJSON(Запрос.Выполнить().Выгрузить())+"}";

Функция ТЗВsimpleJSON(ТЗ)
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.ПроверятьСтруктуру = Ложь;
	ЗаписьJSON.УстановитьСтроку();
    ЗаписьJSON.ЗаписатьНачалоМассива();
    
    Для Каждого Стр Из ТЗ Цикл
        ЗаписьJSON.ЗаписатьНачалоОбъекта();
        Для Каждого Колонка Из ТЗ.Колонки Цикл
            ЗаписьJSON.ЗаписатьИмяСвойства(СокрЛП(Колонка.Имя));
            ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Стр[Колонка.Имя]));              
        КонецЦикла;
        ЗаписьJSON.ЗаписатьКонецОбъекта();
	КонецЦикла;
	
    ЗаписьJSON.ЗаписатьКонецМассива();
    Возврат ЗаписьJSON.Закрыть();
КонецФункции
Показать
Огонек; user1826519; Dilovar9; iCortezik; +4 Ответить
25. LastRoot 21 29.09.20 16:57 Сейчас в теме
(23) Да, почти так и генерируется в обработке JSON, ну только еще с визуальной частью и параметром, плюс добавил туда возможность использовать вложенные запросы.
26. LastRoot 21 06.10.20 16:18 Сейчас в теме
Добавилась возможность использовать конструктор запросов прямо в отчете, а так же сделан разбор несложного JSON текста в таблицу и вывод в табличный документ.
27. siranush 17 20.09.23 17:42 Сейчас в теме

        ТЗ = Запрос.Выполнить().Выгрузить();
	
	ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(ТЗ);
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ФабрикаXDTO.ЗаписатьJSON(ЗаписьJSON, ОбъектXDTO);
	ТекстJSON = ЗаписьJSON.Закрыть();

Показать
30. 7OH 69 10.11.23 12:15 Сейчас в теме
28. siranush 17 22.09.23 12:07 Сейчас в теме
Функция преобразования Объекта в JSON

Нужно передать массив структур


ТЗ = Запрос.Выполнить().Выгрузить();
	
МассивСтруктур = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТЗ);

СтрокаJSON = ОбъектВJSON(МассивСтруктур);


Функция ОбъектВJSON(Объект) Экспорт
	
	Парам = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);
	
	Запись = Новый ЗаписьJSON;
	Запись.УстановитьСтроку(Парам);
	ЗаписатьJSON(Запись, Объект);
	Возврат Запись.Закрыть();
	
КонецФункции

Показать
29. LastRoot 21 22.09.23 13:01 Сейчас в теме
(28)
Функция ОбъектВJSON(Объект) Экспорт
...


Как я писал ранее, конечно преобразование делается через Новый ЗаписьJSON, но с дополнительными удобствами, начиная с визуализации запроса и ответа, возможности использовать параметры, а также вывода в Excel таблицу и заканчивая тем, что поддерживаются вложенные таблицы.
Оставьте свое сообщение