Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Правильный запрос, чтоб выводил в отбор (построитель) все свойства и критобьекта и критери

Правильный запрос, чтоб выводил в отбор (построитель) все свойства и критобьекта и критери
Я
   SkillUp
 
19.03.21 - 11:46
Помогите с запросом, чтоб была возможность отбора (на построителе) по всем свойствам и критериям номенклатуры?

Мой текущий код (пока пытаюсь добавить отбор по свойствам):

// Процедура передает построителю отчета запрос

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

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

В результате получаю такое - 1) - https://drive.google.com/file/d/1vTp4nVb-vfNYHBT_pFK4n_SQixvDDBFX/view?usp=sharing
                             2) - https://drive.google.com/file/d/1KYqJJwRgxSXrFjEDYscB8qV4iJYyoyvr/view?usp=sharing

Как правильно сделать запрос, чтоб можно было выбирать номенклатуру еще и по свойствам и критериям (через ПостроительОтчета.Отбор)?
   Kondarat
 
1 - 19.03.21 - 11:53
Что за конфигурация хоть?
   SkillUp
 
2 - 19.03.21 - 11:55
(1) Управление торговым предприятием для Украины", редакция 1.2.
   Kondarat
 
3 - 19.03.21 - 12:18
Типа нашей Управление тороговлей 10.3? Отчеты построены на УниверсальномОтчете?
   Kesim
 
4 - 19.03.21 - 18:54
(0) попробуй сначала просто запрос написать - чтоб возвращал все что будет использоваться в отборах
   SkillUp
 
5 - 20.03.21 - 12:29
(4) Блин, точно.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.