Каталог решений - Выгрузка и чтение JSON

Выгрузка и чтение JSON

Выгрузка и чтение JSON

В наличии

Реализация записи и чтения объектов методами JSON с реализацией сохранения и выгрузки файла для самых маленьких БЕСПЛАТНО без смс и регистрации.

Категория:

Описание

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

Разберу его на примере выгрузки документа в жсон строку с последующей конвертацией ее в файл, а также его чтения и выгрузки из файла

Для начала разберем чтение, мы добавляем интересующие нас документы в табличную часть

После чего начинаем читать данные документа и записываем их в массив, дабы перевести эти данные в строку JSON:

Процедура НайтиДокНаСервере()
	
	МетаданныеТЧ.Очистить();
	
	//Читаем текст, что было выгружено
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(ЭтотОбъект.СтрокаJSON);
	МассивJSON = ПрочитатьJSON(Чтение, Ложь); 
	
	//Получаем данные каждой структуры входящей в массив 
	Для Каждого Строка из МассивJSON Цикл
		УИДJSON = Строка.УИДСсылки; 
		ТИПJSON = Строка.ТипОбъекта;
		ИМЯJSON = Строка.ИмяОбъекта;  		
		ГУИД = Новый УникальныйИдентификатор(УИДJSON);
		
		//Получение полного пути до файла путем соединения реквизитов структуры
		ПолноеИмя = ТИПJSON+"."+ИМЯJSON; 
		//Обращение к методам БСП который самостоятельно по полному имени находит тип к примеру "Документ.Номенклатура"
		ПутьЧерезТипИИмя = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
		//Получаем конкретный документ который ищем по ГУИДУ к примеру "Деликатес №2 С.НАР запеч(180г)"
		ОбьектСсылка = ПутьЧерезТипИИмя.ПолучитьСсылку(ГУИД); 
		
		//Строка ТЧ из массива
		стрТч = МетаданныеТЧ.Добавить();
		//Ссылка на ТЧ на форме и погружение в ТЧ Дока который мы нашли
		стрТч.СсылкаНаДокументы = ОбьектСсылка;   
	КонецЦикла;
	
КонецПроцедуры

Таким образом, мы получили строку со следующим видом:

В дальнейшем, даже если мы полностью очистим ТЧ, то при нажатии на кнопку Найти документ, будет выполнен следующий код:

Процедура НайтиДокНаСервере()
	
	МетаданныеТЧ.Очистить();
	
	//Читаем текст, что было выгружено
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(ЭтотОбъект.СтрокаJSON);
	МассивJSON = ПрочитатьJSON(Чтение, Ложь); 
	
	//Получаем данные каждой структуры входящей в массив 
	Для Каждого Строка из МассивJSON Цикл
		УИДJSON = Строка.УИДСсылки; 
		ТИПJSON = Строка.ТипОбъекта;
		ИМЯJSON = Строка.ИмяОбъекта;  		
		ГУИД = Новый УникальныйИдентификатор(УИДJSON);
		
		//Получение полного пути до файла путем соединения реквизитов структуры
		ПолноеИмя = ТИПJSON+"."+ИМЯJSON; 
		//Обращение к методам БСП который самостоятельно по полному имени находит тип к примеру "Документ.Номенклатура"
		ПутьЧерезТипИИмя = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
		//Получаем конкретный документ который ищем по ГУИДУ к примеру "Деликатес №2 С.НАР запеч(180г)"
		ОбьектСсылка = ПутьЧерезТипИИмя.ПолучитьСсылку(ГУИД); 
		
		//Строка ТЧ из массива
		стрТч = МетаданныеТЧ.Добавить();
		//Ссылка на ТЧ на форме и погружение в ТЧ Дока который мы нашли
		стрТч.СсылкаНаДокументы = ОбьектСсылка;   
	КонецЦикла;
	
КонецПроцедуры

И таким образом мы заполним нашу табличную часть данными, которые мы получили, прочитав строку жсон.

Если же вас заинтересовал процесс асинхронной выгрузки строки в файл, то вот данные:

&НаКлиенте
Процедура Команда1(Команда)
	// Вставить содержимое обработчика.  
	
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    ДиалогВыбораФайла.Фильтр = "jsn(*.json)|*.json";
  
    ПараметрыСценария = Новый Структура;
    Оповещение = Новый ОписаниеОповещения("КаталогНачалоВыбораЗавершение", ЭтаФорма);
    ПараметрыСценария.Вставить("Оповещение_ПослеЗакрытияДиалогаВыбораФайла", Оповещение);
    ПараметрыСценария.Вставить("ДиалогВыбораФайла", ДиалогВыбораФайла);
	
	ДиалогВыбораФайла.Показать(Оповещение); 
		
КонецПроцедуры 

Таким образом делается сохранение объектов, а вот их выгрузка:
 

&НаКлиенте                                                               
Процедура ОткрытьФайл(Команда)   
	
	//Часть отвечающая за выбор файла
	ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогВыбора.Заголовок = "Выберите файл"; 
	
	Если ДиалогВыбора.Выбрать() Тогда
	
		ИмяФайла = ДиалогВыбора.ПолноеИмяФайла; //Выбор файла из диалогового окна

	КонецЕсли;
	
	//Условия для чтения файла JSON
	ЧтениеJSON = Новый ЧтениеJSON; 
	ЧтениеJSON.ОткрытьФайл(ИмяФайла); 
	
	Пока ЧтениеJSON.Прочитать()Цикл
		ТипJSON = ЧтениеJSON.ТипТекущегоЗначения;
		
		 Если ТипJSON	   = ТипЗначенияJSON.Число Или ТипJSON = ТипЗначенияJSON.Строка Или
			  ТипJSON 	   = ТипЗначенияJSON.Булево Или ТипJSON = ТипЗначенияJSON.Null Тогда  
			  Значение 	   = ЧтениеJSON.ТекущееЗначение;
		 ИначеЕсли ТипJSON = ТипЗначенияJSON.Комментарий Тогда
			  Комментарий  = ЧтениеJSON.ТекущееЗначение;
		 ИначеЕсли ТипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
			  ИмяСвойства  = ЧтениеJSON.ТекущееЗначение;
		 ИначеЕсли ТипJSON = ТипЗначенияJSON.НачалоМассива Или ТипJSON = ТипЗначенияJSON.КонецМассива ИЛИ
			 	   ТипJSON = ТипЗначенияJSON.НачалоОбъекта Или ТипJSON = ТипЗначенияJSON.КонецОбъекта ИЛИ
				   ТипJSON = ТипЗначенияJSON.Ничего Тогда
		 КонецЕсли;	 
	 КонецЦикла;
	 
	 ЧтениеJSON.Закрыть();
	 
	 //Вывод результата в строку на форме
	 ЭтотОбъект.СтрокаJSON = Значение;
	 
КонецПроцедуры

И на этом у меня все )

has been added to your cart:
Оформление заказа