Имя: Пароль:
1C
1С v8
Запрос на вывод прайс-листа номенклатуры
0 derk153
 
11.02.13
13:42
Здравствуйте!
Помогите пожалуйста с запросом. Нужно вывести прайс номенклатуры сохраняя иерархию. Делаю это 2умя запросами в 1ый - вся номенклатура, 2ой - цены из регистра сведений, далее делаю перебор номенклатуры и в таблице цен ищу соответствующею цену, если цена найдена - вывожу в прайс, не найдена - нет + если группа, то запись тоже добавляется в прайс.
Да, алгоритм туповат... но результат верный. Но есть одна проблемка, выводятся "пустые" группы, тобиш вывелось наименование группы, в номенклатурах которой нет цены, получается так:
---------------------------------------------------------
1 | БУД.МАТЕРІАЛИ НА ПРОДАЖ (ГРУППА)                
2 | БУДІВЕЛЬНІ МАТЕРІАЛИ    (ГРУППА)                
3 | ВИРОБНИЦТВО            (ГРУППА)        
4 | Корпус1                    |1 145,83     |шт.
5 | Корпус2                    |1 145,83     |шт.
---------------------------------------------------------
В идеале должно быть так:
---------------------------------------------------------
1 | ВИРОБНИЦТВО            (ГРУППА)        
2 | Корпус1                    |1 145,83     |шт.
3 | Корпус2                    |1 145,83     |шт.
---------------------------------------------------------
Подскажите с алгоритмом или с правильным запросом.
Спасибо.
1 Wobland
 
11.02.13
13:44
из регистр итоги по номенклатура иерархия?
и без всяких справочников
2 НафНаф
 
11.02.13
13:45
одним запросом, без всяких поисков далее как в (1)
3 derk153
 
11.02.13
13:49
ок, сейчас попробую
4 derk153
 
11.02.13
13:52
К сожалению не получается, не выводит группы. Вот запрос:

   ЗапросЦены = Новый Запрос;
   ЗапросЦены.Текст = "ВЫБРАТЬ
                      |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
                      |    ЦеныНоменклатурыСрезПоследних.Номенклатура.Наименование КАК Наименование,
                      |    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
                      |    ЦеныНоменклатурыСрезПоследних.Цена,
                      |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
                      |    ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа КАК ЭтоГруппа
                      |ИЗ
                      |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
                      |ГДЕ
                      |    ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
                      |
                      |УПОРЯДОЧИТЬ ПО
                      |    Номенклатура ИЕРАРХИЯ";
                         
   ЗапросЦены.УстановитьПараметр("Период", Дата);
   ЗапросЦены.УстановитьПараметр("ТипЦен", ТипЦен);
5 Wobland
 
11.02.13
13:55
(4) итоги
6 Wobland
 
11.02.13
13:55
и тип цен в параметры таблицы
7 derk153
 
11.02.13
14:00
(5) Спасибо, получилось. Вот запрос:

   ЗапросЦены = Новый Запрос;
   ЗапросЦены.Текст = "ВЫБРАТЬ
                      |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
                      |    ЦеныНоменклатурыСрезПоследних.Номенклатура.Наименование КАК Наименование,
                      |    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
                      |    ЦеныНоменклатурыСрезПоследних.Цена,
                      |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
                      |    ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа КАК ЭтоГруппа
                      |ИЗ
                      |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
                      |ГДЕ
                      |    ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
                      |ИТОГИ ПО
                      |    Номенклатура ТОЛЬКО ИЕРАРХИЯ";
                         
   ЗапросЦены.УстановитьПараметр("Период", Дата);
   ЗапросЦены.УстановитьПараметр("ТипЦен", ТипЦен);
8 Wobland
 
11.02.13
14:01
(7) теперь (6). это в скобочках вторым параметром
9 derk153
 
11.02.13
14:03
А зачем? идет отбор только по 1му типу цен.
10 Wobland
 
11.02.13
14:03
(9) для кошерности и скорости
11 derk153
 
11.02.13
14:06
(10) ясн. спасибо)
12 derk153
 
11.02.13
14:11
а еще такой вопрос, хотелось бы еще делать отбор по родителю, как правильно уставить условие? если ставить

ЦеныНоменклатурыСрезПоследних.Номенклатура.Родитель = &Родитель

то вложенные группы не попадают в отчет
13 Wobland
 
11.02.13
14:16
в иерархии &Родитель?
14 derk153
 
11.02.13
14:19
(13) Спасибо, работает