Snippets

Василий Котов XDTO. Выгрузка в JSON

Created by Василий Котов last modified
//Используемая схема. Отдельный файл с расширением XSD

<xs:schema xmlns:tns="http://www.test/xdto/sample" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.test/xdto/sample" attributeFormDefault="unqualified" elementFormDefault="qualified">
	<xs:complexType name="ListProduct">
		<xs:sequence>
			<xs:element name="Product" type="tns:Product" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Product">
		<xs:attribute name="Name" type="xs:string" use="required"/>
		<xs:attribute name="Count" type="xs:float" use="required"/>
	</xs:complexType>
</xs:schema>


///////// Конец XSD файла //////////////////////////////////////



&НаСервере
Процедура Команда1НаСервере()
	
	СписокНоменклатуры = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.test/xdto/sample", "ListProduct")); 
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Товары.Товар КАК Товар,
		|	Товары.Количество КАК Количество
		|ПОМЕСТИТЬ ВТТовары
		|ИЗ
		|	&Товары КАК Товары
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВТТовары.Товар КАК Товар,
		|	ВТТовары.Количество КАК Количество
		|ИЗ
		|	ВТТовары КАК ВТТовары";
	
	Запрос.УстановитьПараметр("Товары", ТЗ());
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Номенклатура = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.test/xdto/sample", "Product")); 
		Номенклатура.Name = ВыборкаДетальныеЗаписи.Товар;
		Номенклатура.Count = ВыборкаДетальныеЗаписи.Количество;
		СписокНоменклатуры.Product.Добавить(Номенклатура);
	КонецЦикла;
	
	ЗаписьJSON = Новый ЗаписьJSON;
	
	ВременныйФайл = ПолучитьИмяВременногоФайла();
	
//	ЗаписьJSON.ОткрытьФайл("D:\1.json"); для тестирования
	ЗаписьJSON.ОткрытьФайл(ВременныйФайл, "UTF-8");
	
	ЗаписьJSON.УстановитьСтроку();
	ФабрикаXDTO.ЗаписатьJSON(ЗаписьJSON, СписокНоменклатуры);
	
	// Ответ это объект 1С "HTTPСервисОтвет" если это HTTP сервис передается в эту процедуру в виде параметра
	Ответ.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());

КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры

&НаСервере
Функция ТЗ()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	""Рубашка"" КАК Товар,
		|	1000 КАК Количество
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	""Брюки"",
		|	5000.99
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	""Носки"",
		|	199
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	""Ботинки"",
		|	1999
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	""Шапка"",
		|	19999
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	""Трусы"",
		|	99
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	""Шарф"",
		|	999";
	
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();
	
	Возврат РезультатЗапроса;	
	
КонецФункции	


Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.