helpf.pro
Регистрация

v8.2 УП: Помогите с группировкой в прайсе

Reik
05.03.2012 17:11Прочитано: 2627
Создал общий модуль который вызывается при помощи скрипта VBS.
Код нормально отрабатывает, но не группирует товар.
Пробовал сделать группировку средствами Excel, но там нужно указывать конкретно строки и решил что мне это не подходит т.к. позиций много и они то добавляются, то удаляются.
Группировка в коде есть но она не работает...
Может кто подскажет в чем косяк????
Код 1C v 8.2 УП
 
Запрос = new Запрос();
Запрос.УстановитьПараметр("Склад",Склад);
Запрос.УстановитьПараметр("Группа1",Group1);
Запрос.УстановитьПараметр("Группа2",Group2);
Запрос.УстановитьПараметр("Группа3",Group3);
Запрос.УстановитьПараметр("Группа4",Group4);
Запрос.УстановитьПараметр("Группа5",Group5);
Запрос.УстановитьПараметр("Группа6",Group6);
Запрос.УстановитьПараметр("Группа7",Group7);
Запрос.УстановитьПараметр("Группа8",Group8);

Запрос.Текст = "ВЫБРАТЬ
| NOME.Code,
| NOME.ParentCode,
| NOME.Groupflag,
| NOME.Description,
| NOME.FullDescr,
| ЦеныНоме.Цена1 КАК OptPrice,
| ЦеныНоме.Цена2 КАК MOptPrice,
| ЦеныНоме.Цена3 КАК RoznPrice,
| ПартииТоваровНаСкладахОстатки.КолОст КАК Numb
| из (
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа1))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа2))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа3))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа4))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа5))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа6))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа7))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И Номе.Ссылка В ИЕРАРХИИ (&Группа8)) КАК NOME
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00002"" ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена1,
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00003"" ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена2,
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00004"" ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена3,
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Товар
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних( ,ТипЦен.Код = ""00002"" ИЛИ ТипЦен.Код = ""00003"" ИЛИ ТипЦен.Код = ""00004"") КАК ЦеныНоменклатурыСрезПоследних
| СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыСрезПоследних.Номенклатура ) КАК ЦеныНоме
| ПО NOME.Ссылка = ЦеныНоме.Товар
| ЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ СУММА(ПТНСОстатки.КоличествоОстаток) как КолОст,
| ПТНСОстатки.Номенклатура как НоменклатураСсылка
| ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(,Склад = &Склад) как ПТНСОстатки
| СГРУППИРОВАТЬ ПО ПТНСОстатки.Номенклатура) КАК ПартииТоваровНаСкладахОстатки
| ПО NOME.Ссылка = ПартииТоваровНаСкладахОстатки.НоменклатураСсылка
| УПОРЯДОЧИТЬ ПО NOME.Ссылка ИЕРАРХИЯ, NOME.Ссылка.Родитель ИЕРАРХИЯ, NOME.Ссылка.Код ВОЗР, NOME.Groupflag УБЫВ ";

counter = 0;

Yandex
Возможно, вас также заинтересует
Реклама на портале
DJ_Serega
06.03.2012 09:39Ответ № 1
Чет я группировки не нашел ) наверно еще не проснулся )

Попробуй выборку загнать во временную таблицу, потом создай новый пакет и там уже группируй.
Reik
06.03.2012 10:19Ответ № 2
а можно по подробней как это сделать? Я просто не очень то похожу на программиста!
DJ_Serega
06.03.2012 11:36Ответ № 3
(2) Reik, заходите в конструктор запроса. Убираете порядок. На закладке "Дополнительно" помещаете во временную таблицу. На закладке "Пакет запросов" создаете новый пакет. На "Таблицы и поля" снизу появилось "Временные таблицы". Выбираете созданную, ставите группировки и порядки.
Reik
06.03.2012 12:58Ответ № 4
а как приблизительно должен выглядеть код?
DJ_Serega
06.03.2012 14:12Ответ № 5
реквизита "НеВключатьВпрайс" у меня нет. поэтому "Номе.НеВключатьВпрайс = 0" заменил на "Номе.Наименование = 0".
Код запроса следующий:
Код 1C v 8.х
 "ВЫБРАТЬ
| NOME.Code,
| NOME.ParentCode,
| NOME.Groupflag,
| NOME.Description,
| NOME.FullDescr,
| ЦеныНоме.Цена1 КАК OptPrice,
| ЦеныНоме.Цена2 КАК MOptPrice,
| ЦеныНоме.Цена3 КАК RoznPrice,
| ПартииТоваровНаСкладахОстатки.КолОст КАК Numb,
| NOME.Ссылка КАК НоменклатураСсылка
|ПОМЕСТИТЬ Выборка
|ИЗ
| (ВЫБРАТЬ
| Номе.Ссылка КАК Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.Наименование = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа1)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.Наименование = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа2)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.Наименование = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа3)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.Наименование = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа4)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.Наименование = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа5)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.Наименование = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа6)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.Наименование = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа7)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.Наименование = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа8)) КАК NOME
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00002""
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена1,
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00003""
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена2,
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00004""
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена3,
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Товар
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| ТипЦен.Код = ""00002""
| ИЛИ ТипЦен.Код = ""00003""
| ИЛИ ТипЦен.Код = ""00004"") КАК ЦеныНоменклатурыСрезПоследних
|
| СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК ЦеныНоме
| ПО NOME.Ссылка = ЦеныНоме.Товар
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СУММА(ПТНСОстатки.КоличествоОстаток) КАК КолОст,
| ПТНСОстатки.Номенклатура КАК НоменклатураСсылка
| ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах.Остатки(, Склад = &Склад) КАК ПТНСОстатки
|
| СГРУППИРОВАТЬ ПО
| ПТНСОстатки.Номенклатура) КАК ПартииТоваровНаСкладахОстатки
| ПО NOME.Ссылка = ПартииТоваровНаСкладахОстатки.НоменклатураСсылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Выборка.Code,
| Выборка.ParentCode,
| Выборка.Groupflag КАК Groupflag,
| Выборка.Description,
| Выборка.FullDescr,
| Выборка.OptPrice,
| Выборка.MOptPrice,
| Выборка.RoznPrice,
| Выборка.Numb,
| Выборка.НоменклатураСсылка КАК НоменклатураСсылка
|ИЗ
| Выборка КАК Выборка
|
|УПОРЯДОЧИТЬ ПО
| НоменклатураСсылка ИЕРАРХИЯ,
| Выборка.НоменклатураСсылка.Родитель ИЕРАРХИЯ,
| Выборка.НоменклатураСсылка.Код,
| Groupflag";
Reik
16.05.2012 12:58Ответ № 6
По этому коду тоже не группирует...
Mokey
16.05.2012 13:03Ответ № 7
Что имеете в виду под группировкой? если то, что "плюсиками" можно свернуть-развернуть, то нужно ИТОГИ указывать в запросе.
Reik
16.05.2012 13:54Ответ № 8
да, именно то что "плюсиками" можно свернуть-развернуть.
Если не затруднит написать как должен выглядеть код с указанными ИТОГАМИ в запросе???
Mokey
16.05.2012 14:07Ответ № 9
Код 1C v 8.х
 	Запрос.Текст = "ВЫБРАТЬ
| NOME.Code,
| NOME.ParentCode,
| NOME.Groupflag,
| NOME.Description,
| NOME.FullDescr,
| ЦеныНоме.Цена1 КАК OptPrice,
| ЦеныНоме.Цена2 КАК MOptPrice,
| ЦеныНоме.Цена3 КАК RoznPrice,
| ПартииТоваровНаСкладахОстатки.КолОст КАК Numb
| из (
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа1))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа2))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа3))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа4))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа5))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа6))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И (Номе.Ссылка В ИЕРАРХИИ (&Группа7))
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0 ИЛИ Номе.ЭтоГруппа = ИСТИНА) И Номе.Ссылка В ИЕРАРХИИ (&Группа8)) КАК NOME
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00002"" ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена1,
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00003"" ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена2,
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00004"" ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена3,
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Товар
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних( ,ТипЦен.Код = ""00002"" ИЛИ ТипЦен.Код = ""00003"" ИЛИ ТипЦен.Код = ""00004"") КАК ЦеныНоменклатурыСрезПоследних
| СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыСрезПоследних.Номенклатура ) КАК ЦеныНоме
| ПО NOME.Ссылка = ЦеныНоме.Товар
| ЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ СУММА(ПТНСОстатки.КоличествоОстаток) как КолОст,
| ПТНСОстатки.Номенклатура как НоменклатураСсылка
| ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(,Склад = &Склад) как ПТНСОстатки
| СГРУППИРОВАТЬ ПО ПТНСОстатки.Номенклатура) КАК ПартииТоваровНаСкладахОстатки
| ПО NOME.Ссылка = ПартииТоваровНаСкладахОстатки.НоменклатураСсылка
| УПОРЯДОЧИТЬ ПО NOME.Ссылка ИЕРАРХИЯ, NOME.Ссылка.Родитель ИЕРАРХИЯ, NOME.Ссылка.Код ВОЗР, NOME.Groupflag УБЫВ
|ИТОГИ СУММА(Numb) ПО Nome.Code";

примерно так
Изменено 16.05.12 14:17:43
Reik
16.05.2012 17:21Ответ № 10
что то не выходит...
Если использовать такой код, то выдает ошибку что нельзя использовать иерархию и итоги в одном. Если использовать только Итоги, то на выходе просто добавляет одну строку к каждому товару
Mokey
16.05.2012 17:25Ответ № 11
А Вы куда выводите-то?
Reik
16.05.2012 17:29Ответ № 12
в Excel
Могу выложить весь код модуля...
Mokey
16.05.2012 17:45Ответ № 13
а в эксель не получится вывести с группировками, если только руками обходить результат запроса, проще вывести в табличный документ 1С, а его уже сохранить в формате эксель, вот тогда все "плюсики" и оформления сохранятся
Reik
16.05.2012 17:52Ответ № 14
просто хотелось сделать автоматически выгружаемый прайс в файл Excel. Собственно данный выгружаются, но группировки нет. Вот и задался этим вопросом...
А если выгружать в табличный документ, то сохранять его нужно ручками... или я не прав?
Mokey
17.05.2012 10:20Ответ № 15
почему ручками?
Записать (Write)
Синтаксис:
Записать(<Имя файла>, <Тип файла таблицы>)
Параметры:
<Имя файла> (обязательный)
Тип: Строка. Имя файла, в котором сохраняется табличный документ.
<Тип файла таблицы> (необязательный)
Тип: ТипФайлаТабличногоДокумента. Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL
Описание:
Записывает табличный документ в файл.
Примечание:
При работе на сервере или через com-соединение использует только файлы форматов mxl и txt.
Пример:
ТабДок.Записать("C:\My Documents\Таблица2.mxl");
Mokey
17.05.2012 10:21Ответ № 16
ааа... тут про COM-соединение... да, есть небольшая загвоздка в этом
Reik
18.05.2012 10:39Ответ № 17
сейчас полный код такой:
Код 1C v 8.2 УП
 

Function ПолучитьГруппуНоменклатуры(наименование,отказ)
ГруппаТоваров = Справочники.Номенклатура.НайтиПоНаименованию(наименование);
if ГруппаТоваров = Справочники.Номенклатура.ПустаяСсылка() or not ГруппаТоваров.ЭтоГруппа then
отказ = True;
EndIf;
return ГруппаТоваров;
EndFunction
//----------------------------------------------------------------------------
Function ПолучитьСклад(Отказ = False)
Stock = Справочники.Склады.НайтиПоНаименованию("Основной склад");
if Stock = Справочники.Склады.ПустаяСсылка() then
Отказ = TRUE;
EndIf;
return Stock;
EndFunction
//---------------------------------------------------------------------------
procedure log_errors(ErrorString,path="D:\root\Price.xls")
TextLog = new TextWriter();
TextLog.Open(trimAll(path)+"V8updateError.log", , ,TRUE);
TextLog.WriteLine(string(CurrentDate()) + "," + string(ErrorString));
TextLog.Close();
endprocedure
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
Procedure ExportPrice(path = "D:\root\Price.xls") export
var xlWBATWorksheet;
xlWBATWorksheet = -4167;

Отказ = False;
Склад = ПолучитьСклад(Отказ);
Group1 = ПолучитьГруппуНоменклатуры("1. Библиотеки, SAN и RAID-системы.",Отказ);
Group2 = ПолучитьГруппуНоменклатуры("2. Компоненты компьютерных систем",Отказ);
Group3 = ПолучитьГруппуНоменклатуры("3. Устройства и носители информации",Отказ);
Group4 = ПолучитьГруппуНоменклатуры("4. Компьютеры, серверы и терминалы.",Отказ);
Group5 = ПолучитьГруппуНоменклатуры("5. Оборудование SCSI, SATA, SAS",Отказ);
Group6 = ПолучитьГруппуНоменклатуры("6. Сетевое оборудование",Отказ);
Group7 = ПолучитьГруппуНоменклатуры("7. Программное обеспечение и услуги.",Отказ);
Group8 = ПолучитьГруппуНоменклатуры("8. Распродажа.",Отказ);

If Отказ then
log_errors("ошибка при выборе склада (Основной склад). Выгрузка остановлена",path);
return;
endIf;
Запрос = new Запрос();
Запрос.УстановитьПараметр("Склад",Склад);
Запрос.УстановитьПараметр("Группа1",Group1);
Запрос.УстановитьПараметр("Группа2",Group2);
Запрос.УстановитьПараметр("Группа3",Group3);
Запрос.УстановитьПараметр("Группа4",Group4);
Запрос.УстановитьПараметр("Группа5",Group5);
Запрос.УстановитьПараметр("Группа6",Group6);
Запрос.УстановитьПараметр("Группа7",Group7);
Запрос.УстановитьПараметр("Группа8",Group8);

Запрос.Текст = "ВЫБРАТЬ
| NOME.Code,
| NOME.ParentCode,
| NOME.Groupflag,
| NOME.Description,
| NOME.FullDescr,
| ЦеныНоме.Цена1 КАК OptPrice,
| ЦеныНоме.Цена2 КАК MOptPrice,
| ЦеныНоме.Цена3 КАК RoznPrice,
| ВЫБОР
| КОГДА ПартииТоваровНаСкладахОстатки.КолОст > 0 ТОГДА ""СКЛАД""
| ИНАЧЕ ""ЗАКАЗ""
| КОНЕЦ КАК Numb,
| NOME.Ссылка КАК НоменклатураСсылка
|ПОМЕСТИТЬ Выборка
|ИЗ
| (ВЫБРАТЬ
| Номе.Ссылка КАК Ссылка,
| Номе.Код КАК Code,
| Номе.Родитель.Код КАК ParentCode,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Groupflag,
| Номе.Наименование КАК Description,
| Номе.Комментарий КАК FullDescr
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа1)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа2)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа3)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа4)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа5)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа6)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа7)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номе.Ссылка,
| Номе.Код,
| Номе.Родитель.Код,
| ВЫБОР
| КОГДА Номе.ЭтоГруппа
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ,
| Номе.Наименование,
| Номе.Комментарий
| ИЗ
| Справочник.Номенклатура КАК Номе
| ГДЕ
| (Номе.НеВключатьВпрайс = 0
| ИЛИ Номе.ЭтоГруппа = ИСТИНА)
| И Номе.Ссылка В ИЕРАРХИИ(&Группа8)) КАК NOME
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00002""
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена1,
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00003""
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена2,
| СУММА(ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""00004""
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ) КАК Цена3,
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Товар
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| ТипЦен.Код = ""00002""
| ИЛИ ТипЦен.Код = ""00003""
| ИЛИ ТипЦен.Код = ""00004"") КАК ЦеныНоменклатурыСрезПоследних
|
| СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК ЦеныНоме
| ПО NOME.Ссылка = ЦеныНоме.Товар
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СУММА(ПТНСОстатки.КоличествоОстаток) КАК КолОст,
| ПТНСОстатки.Номенклатура КАК НоменклатураСсылка
| ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах.Остатки(, Склад = &Склад) КАК ПТНСОстатки
|
| СГРУППИРОВАТЬ ПО
| ПТНСОстатки.Номенклатура) КАК ПартииТоваровНаСкладахОстатки
| ПО NOME.Ссылка = ПартииТоваровНаСкладахОстатки.НоменклатураСсылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Выборка.Code,
| Выборка.ParentCode,
| Выборка.Groupflag КАК Groupflag,
| Выборка.Description,
| Выборка.FullDescr,
| Выборка.OptPrice,
| Выборка.MOptPrice,
| Выборка.RoznPrice,
| Выборка.Numb,
| Выборка.НоменклатураСсылка КАК НоменклатураСсылка
|ИЗ
| Выборка КАК Выборка
|
|УПОРЯДОЧИТЬ ПО
| НоменклатураСсылка ИЕРАРХИЯ,
| Выборка.НоменклатураСсылка.Родитель ИЕРАРХИЯ,
| Выборка.НоменклатураСсылка.Код,
| Groupflag";



counter = 0;
Try
excel = new COMОбъект("Excel.Application");
Except
log_errors("ошибка при создании Excel документа. Выгрузка остановлена",path);
return;
EndTry;
try
ЗапросПрайс = Запрос.Выполнить().Выгрузить();
except
log_errors(ОписаниеОшибки(),path);
return;
endTry;
Try
excel.Application.DisplayAlerts = False;
excel.Application.Workbooks.Add(xlWBATWorksheet);
eBook = excel.Workbooks.Item(excel.Workbooks.Count);
eSheet = EBook.ActiveSheet;
//Группировка прайса///////////////////////////////////
// Excel.ActiveSheet.Rows("3:305").Group();
// Excel.ActiveSheet.Rows("307:1259").Group();
// Excel.ActiveSheet.Rows("1261:1402").Group();
// Excel.ActiveSheet.Rows("1404:1833").Group();
// Excel.ActiveSheet.Rows("1835:2085").Group();
// Excel.ActiveSheet.Rows("2087:2107").Group();
// Excel.ActiveSheet.Rows("2109:2287").Group();
// Excel.ActiveSheet.Rows("2289:2366").Group();


///////////////////////////////////////////////////////////
eSheet.Columns(2).ColumnWidth = 100; // Ширина колонки 2
//Шапка в прайсе///////////////////////////////////////////////////
eSheet.Cells(1,1).Value = "Код";
eSheet.Cells(1,1).Font.Size = 14;
eSheet.Cells(1,1).Font.Bold = 1;
eSheet.Cells(1,2).Value = "Наименование";
eSheet.Cells(1,2).Font.Size = 14;
eSheet.Cells(1,2).Font.Bold = 1;
eSheet.Cells(1,3).Value = "Цена";
eSheet.Cells(1,3).Font.Size = 14;
eSheet.Cells(1,3).Font.Bold = 1;
eSheet.Cells(1,4).Value = "Кол-во";
eSheet.Cells(1,4).Font.Size = 14;
eSheet.Cells(1,4).Font.Bold = 1;
////////////////////////////////////////////////////////////////////

Для каждого СтрокаПрайс Из ЗапросПрайс Цикл
eSheet.Cells(counter+2,1).Value = СтрокаПрайс.Code;
// eSheet.Cells(counter+1,1).Value = СтрокаПрайс.ParentCode;
// eSheet.Cells(counter+2,5).Value = СтрокаПрайс.Groupflag;
eSheet.Cells(counter+2,2).Value = СтрокаПрайс.Description;
//eSheet.Cells(counter+1,5).Value = СтрокаПрайс.FullDescr;
// eSheet.Cells(counter+2,3).Value = СтрокаПрайс.OptPrice;
// eSheet.Cells(counter+1,7).Value = СтрокаПрайс.MOptPrice;
eSheet.Cells(counter+2,3).Value = СтрокаПрайс.RoznPrice;
eSheet.Cells(counter+2,4).Value = СтрокаПрайс.Numb;

if СтрокаПрайс.Groupflag <> 1 then
counter = counter + 1;
endif;
КонецЦикла;
eBook.SaveAs ((path), -4143); //сохранение по пути прописанной в переменной path в формате Excel 2003
//eBook.SaveCopyAs (trimAll(string(path)));
log_errors("Выгрузка окончена. Выгружено " + String(counter) + " номенклатурных позиций ",path);
Except
log_errors(ОписаниеОшибки(),path);
excel.Quit();
EndTry;
excel.Quit();

EndProcedure

Reik
18.05.2012 10:41Ответ № 18
он работает нормально все выгружает в файл, но нет плюсиков (группировок)
Mokey
18.05.2012 11:32Ответ № 19
а вот тут описано кое-что:
https://help1c.com/faq/view/365.html
Reik
18.05.2012 13:56Ответ № 20
там описано как группировать с помощью Excel. Я пробовал так, но позиции добавляются и уменьшаются практически каждый день, а там указывается жестко по сторокам
Mokey
18.05.2012 14:10Ответ № 21
(20) Reik, так количество строк в группе надо указывать во время формирования прайса, а при выводе в эксель заменить ктроуи и столбцы соответствующими переменными.
Reik
18.05.2012 15:14Ответ № 22
хм... интересно... а поконкретней можно?
Mokey
18.05.2012 17:23Ответ № 23
(22) Reik, куда уж конкретней, если Вы столько уже написали
Reik
18.05.2012 17:30Ответ № 24
"количество строк в группе надо указывать во время формирования прайса"
Как это сделать???
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.