Имя: Пароль:
1C
1С v8
Правильный запрос, чтоб выводил в отбор (построитель) все свойства и критобьекта и критери
0 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

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