Еще один вариант выгрузки остатков товаров из 1С Розница 2.2 в файл XML.

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


&НаКлиенте
Процедура КатегорииТовараНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ПараметрыПодбора = Новый Структура;    
	ПараметрыПодбора.Вставить("ЗакрыватьПриВыборе", Истина);
	ПараметрыПодбора.Вставить("МножественныйВыбор", Истина);
	ПараметрыПодбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.ГруппыИЭлементы);   
	ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыПодбора, Элементы.КатегорииТовара);
КонецПроцедуры


 &НаСервере
  Процедура ИтоговаяТаблицаОбработкаВыбораНаСервере(ВыбранноеЗначение)
     Для Каждого вЗнч Из ВыбранноеЗначение Цикл        
           нстр=объект.КатегорииТовара.Добавить(вЗнч);
     КонецЦикла;
  КонецПроцедуры

&НаКлиенте
Процедура КатегорииТовараОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	 СтандартнаяОбработка = Ложь;
     ИтоговаяТаблицаОбработкаВыбораНаСервере(ВыбранноеЗначение);
КонецПроцедуры


 &НаСервере
  Процедура ЗаполнитьПриСтартеНаСервере()
	нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("1127       "));
	нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("00-00001342"));
	нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("1161       "));
	нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("1434       "));
	нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("1078       "));
	нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("00-00001392"));
	нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("00-00001239"));
	объект.Склад=Справочники.Склады.НайтиПоНаименованию("Вологда Торговля");
	объект.ФайлВыгрузки="c:\temp\export.xml";
  КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	// заполняем при старте
	ЗаполнитьПриСтартеНаСервере();
КонецПроцедуры

&НаСервере
Функция СведенияПоНоменклатуре(ЗаписьXML,Номенклатура);
 		Запрос = Новый Запрос;
 		Запрос.Текст = 			
		"ВЫБРАТЬ
		|	НоменклатураДополнительныеРеквизиты.Значение КАК Значение,
		|	НоменклатураДополнительныеРеквизиты.Ссылка.Ссылка КАК Ссылка,
		|	НоменклатураДополнительныеРеквизиты.Свойство.Наименование КАК СвойствоНаименование,
		|	НоменклатураДополнительныеРеквизиты.Свойство.Заголовок КАК СвойствоЗаголовок
		|ИЗ
		|	Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
		|ГДЕ
		|	НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка";		
		Запрос.УстановитьПараметр("Ссылка", Номенклатура);
		Результат = Запрос.Выполнить().Выбрать();
		пока  Результат.Следующий() цикл
			ЗаписьXML.ЗаписатьНачалоЭлемента("meaning");
			 ЗаписьXML.ЗаписатьБезОбработки("<name>"+Результат.СвойствоЗаголовок+"</name>"+Символы.ПС);			
			 ЗаписьXML.ЗаписатьБезОбработки("<value>"+Результат.Значение+"</value>"+Символы.ПС);			
			ЗаписьXML.ЗаписатьКонецЭлемента();							
		конеццикла;

	КонецФункции	
	
	
&НаСервере
Функция СведенияПоЦенамНоменклатуры(ЗаписьXML,Номенклатура);
 		Запрос = Новый Запрос;
 		Запрос.Текст = 			
		"ВЫБРАТЬ
		|	ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
		|	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
		|ИЗ
		|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
		|ГДЕ
		|	ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура";		
		Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
		Результат = Запрос.Выполнить().Выбрать();
		пока  Результат.Следующий() цикл
			ЗаписьXML.ЗаписатьНачалоЭлемента("price");
			 ЗаписьXML.ЗаписатьБезОбработки("<type>"+Результат.ВидЦены+"</type>"+Символы.ПС);			
			 ЗаписьXML.ЗаписатьБезОбработки("<cost>"+Формат(Результат.Цена,"ЧГ=")+"</cost>"+Символы.ПС);			
			ЗаписьXML.ЗаписатьКонецЭлемента();							
		конеццикла;

КонецФункции	

&НаСервере
Функция СведенияПоКомплектующим(ЗаписьXML,Номенклатура);
 		Запрос = Новый Запрос;
 		Запрос.Текст = 			
		"ВЫБРАТЬ
		|	КомплектующиеНоменклатуры.Комплектующая.Наименование КАК КомплектующаяНаименование,
		|	КомплектующиеНоменклатуры.Комплектующая.Код КАК КомплектующаяКод
		|ИЗ
		|	РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
		|ГДЕ
		|	КомплектующиеНоменклатуры.Номенклатура = &Номенклатура";		
		Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
		Результат = Запрос.Выполнить().Выбрать();
		пока  Результат.Следующий() цикл
			ЗаписьXML.ЗаписатьНачалоЭлемента("order");
			 ЗаписьXML.ЗаписатьБезОбработки("<name>"+Результат.КомплектующаяНаименование+"</name>"+Символы.ПС);			
			 ЗаписьXML.ЗаписатьБезОбработки("<code>"+Результат.КомплектующаяКод+"</code>"+Символы.ПС);			
			ЗаписьXML.ЗаписатьКонецЭлемента();							
		конеццикла;

КонецФункции	

&НаСервере
Функция Фотографии(ЗаписьXML,Номенклатура);
	
 Запрос = Новый Запрос;
Запрос.Текст =      
"ВЫБРАТЬ
|   НоменклатураПрисоединенныеФайлы.Ссылка КАК Ссылка,
|   НоменклатураПрисоединенныеФайлы.ПутьКФайлу КАК ПутьКФайлу,
|   НоменклатураПрисоединенныеФайлы.ТипХраненияФайла КАК ТипХраненияФайла,
|   НоменклатураПрисоединенныеФайлы.Том КАК Том,
|   НоменклатураПрисоединенныеФайлы.ФайлХранилище КАК ФайлХранилище
|ИЗ
|   Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
|ГДЕ
|   НоменклатураПрисоединенныеФайлы.ВладелецФайла.Ссылка = &ном"    ;
         
     Запрос.УстановитьПараметр("ном", Номенклатура);                 
     файлы=Запрос.Выполнить().Выбрать();            
     n=0;
     Пока файлы.Следующий() Цикл        
		 ЗаписьXML.ЗаписатьБезОбработки("<name>"+файлы.ПутьКФайлу+"</name>"+Символы.ПС);						 			
     конеццикла;     	
КонецФункции	

	
&НаСервере
	
Функция ЗаменитьСпецСимволы(_стр)
	стр=СтрЗаменить(_стр, "&", "&amp;");
	стр=СтрЗаменить(стр, """", "&quot;"); 
	стр=СтрЗаменить(стр, "<", "&lt;");
	стр=СтрЗаменить(стр, ">", "&gt;");
	стр=СтрЗаменить(стр, "‘", "'");
Возврат стр;

КонецФункции	
&НаСервере
Функция СоздатьXMLНаСервере()
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.ОткрытьФайл(объект.ФайлВыгрузки,"UTF-8");
	ЗаписьXML.ЗаписатьОбъявлениеXML();
		ЗаписьXML.ЗаписатьНачалоЭлемента("export");	
		
		для каждого ГруппаНоменклатуры из объект.КатегорииТовара цикл
 		Запрос = Новый Запрос;
 		Запрос.Текст = 		
			"ВЫБРАТЬ
			|	ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
			|	ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот КАК КоличествоОборот,
			|	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
			|	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель.Ссылка КАК НоменклатураРодитель,
			|	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ПометкаУдаления КАК НоменклатураПометкаУдаления,
			|	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Описание КАК НоменклатураОписание,
			|	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Марка.Наименование КАК НоменклатураМаркаНаименование
			|ИЗ
			|	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
			|ГДЕ
			|	ТоварыНаСкладахОстаткиИОбороты.Склад = &Склад
			|	И ТоварыНаСкладахОстаткиИОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура)
			|	И ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот > 0
			|	И ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЭтоГруппа = ЛОЖЬ";
			Запрос.УстановитьПараметр("Склад", объект.Склад);
			Запрос.УстановитьПараметр("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию(ГруппаНоменклатуры));
			Результат = Запрос.Выполнить().Выбрать();  
			
			пока  Результат.Следующий() цикл
				
					ЗаписьXML.ЗаписатьНачалоЭлемента("goods");
					ЗаписьXML.ЗаписатьБезОбработки("<good_cat>"+ГруппаНоменклатуры+"</good_cat>"+Символы.ПС);
					ЗаписьXML.ЗаписатьБезОбработки("<good_name>"+Результат.Номенклатура.Наименование+"</good_name>"+Символы.ПС);
					ЗаписьXML.ЗаписатьБезОбработки("<good_code>"+Результат.Номенклатура.Код+"</good_code>"+Символы.ПС);
					ЗаписьXML.ЗаписатьБезОбработки("<good_art>"+Результат.Номенклатура.Артикул+"</good_art>"+Символы.ПС);
					
					описание=ЗаменитьСпецСимволы(Результат.НоменклатураОписание);
				
					ЗаписьXML.ЗаписатьБезОбработки("<good_comment>"+описание+"</good_comment>"+Символы.ПС);
					ЗаписьXML.ЗаписатьБезОбработки("<is_delete>"+Результат.НоменклатураПометкаУдаления+"</is_delete>"+Символы.ПС);
					ЗаписьXML.ЗаписатьБезОбработки("<good_parent_name>"+Результат.НоменклатураРодитель.Наименование+"</good_parent_name>"+Символы.ПС);
					ЗаписьXML.ЗаписатьБезОбработки("<good_parent_code>"+Результат.НоменклатураРодитель.Код+"</good_parent_code>"+Символы.ПС);
					ЗаписьXML.ЗаписатьБезОбработки("<count>"+Результат.КоличествоКонечныйОстаток+"</count>"+Символы.ПС);
					
						ЗаписьXML.ЗаписатьНачалоЭлемента("prices");
							СведенияПоЦенамНоменклатуры(ЗаписьXML,Результат.Номенклатура);
						ЗаписьXML.ЗаписатьКонецЭлемента();							
					
						ЗаписьXML.ЗаписатьНачалоЭлемента("propety");
							СведенияПоНоменклатуре(ЗаписьXML,Результат.Номенклатура);
						ЗаписьXML.ЗаписатьКонецЭлемента();							
				
						ЗаписьXML.ЗаписатьНачалоЭлемента("soorders");
							СведенияПоКомплектующим(ЗаписьXML,Результат.Номенклатура);
						ЗаписьXML.ЗаписатьКонецЭлемента();							

						ЗаписьXML.ЗаписатьНачалоЭлемента("photos");
							Фотографии(ЗаписьXML,Результат.Номенклатура);
						ЗаписьXML.ЗаписатьКонецЭлемента();							
						
						
					ЗаписьXML.ЗаписатьКонецЭлемента();
			конеццикла;	

		конеццикла;
		
		ЗаписьXML.ЗаписатьКонецЭлемента();
	

	//возврат ЗаписьXML;
КонецФункции


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

Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.