1с выгрузка номенклатуры в xml.
Пример выгрузки номенклатуры Из 1с 7.7 в xml.Пример чтения xml из 1с 8.2 можно глянуть Здесь
перем СпрНом;
Перем XMLАнализатор;
//*******************************************
Процедура Сформировать()
Если ПустаяСтрока(Файл)=1 Тогда
Предупреждение("Не указан файл для выгрузки!");
Возврат;
КонецЕсли;
СпрШк = СоздатьОбъект("Справочник.ШтрихКоды");
СпрЦ = СоздатьОбъект("Справочник.Цены");
СпрН = СоздатьОбъект("Справочник.НормыРасходов");
сч=0;
ИмяФайла = Файл;
ХМЛФайлДанных = XMLАнализатор.СоздатьПоследовательноЗаписываемыйДокумент();
ХМЛФайлДанных.ИмяФайла = ИмяФайла;
Тз = СоздатьОбъект("ТаблицаЗначений");
Тз.НоваяКолонка("Эл");
Тз.НоваяКолонка("Порядок","число");
МинУровень=1000;
для сч_=1 по Список.РазмерСписка() Цикл
Тз.НоваяСтрока();
Тз.Эл = Список.ПолучитьЗначение(сч_);
Тз.Порядок = Тз.Эл.уровень();
МинУровень=Мин(МинУровень,Тз.Эл.уровень());
КонецЦикла;
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("КолЭлементов",Список.РазмерСписка());
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("МинУровень",МинУровень);
ХМЛФайлДанных.ОткрытьЭлемент("Элементы");
Тз.Сортировать("Порядок");
сч=0;
Тз.ВыбратьСтроки();
Пока Тз.ПолучитьСтроку() = 1 Цикл
сч=сч+1;
Состояние(Строка(сч));
Эл = Тз.Эл;
ХМЛФайлДанных.АтрибутыЭлемента.УдалитьВсе();
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Имя",СокрЛП(Эл.Наименование));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("ЭтоГруппа",Эл.ЭтоГруппа());
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("ИмяП",СокрЛП(Эл.ПолнНаименование));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("ВидНом",сокрлп(Эл.ВидНоменклатуры));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Вн",ЗначениеВСтрокуВнутр(Эл));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Уровень",Эл.Уровень());
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Еи",Эл.ЕдиницаИзмерения.Код);
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("СтНдс",строка(Эл.СтавкаНДС.Получить(ТекущаяДата()).Ставка));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Артикул",СокрЛП(Эл.Артикул));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("ИмяР",СокрЛП(Эл.Родитель.Наименование));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("ВесБрутто",Эл.ВесБрутто);
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("ВесНетто",Эл.ВесНетто);
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Высота",Строка(Эл.Высота));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Длина",Строка(Эл.Длинна));
ХМЛФайлДанных.ОткрытьЭлемент("Элемент");
СпрШк.ИспользоватьВладельца(Эл);
СпрШк.ВыбратьЭлементы();
Пока СпрШк.ПолучитьЭлемент() = 1 Цикл
ХМЛФайлДанных.АтрибутыЭлемента.УдалитьВсе();
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("ШкСтр",строка(СпрШк.ШтрихКод));
ХМЛФайлДанных.ОткрытьЭлемент("Шк");
ХМЛФайлДанных.ЗакрытьЭлемент();//Шк
КонецЦикла;
СпрЦ.ИспользоватьВладельца(эл);
СпрЦ.ВыбратьЭлементы();
Пока СпрЦ.ПолучитьЭлемент() = 1 Цикл
ХМЛФайлДанных.АтрибутыЭлемента.УдалитьВсе();
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Цена",строка(СпрЦ.Цена.Получить(ТекущаяДата())));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("ТипЦены",СокрЛП(СпрЦ.ТипЦен.Наименование));
ХМЛФайлДанных.ОткрытьЭлемент("Цены");
ХМЛФайлДанных.ЗакрытьЭлемент();//Шк
КонецЦикла;
Спрн.ИспользоватьВладельца(эл);
СпрН.ВыбратьЭлементы();
Пока СпрН.ПолучитьЭлемент() = 1 Цикл
ХМЛФайлДанных.АтрибутыЭлемента.УдалитьВсе();
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Номенклат",СокрЛП(СпрН.Элемент.Наименование));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("Норм",СпрН.Норма.Получить(ТекущаяДата()));
ХМЛФайлДанных.АтрибутыЭлемента.УстановитьАтрибут("КолПрод",СпрН.КолПрод.Получить(ТекущаяДата()));
ХМЛФайлДанных.ОткрытьЭлемент("Норма");
ХМЛФайлДанных.ЗакрытьЭлемент();//Нормы
КонецЦикла;
ХМЛФайлДанных.ЗакрытьЭлемент();//Элемент
Если сч % 1000 = 0 Тогда
Состояние(Строка(сч));
ХМЛФайлДанных.Сбросить();
КонецЕсли;
КонецЦикла;
ХМЛФайлДанных.ЗакрытьЭлемент();//ЭлементЫ
ХМЛФайлДанных.Завершить();
Предупреждение("Готово",20);
КонецПроцедуры
//======================================================================
Процедура обработкаПодбора(Эл)
Если Эл.ЭтоГруппа()=1 Тогда
Если Список.НайтиЗначение(Эл)=0 Тогда
Список.ДобавитьЗначение(Эл);
КонецЕсли;
СпрНом.ИспользоватьРодителя(Эл);
СпрНом.ВыбратьЭлементы();
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
Если СпрНом.ПометкаУдаления()=1 Тогда
Продолжить;
КонецЕсли;
Если Список.НайтиЗначение(СпрНом.ТекущийЭлемент())=0 Тогда
Список.ДобавитьЗначение(СпрНом.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
Иначе
Если Список.НайтиЗначение(Эл)=0 Тогда
Список.ДобавитьЗначение(Эл);
КонецЕсли;
КонецЕсли;
Форма.Отобрано.Заголовок("К выгрузке(включая группы):"+Строка(Список.РазмерСписка()));
КонецПроцедуры //
//======================================================================
Процедура Подобрать()
Перем НовЗнач;
ОткрытьПодбор("Справочник.Номенклатура","Основная",НовЗнач,1);
НовЗнач.ВыборГруппы(1);
КонецПроцедуры // Подобрать
//======================================================================
Процедура Удалить()
ТекЗн = Список.ТекущаяСтрока();
Если ПустоеЗначение(ТекЗн)=1 Тогда
Возврат;
КонецЕсли;
Если Вопрос("Удалить строку?","Да+Нет")="Нет" Тогда
Возврат;
КонецЕсли;
Список.УдалитьЗначение(ТекЗн);
Форма.Отобрано.Заголовок("К выгрузке(включая группы):"+Строка(Список.РазмерСписка()));
КонецПроцедуры // Удалить
Функция НайтиПервыйСуществующийФайл(СписокВозможныхМест)
Для Сч = 1 По СписокВозможныхМест.РазмерСписка() Цикл
ПолноеИмя = СписокВозможныхМест.ПолучитьЗначение(Сч);
Если Фс.СуществуетФайл(ПолноеИмя) = 1 Тогда Возврат(ПолноеИмя) КонецЕсли;
КонецЦикла;
Возврат("");
КонецФункции
//======================================================================
Процедура ПриОткрытии()
СписокВозможныхМест = СоздатьОбъект("СписокЗначений");
СписокВозможныхМест.ДобавитьЗначение(КаталогИБ() + "v7plus.dll" );
СписокВозможныхМест.ДобавитьЗначение(КаталогПрограммы() + "v7plus.dll" );
СписокВозможныхМест.ДобавитьЗначение(КаталогИБ() + "ExtForms\" + "v7plus.dll" );
гПутьОбъекта_КомпонентаV7plus = НайтиПервыйСуществующийФайл(СписокВозможныхМест);
Если ЗагрузитьВнешнююКомпоненту(гПутьОбъекта_КомпонентаV7plus) <> 1 Тогда
Предупреждение("Компонента v7plus.dll не найдена! Файл выгрузки не сформирован");
Возврат;
КонецЕсли;
XMLАнализатор = СоздатьОбъект("AddIn.XMLParser");
СпрНом = СоздатьОбъект("Справочник.Номенклатура");
КонецПроцедуры // ПриОткрытии
//======================================================================
Процедура Выбрать()
ИмяФайла="";
Каталог="";
Если ФС.ВыбратьФайл(1,ИмяФайла,Каталог,"Укажите файл для сохранения данных","*.xml|*.xml")=1 Тогда
Файл = СокрЛП(Каталог)+СокрЛП(ИмяФайла);
КонецЕсли;
КонецПроцедуры // Выбрать
//======================================================================
Процедура ОткрытьЭл()
ТекСтр = Список.ТекущаяСтрока();
ТекЗн = Список.ПолучитьЗначение(ТекСтр);
Если ПустоеЗначение(ТекЗн)=1 Тогда
Возврат;
КонецЕсли;
ОткрытьФорму(ТекЗн);
КонецПроцедуры // ОткрытьЭл