Формирование строки json в 1С: 7.7

Публикация № 960486

Разработка - Практика программирования

Обмен данными json

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

Формирование строки json сводится к использованию 5 функций

НовыйОбъект()

ДобавитьВОбъект()

НовыйМассив()

ДобавитьВМассив()

Value()

и финальной функции

СформироватьСтрокуJSON_OBJECT()


// Пример формирования строки json. Взят из  https://jsonformatter.org/
Процедура Сформировать()

	Tom = НовыйОбъект();
	ДобавитьВОбъект(Tom,"id",Value("Строка","1"));
	ДобавитьВОбъект(Tom,"firstname",Value("Строка","Tom"));
	ДобавитьВОбъект(Tom,"lastname",Value("Строка","Cruise"));
	ДобавитьВОбъект(Tom,"photo",Value("Строка","https://jsonformatter.org/img/tom-cruise.jpg"));

	Maria = НовыйОбъект();
	ДобавитьВОбъект(Maria,"id",Value("Строка","2"));
	ДобавитьВОбъект(Maria,"firstname",Value("Строка","Maria"));
	ДобавитьВОбъект(Maria,"lastname",Value("Строка","Sharapova"));
	ДобавитьВОбъект(Maria,"photo",Value("Строка","https://jsonformatter.org/img/Maria-Sharapova.jpg"));
   
	Robert = НовыйОбъект();
	ДобавитьВОбъект(Robert,"id",Value("Строка","3"));
	ДобавитьВОбъект(Robert,"firstname",Value("Строка","Robert"));
	ДобавитьВОбъект(Robert,"lastname",Value("Строка","Downey Jr."));
	ДобавитьВОбъект(Robert,"photo",Value("Строка","https://jsonformatter.org/img/Robert-Downey-Jr.jpg"));

	
	employee_array = НовыйМассив();
	ДобавитьВМассив(employee_array,Value("Object",Tom));
	ДобавитьВМассив(employee_array,Value("Object",Maria)); 
	ДобавитьВМассив(employee_array,Value("Object",Robert)); 
	
	employee = НовыйОбъект();
	ДобавитьВОбъект(employee,"employee:",Value("Array",employee_array));
	
	employees = НовыйОбъект();
	ДобавитьВОбъект(employees,"employees:",Value("Object",employee));   
	
	Результат = СформироватьСтрокуJSON_OBJECT(employees) ;   // Само формирование строки json
	
	Результат = ПреобразоватьСтрокуВУТФ8(Результат );	    // Взято из //infostart.ru/public/18816/
	
	json_file = СоздатьОбъект("Текст");
	json_file.ДобавитьСтроку(Результат);   
	
	ИмяФайла = "Sample" ;
	Путь = "";
	
	Если ФС.ВыбратьФайл(1,ИмяФайла,Путь,"Сохранить в файле","Файлы json (*.json)|*.json","json",)=1 Тогда
		json_file.Записать(Путь+ИмяФайла );
	КонецЕсли;
КонецПроцедуры                                        


//Ещё один пример обхода справочника Сотрудники 
// Будет работать, если такой справочник  и реквизиты Должность и ДатаРождения есть в конфигурации

Процедура Выполнить()
	СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); 
	// Формируем Object и сохраняем в Таблице значений
	ТЗ =СоздатьОбъект("ТаблицаЗначений");
	ТЗ.НоваяКолонка("Obj");
	СпрСотр.ВыбратьЭлементы();
	Пока СпрСотр.ПолучитьЭлемент() = 1 Цикл
		Если СпрСотр.ЭтоГруппа() = 0 Тогда
			ТЗ.НоваяСтрока();    
			ТЗ.Obj = НовыйОбъект();
			ДобавитьВОбъект(ТЗ.Obj,"ТабN",Value("Число",СпрСотр.Код,"Ч4"));
			ДобавитьВОбъект(ТЗ.Obj,"ФИО",Value("Строка",СпрСотр.Наименование));
			ДобавитьВОбъект(ТЗ.Obj,"Должность",Value("Строка",СпрСотр.Должность.Получить(ТекущаяДата())));
			ДобавитьВОбъект(ТЗ.Obj,"ДатаРождения",Value("Дата",СпрСотр.ДатаРождения,"ДДДММГГ"));
		КонецЕсли; 		
	КонецЦикла;
	// Формируем Массив из Таблицы значений
	ТЗ_Array = НовыйМассив();
	ТЗ.ВыбратьСтроки();
	Пока ТЗ.ПолучитьСтроку() = 1 Цикл
		ДобавитьВМассив(ТЗ_Array,Value("Object",ТЗ.Obj));
	КонецЦикла;
	
	// Массив в Объект
	СотрудникиJson = НовыйОбъект();
	ДобавитьВОбъект(СотрудникиJson,"Сотрудники",Value("Array",ТЗ_Array));
	
	Результат = СформироватьСтрокуJSON_OBJECT(СотрудникиJson) ;   // Само формирование строки json
	
	Результат = ПреобразоватьСтрокуВУТФ8(Результат );	    // Взято из //infostart.ru/public/18816/
	
	json_file = СоздатьОбъект("Текст");
	json_file.ДобавитьСтроку(Результат);   
	
	ИмяФайла = "Сотрудники" ;
	Путь = "";
	
	Если ФС.ВыбратьФайл(1,ИмяФайла,Путь,"Сохранить в файле","Файлы json (*.json)|*.json","json",)=1 Тогда
		json_file.Записать(Путь+ИмяФайла );
	КонецЕсли;
КонецПроцедуры

Номер релиза 7.70.027.

7.70.027

Наименование Файл Версия Размер
Формирование строки json в 1с 7.7:

.ert 32,50Kb
10.12.18
32
.ert 1 32,50Kb 32 Скачать

Специальные предложения

Оставьте свое сообщение

См. также

Асинхронное программирование в 1с77 без внешних компонент. Обратные вызовы.

Практика программирования v7.7 Абонемент ($m)

Пример построения программного кода для достижения функционала обратных вызовов (call back) во внешних обработках исключительно штатными средствами. Тестировалось на платформе 1с77 релиз 027. Конфигурация значения не имеет.

1 стартмани

06.10.2018    6743    Vortigaunt    5    

Особенности разделения объектной модели документа и базы данных в 1С 7.7. Забавный глюк

Практика программирования v77::ОУ Абонемент ($m)

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    8996    Vortigaunt    26    

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

Практика программирования v7.7 1cv7.md Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    19353    Reptile    5    

Итоговая строка в форме "Требование-накладная" М-11 в 1С: Бухгалтерия 7.7

Практика программирования v77::БУ 1С7:Бух Россия БУ Абонемент ($m)

Появилась необходимость видеть итог в Требовании-накладная М-11 по колонке "Сумма" Выкладываю - как написать

1 стартмани

15.04.2013    16245    Доня    3    

Реализация условий в прямых запросах к журналу расчета.

Практика программирования Зарплата Зарплата v77::Расчет 1С7:ЗиК Абонемент ($m)

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

1 стартмани

06.12.2012    13349    nicotin    5    

Обновление не типовой конфигурации на платформе 77 на примере конфигурации "1С: Бухгалтерский учет 7.7"

Практика программирования Администрирование данных 1С v7.7 1cv7.md Россия Абонемент ($m)

На примере обновления не типового релиза 538 "1С: Бухгалтерия 77" по шагам рассказывается как обновить до релиза 539.

1 стартмани

23.04.2012    11515    valux_pux_12345    11    

Исправление ошибки в отчете "Журнал счетов-фактур по Постановлению № 1137" в 1С Бухгалтерии 7.7 537-7.7.538 релиз

Практика программирования v77::БУ 1С7:Бух Россия БУ Абонемент ($m)

В отчете "Журнал счетов-фактур по Постановлению № 1137" в печатной форме не выводятся суммы НДС по ставке 10%, внесенные вручную в документе "Счет-фактура полученный"

1 стартмани

12.04.2012    11643    ksv74    1    

Исправление ошибки вычисления суммы удержанного НДФЛ в ЗиК 320-322

Практика программирования Зарплата Зарплата v77::Расчет 1С7:ЗиК Россия БУ НДФЛ Абонемент ($m)

При заполнении таблицы ДоходыВычетыНалогиСотрудников в функции глобального модуля глСобратьДанныеДляНДФЛ2011() есть ошибка при вычислении колонки "НУ1" (суммы удержанного НДФЛ для целей налогового учёта). Данная статься посвящена её исправлению.

1 стартмани

18.03.2012    17355    andrewks    33    

Берегите родителей или что бывает, когда "Родитель" ушел в себя

Практика программирования Работа с интерфейсом v77::ОУ v77::БУ 1cv7.md Россия Абонемент ($m)

Пропадают элементы , группы справочника, зависает приложение, а видимых ошибок нет. Это не руководство к действию, а скорее наглядный пример "где копать"

1 стартмани

25.05.2011    21174    Tatitutu    14    

Исправление серии ошибок при сохранении/восстановлении множественного фильтра (МФ) в отчётах и обработках в ТиС 9.2

Практика программирования v77::ОУ 1С7:ТиС Россия Абонемент ($m)

Исправление серии ошибок при сохранении/восстановлении множественного фильтра (МФ) в отчётах и обработках в ТиС 9.2 (утеря сохранённых значений и/или некорректное восстановление некоторых параметров МФ при различных вариантах активных элементов формы перед сохранением настройки)

1 стартмани

08.05.2011    15710    andrewks    12    

Динамические массивы в семерке.

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

Работаем с массивами вычисляемой длины - создаем, пишем, читаем, уничтожаем.

1 стартмани

13.12.2010    18760    Арчибальд    28    

Загогулина (с) "не моё" - 2

Практика программирования v77::Расчет 1С7:ЗиК Россия Абонемент ($m)

Еще один глюк ЗиК 300 в отчете по перс. учету 2010

1 стартмани

27.09.2010    1942    pvk78    3    

Исправление UChoice для корректной работы с SQL

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Рассказывается как исправить типовой универсальный отчет: "Подбор объектов", что бы он работал с SQL. В текущей реализации, которая лежит на ИТС без изменений много лет, в SQL базе отобрать объекты по вхождению в группу справочника невозможно, при этом в DBF варианте все работает.

1 стартмани

31.03.2010    12564    Sk0rp    14    

Доработка отчета "Отчет по кадровым данным и данным расчетов для ЗиК.7.7 ред.2".

Практика программирования Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v77::ОУ 1С7:ЗиК Россия Абонемент ($m)

Для подписчиков ИТС доступен отчет "Отчет по кадровым данным и данным расчетов для ЗиК.7.7". Начиная с 2010 года в программе "1С: Зарплата и Кадры" появился еще один журнал расчетов "Страховые взносы". С этим журналом расчетов отчет работать не умеет, т.е. раздел, посвященный ЕСН (с 2010 года страховым взносам), заполняться в 2010 году не будет.

1 стартмани

02.02.2010    18471    bb1962    10    

Ликбез: транспонируем таблицу значений 7.7.

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Меняем "вдоль" на "поперек"

1 стартмани

28.01.2010    14346    Арчибальд    10    

Чтение/запись текста в кодировке UTF-8 из 1c 7.7

Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Демонстрация перекодировки текста в/из UTF-8 штатными средствами 1с 7.7

20.01.2009    44408    0    ssp_    28