Еще один вариант выгрузки остатков товаров из 1С Розница 2.2 в файл XML.
Данную обработку можно использовать как основу для выгрузки списка товаров в интернет магазин. У меня и выгрузка из 1С и загрузка на сайт самописные, потому всё просто и понятно получается. Обработку можно скачать тут
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
&НаКлиенте Процедура КатегорииТовараНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ПараметрыПодбора = Новый Структура; ПараметрыПодбора.Вставить("ЗакрыватьПриВыборе", Истина); ПараметрыПодбора.Вставить("МножественныйВыбор", Истина); ПараметрыПодбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.ГруппыИЭлементы); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыПодбора, Элементы.КатегорииТовара); КонецПроцедуры &НаСервере Процедура ИтоговаяТаблицаОбработкаВыбораНаСервере(ВыбранноеЗначение) Для Каждого вЗнч Из ВыбранноеЗначение Цикл нстр=объект.КатегорииТовара.Добавить(вЗнч); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура КатегорииТовараОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИтоговаяТаблицаОбработкаВыбораНаСервере(ВыбранноеЗначение); КонецПроцедуры &НаСервере Процедура ЗаполнитьПриСтартеНаСервере() нстр=объект.КатегорииТовара.Добавить(Справочники.Номенклатура.НайтиПоКоду("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НаСервере(); КонецПроцедуры |