&НаКлиенте
Процедура КатегорииТовараНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("ЗакрыватьПриВыборе", Истина);
ПараметрыПодбора.Вставить("МножественныйВыбор", Истина);
ПараметрыПодбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.ГруппыИЭлементы);
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыПодбора, Элементы.КатегорииТовара);
КонецПроцедуры
&НаСервере
Процедура ИтоговаяТаблицаОбработкаВыбораНаСервере(ВыбранноеЗначение)
Для Каждого вЗнч Из ВыбранноеЗначение Цикл
нстр=объект.КатегорииТовара.Добавить(вЗнч);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура КатегорииТовараОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИтоговаяТаблицаОбработкаВыбораНаСервере(ВыбранноеЗначение);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПриСтартеНаСервере()
нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("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>"+Символы.ПС);
конеццикла;
КонецФункции
&НаСервере
Функция ЗаменитьСпецСимволы(_стр)
стр=СтрЗаменить(_стр, "&", "&");
стр=СтрЗаменить(стр, """", """);
стр=СтрЗаменить(стр, "<", "<");
стр=СтрЗаменить(стр, ">", ">");
стр=СтрЗаменить(стр, "‘", "'");
Возврат стр;
КонецФункции
&НаСервере
Функция Создать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НаСервере();
КонецПроцедуры