"У меня шапка формируется, и номенклатура выгружается с кодами и с артикулами, только вот с ценами немогу разобраться<br>Вот процедура выгрузки, тут правда много лишнего, потомучто лепил сам из обычной процедуры вгрузки в таблицу<br><br>Процедура Выгрузить()<br> Перем СписокПозиций, СписокТоваров, ТекСтрока;<br> <br> ТекСтрока = 2; <br> <br> СписокТоваров = СоздатьОбъект("СписокЗначений"); <br> СписокПозиций = СоздатьОбъект("СписокЗначений");<br> <br> НаложенФильтрПоТоварам=0;<br> <br> // накладываем множественный фильтр по товарам<br> Если МФНоменклатура.РазмерСписка()<>0 Тогда<br> <br> Для Индекс=1 По МФНоменклатура.РазмерСписка() Цикл<br> Позиция = МФНоменклатура.ПолучитьЗначение(Индекс);<br> <br> НоменкВложенаВДругую=0;<br> Для Индекс2=1 По МФНоменклатура.РазмерСписка() Цикл<br> Если Индекс2<>Индекс Тогда <br> Позиция2 = МФНоменклатура.ПолучитьЗначение(Индекс2);<br> Если Позиция2.ЭтоГруппа()>0 Тогда<br> Если Позиция.ПринадлежитГруппе(Позиция2)>0 Тогда<br> НоменкВложенаВДругую=1;<br> Прервать;<br> КонецЕсли; <br> КонецЕсли; <br> КонецЕсли; <br> КонецЦикла; <br> <br> Если НоменкВложенаВДругую=1 Тогда<br> Продолжить;<br> КонецЕсли; <br> <br> Если Позиция.ЭтоГруппа()>0 Тогда<br> СпрПозиций = СоздатьОбъект("Справочник."+ВидСправочника);<br> СпрПозиций.ИспользоватьРодителя(Позиция.ТекущийЭлемент());<br> СпрПозиций.ВыбратьЭлементы(1);<br> Пока СпрПозиций.ПолучитьЭлемент()>0 Цикл<br> Если СпрПозиций.ЭтоГруппа()=0 Тогда <br> СписокПозиций.ДобавитьЗначение(СпрПозиций.ТекущийЭлемент());<br> Если Нрег(ВидСправочника) = "прайс_лист" Тогда<br> СписокТоваров.ДобавитьЗначение(СпрПозиций.Товар.ТекущийЭлемент());<br> Иначе<br> СписокТоваров.ДобавитьЗначение(СпрПозиций.ТекущийЭлемент());<br> КонецЕсли; <br> КонецЕсли;<br> КонецЦикла; <br> Иначе<br> СписокПозиций.ДобавитьЗначение(Позиция.ТекущийЭлемент());<br> Если Нрег(ВидСправочника) = "прайс_лист" Тогда<br> СписокТоваров.ДобавитьЗначение(Позиция.Товар.ТекущийЭлемент());<br> Иначе<br> СписокТоваров.ДобавитьЗначение(Позиция.ТекущийЭлемент());<br> КонецЕсли; <br> КонецЕсли; <br> <br> КонецЦикла; <br> <br> Если СписокПозиций.РазмерСписка()=0 Тогда<br> Предупреждение("Список позиций пуст");<br> Возврат;<br> КонецЕсли; <br> <br> НаложенФильтрПоТоварам=1;<br> КонецЕсли; <br> <br> <br> // не включать отсутствующие<br> Если ТолькоПрисутствующие<>0 Тогда<br> <br> ВремРегистры=СоздатьОбъект("Регистры");<br> Рег=ВремРегистры.ОстаткиТоваров;<br> Если РабочаяДата()<ПолучитьДатуТА() Тогда<br> Рег.ВременныйРасчет(); <br> Если НаложенФильтрПоТоварам=1 Тогда<br> Рег.УстановитьЗначениеФильтра("Товар",СписокТоваров,2);<br> КонецЕсли; <br> Рег.УстановитьЗначениеФильтра("Фирма",глПустаяФирма);<br> ВремРегистры.РассчитатьРегистрыПО(РабочаяДата());<br> КонецЕсли;<br> <br> Если НаложенФильтрПоТоварам=1 Тогда<br> <br> ЧислоТов = СписокПозиций.РазмерСписка();<br> Для Индекс = 1 По ЧислоТов Цикл<br> <br> НеУдовлетвФильтру=0;<br> Номенк = СписокТоваров.ПолучитьЗначение(ЧислоТов+1-Индекс);<br> <br> // накладываем фильтр по присутствию/отсутствию <br> Если Номенк.ВидТовара<>Перечисление.ВидыТоваров.Товар Тогда<br> НеУдовлетвФильтру=1;<br> Иначе<br> Кол = ВремРегистры.ОстаткиТоваров.СводныйОстаток(глПустаяФирма,Номенк,,"ОстатокТовара");<br> Если Кол<=0 Тогда<br> НеУдовлетвФильтру=1;<br> КонецЕсли;<br> КонецЕсли; <br> <br> Если НеУдовлетвФильтру=1 Тогда <br> СписокПозиций.УдалитьЗначение(ЧислоТов+1-Индекс);<br> КонецЕсли;<br> КонецЦикла;<br> <br> Иначе <br> <br> СпрПозиций = СоздатьОбъект("Справочник."+ВидСправочника);<br> СпрПозиций.ВыбратьЭлементы();<br> Пока СпрПозиций.ПолучитьЭлемент()>0 Цикл<br> Если СпрПозиций.ЭтоГруппа()=0 Тогда <br> Если Нрег(ВидСправочника) = "прайс_лист" Тогда<br> Номенк = СпрПозиций.Товар.ТекущийЭлемент();<br> Иначе<br> Номенк = СпрПозиций.ТекущийЭлемент();<br> КонецЕсли; <br> <br> Если Номенк.ВидТовара=Перечисление.ВидыТоваров.Товар Тогда<br> Кол = ВремРегистры.ОстаткиТоваров.СводныйОстаток(глПустаяФирма,Номенк.ТекущийЭлемент(),,"ОстатокТовара");<br> Если Кол>0 Тогда<br> СписокПозиций.ДобавитьЗначение(СпрПозиций.ТекущийЭлемент());<br> КонецЕсли; <br> КонецЕсли; <br> КонецЕсли;<br> КонецЦикла; <br> <br> КонецЕсли;<br> <br> Если СписокПозиций.РазмерСписка()=0 Тогда<br> Предупреждение("Список позиций пуст");<br> Возврат;<br> КонецЕсли; <br> <br> НаложенФильтрПоТоварам=1;<br><br> КонецЕсли; <br> <br> Если МФКатНоменклатуры.РазмерСписка() > 0 Тогда<br> <br> ТекстЗапроса = " <br> |Обрабатывать НеПомеченныеНаУдаление;<br> |КатегорияПозиции = Справочник.КатегорииТоваров.ТекущийЭлемент;<br> |Товар = Справочник.КатегорииТоваров.Владелец;<br> |КатегорияТов = Справочник.КатегорииТоваров.Категория; <br> |Группировка Товар Без Групп;<br> |Группировка КатегорияТов Без Групп;<br> |Условие (КатегорияТов В МФКатНоменклатуры);<br> |Условие (Товар В СписокТоваров);";<br> <br> // выполняем запрос<br> Запрос = СоздатьОбъект("Запрос");<br> Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда<br> Возврат;<br> КонецЕсли;<br> <br> СписокТоваров.УдалитьВсе();<br> ЧислоКатегорийВСписке = МФКатНоменклатуры.РазмерСписка();<br> <br> // выгружаем все отобранные товары в список<br> Запрос.ВНачалоВыборки();<br> Пока Запрос.Группировка("Товар") = 1 Цикл<br> Если Запрос.Товар.Выбран() = 1 Тогда <br> Если ТипМФКатНоменклатуры.ТекущаяСтрока() = 2 Тогда<br> // одновременно все категории должны быть в списке МФКатегории<br> <br> ПозицияСправочника = Запрос.Товар.ТекущийЭлемент();<br> <br> // ячитаем число категорий <br> ЧислоКатегорий = 0;<br> Пока Запрос.Группировка("КатегорияТов") = 1 Цикл<br> Если Запрос.КатегорияТов.Выбран() = 1 Тогда <br> ЧислоКатегорий = ЧислоКатегорий + 1;<br> КонецЕсли;<br> КонецЦикла;<br> <br> // все категории будут тогда и только тогда, когда число отобранных <br> // категорий будет не меньше размера списка МФКатегории<br> Если ЧислоКатегорий >= ЧислоКатегорийВСписке Тогда<br> СписокТоваров.ДобавитьЗначение(ПозицияСправочника.ТекущийЭлемент());<br> КонецЕсли; <br> Иначе<br> СписокТоваров.ДобавитьЗначение(Запрос.Товар.ТекущийЭлемент());<br> КонецЕсли; <br> КонецЕсли;<br> КонецЦикла;<br> <br> Если НаложенФильтрПоТоварам = 1 Тогда<br> <br> РазмерСпискаПозиций = СписокПозиций.РазмерСписка();<br> Для Индекс = 1 по РазмерСпискаПозиций Цикл<br> Если СписокТоваров.Принадлежит(?(НРег(ВидСправочника) = "прайс_лист",<br> СписокПозиций.ПолучитьЗначение(РазмерСпискаПозиций - Индекс + 1).Товар,<br> СписокПозиций.ПолучитьЗначение(РазмерСпискаПозиций - Индекс + 1))) = 0 Тогда<br> СписокПозиций.УдалитьЗначение(РазмерСпискаПозиций - Индекс + 1);<br> КонецЕсли;<br> КонецЦикла;<br> <br> Иначе<br> <br> СпрПозиций = СоздатьОбъект("Справочник." + ВидСправочника);<br> СпрПозиций.ВыбратьЭлементы();<br> Пока СпрПозиций.ПолучитьЭлемент() = 1 Цикл<br> Если СпрПозиций.ЭтоГруппа() = 0 Тогда <br> Если СписокТоваров.Принадлежит(?(НРег(ВидСправочника) = "прайс_лист",<br> СпрПозиций.ТекущийЭлемент().Товар,<br> СпрПозиций.ТекущийЭлемент())) = 1 Тогда<br> СписокПозиций.ДобавитьЗначение(?(НРег(ВидСправочника) = "прайс_лист", СпрПозиций.ТекущийЭлемент(), СпрПозиций.Товар.ТекущийЭлемент()));<br> КонецЕсли;<br> КонецЕсли;<br> КонецЦикла; <br> <br> КонецЕсли;<br> <br> Если СписокПозиций.РазмерСписка() = 0 Тогда<br> Предупреждение("Список позиций пуст");<br> Возврат;<br> КонецЕсли; <br> <br> КонецЕсли;<br> <br> // теперь отбираем позиции справочника<br> Если Нрег(ВидСправочника) = "прайс_лист" Тогда<br> ТекстЗапроса = " <br> |Период С '"+Строка(Мин(РабочаяДата(),ПолучитьДатуТА()))+"' По '"+Строка(Мин(РабочаяДата(),ПолучитьДатуТА()))+"';<br> |Позиция = Справочник.Прайс_лист.ТекущийЭлемент; <br> |Товар = Справочник.Прайс_лист.Товар;<br> |Группировка Позиция Упорядочить По Позиция.Товар.Наименование; <br> |Условие (Позиция В СписокПозиций);<br> |";<br> ИначеЕсли Нрег(ВидСправочника) = "номенклатура" Тогда<br> ТекстЗапроса = " <br> |Период С '"+Строка(Мин(РабочаяДата(),ПолучитьДатуТА()))+"' По '"+Строка(Мин(РабочаяДата(),ПолучитьДатуТА()))+"';<br> |Позиция = Справочник.Номенклатура.ТекущийЭлемент; <br> |Товар = Справочник.Номенклатура.ТекущийЭлемент;<br> |Группировка Позиция Упорядочить По Позиция.Наименование; <br> |Условие (Позиция В СписокПозиций);<br> |";<br> КонецЕсли;<br> <br> // выполняем запрос<br> Запрос = СоздатьОбъект("Запрос");<br> Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда<br> Возврат;<br> КонецЕсли;<br> <br> // Создание Таблицы для выходного отчета<br> //Таб=СоздатьОбъект("Таблица");<br> <br> Ном=0;<br> <br> Если (ЕдиницаПечати.ТекущаяСтрока()<>1)И(ЕдиницаПечати.ТекущаяСтрока()<>2) Тогда<br> ПечатьВФиксЕдиницах = 0;<br> Иначе<br> ПечатьВФиксЕдиницах = 1;<br> КонецЕсли; <br> <br> Если ВалютаПечати.Выбран()=0 Тогда<br> ПечатьВФиксВалюте = 0;<br> Заг="""";<br> Иначе <br> ПечатьВФиксВалюте = 1;<br> Валюта = ВалютаПечати;<br> Заг="Цены указаны в "+СокрЛП(Валюта.Кратко);<br> КонецЕсли; <br> <br> //Таб.ВывестиСекцию("Отчет");<br> //Таб.ВывестиСекцию("Шапка|НазваниеПозиции");<br> Для Индекс = 1 По МФКатЦены.РазмерСписка() Цикл<br> ТипЦены = МФКатЦены.ПолучитьЗначение(Индекс);<br> //Таб.ПрисоединитьСекцию("Шапка|Цена");<br> КонецЦикла; <br> <br> СписокГрупп = СоздатьОбъект("СписокЗначений");<br> <br> Цена = СоздатьОбъект("Справочник.Цены");<br> Цена.ИспользоватьДату(РабочаяДата());<br> <br> Пока Запрос.Группировка("Позиция")>0 Цикл<br> Если Запрос.Позиция.Выбран()=0 Тогда<br> Продолжить;<br> КонецЕсли; <br> <br> глОживить(1);<br> <br> Если Запрос.Позиция.ЭтоГруппа()=1 тогда<br> СписокГрупп.ДобавитьЗначение(Запрос.Позиция.ТекущийЭлемент()); <br> Продолжить;<br> КонецЕсли; <br> <br> Цена.ИспользоватьВладельца(Запрос.Товар.ТекущийЭлемент());<br> <br> Если Нрег(ВидСправочника) = "прайс_лист" Тогда<br> НашлиНенулевуюЦену=0;<br> <br> Для Индекс = 1 По МФКатЦены.РазмерСписка() Цикл <br> ТипЦены = МФКатЦены.ПолучитьЗначение(Индекс).ТекущийЭлемент();<br> Если Цена.НайтиПоРеквизиту("КатегорияЦены",ТипЦены,0)<=0 Тогда<br> Продолжить;<br> КонецЕсли; <br> Если Цена.Цена=0 Тогда<br> Продолжить;<br> КонецЕсли; <br> НашлиНенулевуюЦену=1;<br> Прервать;<br> КонецЦикла; <br> <br> Если НашлиНенулевуюЦену=0 Тогда<br> Продолжить;<br> КонецЕсли; <br> КонецЕсли; <br> <br> Пока СписокГрупп.РазмерСписка()>0 Цикл<br> Гр = СписокГрупп.ПолучитьЗначение(1);<br> Если Запрос.Позиция.ПринадлежитГруппе(Гр)>0 Тогда<br><br> Страница.Cells(ТекСтрока, 1).Value = "Г";<br> Страница.Cells(ТекСтрока, 2).Value = Гр.Наименование;<br> ТекСтрока = ТекСтрока + 1;<br> <br> КонецЕсли; <br> СписокГрупп.УдалитьЗначение(1);<br> КонецЦикла;<br> <br> Если ПечатьВФиксЕдиницах=1 Тогда<br> Если ЕдиницаПечати.ТекущаяСтрока()=1 Тогда <br> Единица = Запрос.Товар.ЕдиницаПоУмолчанию;<br> ИначеЕсли ЕдиницаПечати.ТекущаяСтрока()=2 Тогда <br> Единица = глВернутьБазовуюЕдиницуТовара(Запрос.Товар.ТекущийЭлемент());<br> КонецЕсли; <br> КонецЕсли;<br> <br> Ном=Ном+1; <br> КолРек=МФКатЦены.РазмерСписка();<br> Для Номм=1 По КолРек Цикл<br> Страница.Cells(1,Номм+4).Value=МФКатЦены.ПолучитьЗначение(Номм).Наименование;<br> КонецЦикла;<br> <br> <br> <br> <br> <br> Страница.Cells(ТекСтрока, 1).Value = "Э"; <br> Страница.Cells(ТекСтрока, 2).Value = СокрЛП(Запрос.Товар.Код);<br> Страница.Cells(ТекСтрока, 4).Value = СокрЛП(Запрос.Товар.ПолнНаименование);<br> Страница.Cells(ТекСтрока, 3).Value = СокрЛП(Запрос.Товар.Артикул);<br> <br> ТекСтрока = ТекСтрока + 1;<br> <br> <br> Для Индекс = 1 По МФКатЦены.РазмерСписка() Цикл <br> ТипЦены = МФКатЦены.ПолучитьЗначение(Индекс).ТекущийЭлемент();<br> Если Цена.НайтиПоРеквизиту("КатегорияЦены",ТипЦены,0)<=0 Тогда<br> // ПечЦена = """"; <br> <br> Иначе<br> <br> Если ПечатьВФиксВалюте=0 Тогда<br> Валюта = Цена.Валюта;<br> КонецЕсли;<br> <br> Если ПечатьВФиксЕдиницах=0 Тогда<br> Единица = Цена.Единица;<br> КонецЕсли; <br> <br> ЧЦена = Цена.Цена;<br> Если Единица<>Цена.Единица Тогда<br> ЧЦена = ?(Цена.Единица.Коэффициент = 0,ЧЦена * Единица.Коэффициент / 1,ЧЦена * Единица.Коэффициент / Цена.Единица.Коэффициент); <br> КонецЕсли; <br> ЧЦена = глПересчет(ЧЦена,Цена.Валюта,РабочаяДата(),Валюта,РабочаяДата());<br> <br> <br> <br> <br> Для Инд = 1 По МФКатЦены.РазмерСписка() Цикл <br> ТипЦены = МФКатЦены.ПолучитьЗначение(Инд).ТекущийЭлемент();<br> Страница.Cells(ТекСтрока-1, Инд+4).Value =?????????????????;<br> КонецЦикла; <br> КонецЕсли; <br> <br> <br> <br> // Для Номмер=1 По МФКатЦены.РазмерСписка() Цикл<br> <br> // Таб.ПрисоединитьСекцию("Товар|Цена");<br> <br> КонецЦикла; <br> <br> КонецЦикла; <br> <br> <br>// Excel.Workbooks.Close();<br> Excel = 0;<br> <br>КонецПроцедуры<br><br>Процедура ПриОткрытии() <br> <br> ExcelApp = СоздатьОбъект("Excel.Application"); <br> НовыеРабочиеКниги=ExcelApp.WorkBooks; <br> РабочаяКнига =НовыеРабочиеКниги.Add();<br> Страница=РабочаяКнига.Worksheets(1); <br> Страница.Name = "Прайс"; <br> ExcelApp.Visible=1; <br> <br> Страница.Range("A1").Value="№";<br><br> Страница.Range("B1").Value="Карточка";<br><br> Страница.Range("C1").Value="Артикул";<br><br> Страница.Range("D1").Value="Наименование Товара";<br>КонецПроцедуры<br> "