Имя: Пароль:
1C
 
Сортировка результатов отчета
,
0 pro3ri
 
11.08.15
07:10
Добрый день!
Подскажите как можно сортировать результаты отчета по введенным значениям из списка
https://s.mail.ru/7mgBrtptn36R/img-2015-08-11-09-12-58.png
Т.е. ввел я номеклатура2, номеклатура1, номеклатура3 и в отчете должно также отображаться номеклатура2, номеклатура1, номеклатура3  а выходит не так. Это ут 10.2. Как победить?
1 sFAQer
 
11.08.15
07:15
Писать свой отчёт который будет выводить их в таком порядке
2 pro3ri
 
11.08.15
07:19
(0) думал сначала попробовать скорректировать штатный механизм
3 sFAQer
 
11.08.15
07:19
(2) Штатный механизм отбора?
4 pro3ri
 
11.08.15
07:28
(3) Отбором так по-моему не сделать...
5 sFAQer
 
11.08.15
07:34
(4) Тогда зачем ты требуешь от поля отбора ещё и сортировку?
6 pro3ri
 
11.08.15
07:43
(5) нужно пользователю. Чисто Гипотетически это должно просто делаться.
7 sFAQer
 
11.08.15
07:48
(6) Но не делается.
8 pro3ri
 
11.08.15
08:00
Есть одна идейка, https://s.mail.ru/4JADb6RWRrpf/img-2015-08-11-10-05-34.png
присваивать позицию для списка значений, но как ее воплотить?
9 sFAQer
 
11.08.15
08:06
(8) эм, это список значений, у позиций есть индексы.
10 pro3ri
 
11.08.15
08:24
(9) как бы их вытащить в отбор...
11 pro3ri
 
11.08.15
08:25
(10) + Т.е. в сортировку
12 sFAQer
 
11.08.15
08:50
(11) Заджойнить в запрос который тебе выбирает данные с упорядочиванием по индексу
13 pro3ri
 
11.08.15
09:02
вот эта процедура модуля отчета формирует запрос:
Процедура ЗаполнитьНачальныеНастройки() Экспорт
    СтруктураПредставлениеПолей = Новый Структура;
    МассивОтбора = Новый Массив;
    ПостроительОтчета = ОбщийОтчет.ПостроительОтчета;
    
    Текст = "
    |ВЫБРАТЬ //РАЗЛИЧНЫЕ
    |    СУММА(КоличествоОстаток) КАК Количество,
    |    СУММА(КоличествоМестОстаток) КАК КоличествоМест,
    |    СУММА(КоличествоОстаток*Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоБазовыхЕд,
    |    СУММА(КоличествоОстаток*Номенклатура.ЕдиницаХраненияОстатков.Коэффициент/Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК КоличествоЕдиницОтчетов,
    |    0 КАК ЦенаВРознице,
    |    Склад КАК Склад,
    |    Склад.Представление КАК СкладПредставление,
    |    Номенклатура КАК Номенклатура,
    |    Номенклатура.Представление КАК НоменклатураПредставление,
    |    ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков КАК НоменклатураЕдиницаХраненияОстатков,
    |    ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК НоменклатураЕдиницаХраненияОстатковПредставление
    |    //СВОЙСТВА
    |{ВЫБРАТЬ
    |    Склад.* КАК Склад,
    |    Номенклатура.* КАК Номенклатура,
    |    ТаблицаРегистра.Номенклатура.БазоваяЕдиницаИзмерения КАК НоменклатураБазоваяЕдиницаИзмерения,
    |    ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков КАК НоменклатураЕдиницаХраненияОстатков,
    |    ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
    |    СерияНоменклатуры.* КАК СерияНоменклатуры,
    |    Качество.* КАК Качество
    |    //СВОЙСТВА
    |}
    |ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон,
    |                {Склад.* КАК Склад,
    |                Номенклатура.* КАК Номенклатура,
    |                ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
    |                СерияНоменклатуры.* КАК СерияНоменклатуры,
    |                Качество.* КАК Качество}) КАК ТаблицаРегистра
    |//СОЕДИНЕНИЯ
    |СГРУППИРОВАТЬ ПО
    |    Номенклатура,
    |    Склад
    |//СГРУППИРОВАТЬПО

    |{ГДЕ
    |    ЛОЖЬ КАК НеавтоматизированнаяТорговаяТочка
    |//СВОЙСТВА
    |//КАТЕГОРИИ
    |}
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ //РАЗЛИЧНЫЕ
    |    СУММА(КоличествоОстаток) КАК Количество,
    |    СУММА(0) КАК КоличествоМест,
    |    СУММА(КоличествоОстаток*Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоБазовыхЕд,
    |    СУММА(КоличествоОстаток*Номенклатура.ЕдиницаХраненияОстатков.Коэффициент/Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК КоличествоЕдиницОтчетов,
    |    ЦенаВРознице КАК ЦенаВРознице,
    |    Склад КАК Склад,
    |    Склад.Представление КАК СкладПредставление,
    |    Номенклатура КАК Номенклатура,
    |    Номенклатура.Представление КАК НоменклатураПредставление,
    |    ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков КАК НоменклатураЕдиницаХраненияОстатков,
    |    ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК НоменклатураЕдиницаХраненияОстатковПредставление
    |    //СВОЙСТВА
    |{ВЫБРАТЬ
    |    Склад.* КАК Склад,
    |    Номенклатура.* КАК Номенклатура,
    |    Номенклатура.БазоваяЕдиницаИзмерения КАК НоменклатураБазоваяЕдиницаИзмерения,
    |    ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков КАК НоменклатураЕдиницаХраненияОстатков,
    |    ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
    |    СерияНоменклатуры.* КАК СерияНоменклатуры,
    |    ЦенаВРознице КАК ЦенаВРознице,
    |    NULL КАК Качество
    |    //СВОЙСТВА
    |}
    |ИЗ РегистрНакопления.ТоварыВНеавтоматизированныхТорговыхТочках.Остатки(&ДатаКон,
    |                {Склад.* КАК Склад,
    |                Номенклатура.* КАК Номенклатура,
    |                ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
    |                СерияНоменклатуры.* КАК СерияНоменклатуры
    |                }) КАК ТаблицаРегистра
    |//СОЕДИНЕНИЯ
    |СГРУППИРОВАТЬ ПО
    |    Номенклатура,
    |    ЦенаВРознице,
    |    Склад
    |//СГРУППИРОВАТЬПО

    |{ГДЕ
    |    ИСТИНА КАК НеавтоматизированнаяТорговаяТочка
    |//СВОЙСТВА
    |//КАТЕГОРИИ
    |}
    |{УПОРЯДОЧИТЬ ПО
    |    Склад.* КАК Склад,
    |    Номенклатура.* КАК Номенклатура,
    |    ТаблицаРегистра.Номенклатура.БазоваяЕдиницаИзмерения.* КАК НоменклатураБазоваяЕдиницаИзмерения,
    |    ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.* КАК НоменклатураЕдиницаХраненияОстатков,
    |    ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
    |    СерияНоменклатуры.* КАК СерияНоменклатуры,
    |    Качество.* КАК Качество,
    |    Количество,
    |    КоличествоМест,
    |    ЦенаВРознице КАК ЦенаВРознице,
    |    КоличествоБазовыхЕд
    |//ОБЩИЕ_СВОЙСТВА
    |}
    |{ИТОГИ ПО
    |    Склад.* КАК Склад,
    |    Номенклатура.* КАК Номенклатура,
    |    Номенклатура.БазоваяЕдиницаИзмерения.* КАК НоменклатураБазоваяЕдиницаИзмерения,
    |    Номенклатура.ЕдиницаХраненияОстатков.* КАК НоменклатураЕдиницаХраненияОстатков,
    |    ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
    |    СерияНоменклатуры.* КАК СерияНоменклатуры,
    |    Качество.* КАК Качество,
    |    ЦенаВРознице КАК ЦенаВРознице
    |//ОБЩИЕ_СВОЙСТВА
    |}
    |ИТОГИ  
    |    СУММА(Количество),
    |    СУММА(КоличествоМест),
    |    СУММА(КоличествоБазовыхЕд),
    |    СУММА(КоличествоЕдиницОтчетов)
    |ПО ОБЩИЕ ,
    |    Номенклатура ИЕРАРХИЯ  КАК Номенклатура, Склад КАК Склад";
    
    СтруктураПредставлениеПолей = Новый Структура(
    "Склад,
    |Номенклатура,
    |ХарактеристикаНоменклатуры,
    |СерияНоменклатуры,
    |Качество,
    |ЦенаВРознице,
    |НоменклатураБазоваяЕдиницаИзмерения,
    |НоменклатураЕдиницаХраненияОстатков,
    |НеавтоматизированнаяТорговаяТочка",
    "Склад",
    "Номенклатура",
    "Характеристика номенклатуры",
    "Серия номенклатуры",
    "Качество",
    "Цена в рознице ("+ СокрЛП(Константы.ВалютаРегламентированногоУчета.Получить()) + " )",
    "Базовая единица измерения",
    "Единица хранения остатков",
    "Остатки по неавтоматизированным торговым точкам");
    
    Если ОбщийОтчет.ИспользоватьСвойстваИКатегории Тогда
        ТекстПоляСвойств= "";
        ТекстПоляКатегорий = "";

        ТаблицаПолей = Новый ТаблицаЗначений;
        ТаблицаПолей.Колонки.Добавить("ПутьКДанным");  // описание поля запроса поля, для которого добавляются свойства и категории. Используется в условии соединения с регистром сведений, хранящим значения свойств или категорий
        ТаблицаПолей.Колонки.Добавить("Представление");// представление поля, для которого добавляются свойства и категории.
        ТаблицаПолей.Колонки.Добавить("Назначение");   // назначение свойств/категорий объектов для данного поля
        ТаблицаПолей.Колонки.Добавить("ТипЗначения");  // тип значения поля, для которого добавляются свойства и категории. Используется, если не установлено назначение
        ТаблицаПолей.Колонки.Добавить("НетКатегорий"); // признак НЕиспользования категорий для объекта
        
        СтрокаТаблицы = ТаблицаПолей.Добавить();
        СтрокаТаблицы.ПутьКДанным = "Номенклатура";
        СтрокаТаблицы.Представление = "Номенклатура";
        СтрокаТаблицы.Назначение = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура;
        
        СтрокаТаблицы = ТаблицаПолей.Добавить();
        СтрокаТаблицы.ПутьКДанным = "Склад";
        СтрокаТаблицы.Представление = "Склад";
        СтрокаТаблицы.Назначение = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Склады;
        
        СтрокаТаблицы = ТаблицаПолей.Добавить();
        СтрокаТаблицы.ПутьКДанным = "ХарактеристикаНоменклатуры";
        СтрокаТаблицы.Представление = "Характеристика номенклатуры";
        СтрокаТаблицы.Назначение = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры;
        
        ДобавитьВТекстСвойстваИКатегории(ТаблицаПолей, Текст, СтруктураПредставлениеПолей,
                ОбщийОтчет.мСоответствиеНазначений, ПостроительОтчета.Параметры
                ,, ТекстПоляКатегорий, ТекстПоляСвойств,,,,,,ОбщийОтчет.мСтруктураДляОтбораПоКатегориям);
                
        ДобавитьВТекстСвойстваОбщие(Текст, ТекстПоляСвойств, "//ОБЩИЕ_СВОЙСТВА");

    КонецЕсли;
        
    ПостроительОтчета.Текст = Текст;
    
    Если ОбщийОтчет.ИспользоватьСвойстваИКатегории = Истина Тогда

        УстановитьТипыЗначенийСвойствИКатегорийДляОтбора(ПостроительОтчета, ТекстПоляКатегорий, ТекстПоляСвойств, ОбщийОтчет.мСоответствиеНазначений, СтруктураПредставлениеПолей);

    КонецЕсли;
    
    Если ОбщийОтчет.Показатели.Найти("Количество", "Имя") = Неопределено Тогда
        ОбщийОтчет.ЗаполнитьПоказатели("Количество", "Количество в единицах хранения остатков", Истина, "ЧЦ=15; ЧДЦ=5");
    КонецЕсли;
    Если ОбщийОтчет.Показатели.Найти("КоличествоБазовыхЕд", "Имя") = Неопределено Тогда
        ОбщийОтчет.ЗаполнитьПоказатели("КоличествоБазовыхЕд", "Количество в базовых единицах измерения", Ложь, "ЧЦ=15; ЧДЦ=5");
    КонецЕсли;
    Если ОбщийОтчет.Показатели.Найти("КоличествоЕдиницОтчетов", "Имя") = Неопределено Тогда
        ОбщийОтчет.ЗаполнитьПоказатели("КоличествоЕдиницОтчетов", "Количество в ед. отчетов", Ложь, "ЧЦ=15; ЧДЦ=5");
    КонецЕсли;
    
    Если ОбщийОтчет.Показатели.Найти("КоличествоМест", "Имя") = Неопределено Тогда
        ОбщийОтчет.ЗаполнитьПоказатели("КоличествоМест", "Количество мест", Ложь, "ЧЦ=15; ЧДЦ=5");
    КонецЕсли;

    
    МассивОтбора.Добавить("Номенклатура");
    МассивОтбора.Добавить("Склад");
    
    ЗаполнитьПредставленияПолей(СтруктураПредставлениеПолей, ПостроительОтчета);
    ОчиститьДополнительныеПоляПостроителя(ПостроительОтчета);
    ЗаполнитьОтбор(МассивОтбора, ПостроительОтчета);
    
    ПостроительОтчета.ИзмеренияСтроки.Удалить(ПостроительОтчета.ИзмеренияСтроки.Найти("Склад"));
    ПостроительОтчета.ИзмеренияКолонки.Добавить("Склад", "Склад", ТипИзмеренияПостроителяОтчета.Элементы);
    
    ОбщийОтчет.мСтруктураСвязиПоказателейИИзмерений = Новый Структура("Количество, КоличествоБазовыхЕд", Новый Структура("НоменклатураЕдиницаХраненияОстатков, Номенклатура"), Новый Структура("НоменклатураБазоваяЕдиницаИзмерения, Номенклатура"), Новый Структура);
    
КонецПроцедуры
14 D_E_S_131
 
11.08.15
10:40
(13) А как будешь сортировать если отбор в отчете будет не задан или там будут выбраны группы номенклатуры?
Программист всегда исправляет последнюю ошибку.