Имя: Пароль:
1C
1С v8
Сгруппировать наименование по группам
,
0 alexsandrinia
 
16.04.12
09:29
Вопрос, может и банален, но тем не менее...
Вывожу список товаров, скажем, холодильники, пылесосы, телевизоры. И весь список вразнобой. Хотелось бы его упорядочить по группам, кто куда входит. Например, чтоб выходил список Телевизоры, Холодильники и т.д. Нажимаю на Холодильники - показывает список всех холодильников. Вот сам код, собственно:

   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ОстаткиТоваровНаСкладах.Склад КАК СкладСсылка,
                  |    ОстаткиТоваровНаСкладах.Номенклатура КАК НоменклатураСсылка,
                  |    ОстаткиТоваровНаСкладах.Номенклатура.Представление КАК Номенклатура,
                  |    ОстаткиТоваровНаСкладах.Склад.Представление КАК Склад,
                  |    ОстаткиТоваровНаСкладах.Номенклатура.ОсновноеИзображение КАК ИзображениеСсылка,
                  |    ОстаткиТоваровНаСкладах.Номенклатура.ОсновноеИзображение.Представление КАК Изображение,
                  |    ОстаткиТоваровНаСкладах.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК ДополнительноеОписаниеНоменклатуры,
                  |    ОстаткиТоваровНаСкладах.Номенклатура.Артикул КАК Артикул,
                  |    ОстаткиТоваровНаСкладах.КоличествоОстаток КАК Остаток
                  |ИЗ
                  |    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКонца, ) КАК ОстаткиТоваровНаСкладах
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Склад,
                  |    Номенклатура
                  |ИТОГИ ПО
                  |    ОстаткиТоваровНаСкладах.Номенклатура.ВидНоменклатуры.Наименование";

                 
   ТекущееВремя = Формат(Текущаядата(), "ДЛФ=DD");              
   Запрос.УстановитьПараметр("ДатаКонца", КонецДня(РабочаяДата));              
   //Запрос.УстановитьПараметр("ДатаКонца", );              
   Выборка = Запрос.Выполнить().Выбрать();              
   
       
   // Получить поле табличного документа, в которое будем выводить результат
   ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;

   // Очистить данные в табличном документе (возможно, данные уже выводились ранее)
   ТабДок.Очистить();

   Макет = ПолучитьМакет("Макет");
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
   ОбластьШапка.Параметры.ТекДата = Формат(ТекущаяДата(), "ДЛФ=DD");
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапка);

   Пока Выборка.Следующий() Цикл

       Если Выборка.Остаток > 0 Тогда
       
           Если Выборка.СкладСсылка.Наименование = "Свободные остатки" Тогда
           
               ОбластьСтрокаТаблицы.Параметры.Склад = Выборка.Склад;
               ОбластьСтрокаТаблицы.Параметры.Артикул = Выборка.Артикул;
               ОбластьСтрокаТаблицы.Параметры.Номенклатура = Выборка.Номенклатура;
               ОбластьСтрокаТаблицы.Параметры.Остатки = Выборка.Остаток;
           
               Попытка
                   Если Не ЗначениеЗаполнено(Выборка.НоменклатураСсылка.ОсновноеИзображение) Тогда
                       Картинка=Новый Картинка;
                   Иначе
               
                       Картинка = Выборка.НоменклатураСсылка.ОсновноеИзображение.Хранилище.Получить();
                   КонецЕсли;
                       ОбластьСтрокаТаблицы.Рисунки.D1.Картинка = Картинка;
                   Исключение
               КонецПопытки;
           
               ДополнительноеОписание = Выборка.НоменклатураСсылка.ДополнительноеОписаниеНоменклатуры;
               ОбластьСтрокаТаблицы.Параметры.ДополнительноеОписание = ДополнительноеОписание;
               ТабДок.Вывести(ОбластьСтрокаТаблицы);
                       
           КонецЕсли;
           
       КонецЕсли;
       
   КонецЦикла;

но при запуске выходит ошибка:


{Форма.ФормаОтчета(47)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
       Если Выборка.Остаток > 0 Тогда

Получается, когда смотрю пошагово, на тот момент, когда определяется Выборка.Остаток - то он ещё не определён.
Как сделать, чтоб выходило всё по группам, чтоб в дальнейшем можно было раскрывать группы?
1 butterbean
 
16.04.12
09:31
какбы надо ИТОГИ СУММА(Остаток) ПО ...
2 alexsandrinia
 
16.04.12
09:32
(1) а причём ИТОГИ СУММА? Мне нужно  количество.
3 butterbean
 
16.04.12
09:32
(2) соберись
4 butterbean
 
16.04.12
09:34
(3)+ а вообще конечно не код а ужас, зачем тебе ИТОГИ если ты не делаешь обход по группировкам??
5 alexsandrinia
 
16.04.12
09:38
(4) почему не код, а ужас? что не так?
6 wise
 
16.04.12
09:43
(5)|УПОРЯДОЧИТЬ ПО
|    Склад,
|    Номенклатура.Родитель
7 wise
 
16.04.12
09:44
6+ если у тебя родитель = холодильники, пылесосы, телевизоры.
8 wise
 
16.04.12
09:47
ОстаткиТоваровНаСкладах.Номенклатура.Родитель

просто номеклатура у тебя {.представление}
9 alexsandrinia
 
16.04.12
09:59
(8) предлагаешь вообще убрать ОстаткиТоваровНаСкладах.Номенклатура.Представление?
10 alexsandrinia
 
16.04.12
10:27
(7) и как отобразить ещё Родитель?
11 alexsandrinia
 
26.04.12
10:25
есть ещё варианты?