Выгрузка запроса в XML. Выгрузка объекта

chugindanil 16 1
&НаСервере
Процедура КомандаВыполнитьНаСервере()
	
	ИмяФайла = "d:\test.xml";
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	| Номенклатура.Код КАК Код,
	| Номенклатура.Наименование КАК Наименование,
	| Номенклатура.Артикул КАК Артикул,
	| Номенклатура.Ссылка КАК Номенклатура
	|ИЗ
	| Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	| Номенклатура.ЭтоГруппа = ЛОЖЬ");
	
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.ОткрытьФайл(ИмяФайла,"UTF-8");
	
	ВыборкаРезультата = Запрос.Выполнить().Выгрузить(); 
	ЗаписьXML.ЗаписатьНачалоЭлемента("Номенклатура");
	Для каждого Выборка Из ВыборкаРезультата Цикл
		ЗаписатьXML(ЗаписьXML, Выборка.Номенклатура.ПолучитьОбъект());           
	КонецЦикла;
	ЗаписьXML.ЗаписатьКонецЭлемента();
	ЗаписьXML.Закрыть();
	
КонецПроцедуры
Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз

Комментарии

metatron
#1, ред. 11 июля 2020 14:33

Результат = Запрос.Выполнить().Выгрузить(); для чего эта строчка?
если дальше по коду есть выборка: ВыборкаРезультата = Запрос.Выполнить().Выгрузить();
только не понял почему переменная называется Выборка, а Вы делаете выгрузку в ТЗ, будет правильнее использовать метод Выбрать();


bolsun
#2, 11 июля 2020 12:55

(1) metatron, да эта строчка была лишняя. Также предлагаю вариант через выборку, либо если нужно, то с возможностью обхода через ТаблицуЗначений.

&НаСервере
Процедура КомандаВыполнитьНаСервере()
	
	ИмяФайла = "d:\test.xml";
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	| Номенклатура.Код КАК Код,
	| Номенклатура.Наименование КАК Наименование,
	| Номенклатура.Артикул КАК Артикул,
	| Номенклатура.Ссылка КАК Номенклатура
	|ИЗ
	| Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	| Номенклатура.ЭтоГруппа = ЛОЖЬ");
	
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.ОткрытьФайл(ИмяФайла,"UTF-8");
	
	ЗаписьXML.ЗаписатьНачалоЭлемента("Номенклатура");
	
	ВыборкаРезультата = Запрос.Выполнить().Выбрать();
	
	Пока ВыборкаРезультата.Следующий() Цикл
		ЗаписатьXML(ЗаписьXML, ВыборкаРезультата.Номенклатура.ПолучитьОбъект());
	КонецЦикла;
	
	//Вариант через ТаблицуЗначений
	
	//ТабРезультаты = Запрос.Выполнить().Выгрузить();
	//
	//Для каждого СтрокаТаб Из ТабРезультаты Цикл
	//	ЗаписатьXML(ЗаписьXML, СтрокаТаб.Номенклатура.ПолучитьОбъект());
	//КонецЦикла;
	
	ЗаписьXML.ЗаписатьКонецЭлемента();
	ЗаписьXML.Закрыть();
	
КонецПроцедуры


chugindanil
#3, 11 июля 2020 12:59

спасибо за совет !
приму к сведению
если у вас будут еще идеи или другие варианты
буду раз услышать )


Farovsky
#4, 14 июля 2020 10:51

Зачем вам поля Код, наименование, артикул в запросе, если они не используются потом нигде?
Зачем писать ЭтоГруппа = ЛОЖЬ, у нее составной тип?
Тут я не уверен: зачем в ЗаписатьXML писать именно СправочникОбъект, ссылка не пройдет? Это же жрет лишний раз оперативку.


chugindanil
#5, 14 июля 2020 14:07

(4) Farovsky, данный код в виде примера, а то как дальше вы будете его использовать илм корректировать .... только ваша фантазия)


SanchoD
#6, 25 августа 2020 11:46

(4) Если использовать только ссылку, то в файл попадут только данные типа:
<Ref>64b55012-7343-11ea-bb98-00155d320304</Ref>
а из объекта все значения реквизитов. А код, наименование, артикул действительно лишние в данном случае. А вот условие ЭтоГруппа=Ложь нужно, чтобы выгрузились только элементы справочника.


Похожие публикации

Выгрузка Таблицы значений в Объект Таблица Значений на форме обработки (для передачи сервер - клиент)

ПриВыгрузкеОбъекта (БСП)

ПослеВыгрузкиОбъекта (БСП)

ПередВыгрузкойОбъекта (БСП)

ВыгрузкаОбъектаВыборки (БСП)

Модератору