Вход | Регистрация


Программная установка отбора в СКД

Программная установка отбора в СКД
Я
   TolstiyBeremenniy
 
05.12.18 - 04:06
Имеется отчет на СКД. Обычные формы.
Необходимо отфильтровать выводимые данные по строковому
типу договора. В визуальном оформлении это выглядит как.

Группа ИЛИ
   - Договор.Наименование СОДЕРЖИТ ЕП
   - Договор.Наименование СОДЕРЖИТ 2018
   - Договор.Наименование СОДЕРЖИТ 2017
   - Договор.Наименование СОДЕРЖИТ 2016
   - Договор.Наименование СОДЕРЖИТ 2015
   - Договор.Наименование СОДЕРЖИТ Счет

Как задать что бы данный отбор имелся у отчета при открытии?
Что бы не задавать его каждый раз вручную визуально?
 
 
   catena
 
1 - 05.12.18 - 06:02
   TolstiyBeremenniy
 
2 - 05.12.18 - 06:09
Почему не установились параметры?
Ставлю начало и конец месяца. Открываю отчет.
Там в настройках и в начальной дате и в конечной дате текущая дата.


//

Процедура ПриОткрытии()
    УстановитьПараметрыСКД("НачалоПериода", НачалоМесяца(ТекущаяДата()));
    УстановитьПараметрыСКД("КонецПериода",  КонецМесяца(ТекущаяДата()));
КонецПроцедуры
//

Процедура УстановитьПараметрыСКД(ИмяПараметра, Значение)
    ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
    Если ПараметрСКД <> Неопределено Тогда
        ПараметрСКД.Использование = Истина;
        ПараметрСКД.Значение  = Значение;
    КонецЕсли;    
КонецПроцедуры
//
   TolstiyBeremenniy
 
3 - 05.12.18 - 06:11
И так тоже не работает, -

    УстановитьПараметрыСКД("ДатаНачала",    НачалоМесяца(ТекущаяДата()));
    УстановитьПараметрыСКД("ДатаОкончания", КонецМесяца(ТекущаяДата()));
   TolstiyBeremenniy
 
4 - 05.12.18 - 06:12
Видимо потому что там в СКД на вкладке параметры это прописано.
   TolstiyBeremenniy
 
5 - 05.12.18 - 06:21
Вот так задаю отбор. Почему в настройках в отборе
в визуальном представлении стоит только 2018 ?
Как этим оперировать?
Как создать группу И ?
   TolstiyBeremenniy
 
6 - 05.12.18 - 06:22
(5+)

//

Процедура ПриОткрытии()
    УстановитьПараметрыСКД("НачалоПериода", НачалоМесяца(ТекущаяДата()));
    УстановитьПараметрыСКД("КонецПериода",  КонецМесяца(ТекущаяДата()));
    //

    УстановитьОтборСКД("Договор.Наименование", ВидСравненияКомпоновкиДанных.Содержит, "ЕП");
    УстановитьОтборСКД("Договор.Наименование", ВидСравненияКомпоновкиДанных.Содержит, "2018");
КонецПроцедуры
//

Процедура УстановитьПараметрыСКД(ИмяПараметра, Значение)
    ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
    Если ПараметрСКД <> Неопределено Тогда
        ПараметрСКД.Использование = Истина;
        ПараметрСКД.Значение      = Значение;
    КонецЕсли;    
КонецПроцедуры
//

Процедура УстановитьОтборСКД(ИмяПоля, ВидОтбора, Значение)
    ПолеОтбора         = Новый ПолеКомпоновкиДанных(ИмяПоля);
    ОтборыКомпановщика = КомпоновщикНастроек.Настройки.Отбор.Элементы;
    Для Каждого Стр Из ОтборыКомпановщика Цикл
        Если Стр.ЛевоеЗначение = ПолеОтбора Тогда
            Отбор = Стр;
        КонецЕсли;
    КонецЦикла;
    Если Отбор = Неопределено Тогда
        Отбор               = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        Отбор.ЛевоеЗначение = ПолеОтбора;
    КонецЕсли;
    Если Значение <> Неопределено Тогда
        Отбор.ВидСравнения   = ВидОтбора;
        Отбор.Использование  = Истина;
        Отбор.ПравоеЗначение = Значение;
    Иначе
        Отбор.Использование = Ложь;
    КонецЕсли;
КонецПроцедуры
//
   Лодырь
 
7 - 05.12.18 - 07:15
А вы пробовали работать не комментируя все свои действия на форуме?
   TolstiyBeremenniy
 
8 - 05.12.18 - 07:24
(7) Я же обрисовал вопрос, и пытаюсь получить на него ответ. Нашел пример. но как делать группы, с несколькими элементами не понимаю пока. Вот может у кого есть пример под рукой, покажет и все. для этого и спрашиваю.
   catena
 
9 - 05.12.18 - 08:33
(8)Ты уже добавлял группу в теме (1), там все есть.
   TolstiyBeremenniy
 
10 - 05.12.18 - 08:54
(9)  Сейчас сижу вот на этом!!!! Во первых отбор добавляется, но не отображается правое значение.
если на нем нажать то появляется. Как бы мигает.
Но вот "Договор.Наименование" идет ни как отбор
компоновки данных, а как строка что ли. И ничего
н работает, что я не так сделал?


Процедура УстановитьОтборСКД2()
    //

    ГруппаОтбора                                                              = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы                                                    = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;        
    //

    ЭлементОтбораПользовательский                                          = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбораПользовательский.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор();
    ЭлементОтбораПользовательский.ВидСравнения                              = ВидСравненияКомпоновкиДанных.Содержит;
    ЭлементОтбораПользовательский.ЛевоеЗначение                          = "Договор.Наименование";
    ЭлементОтбораПользовательский.ПравоеЗначение                          = "ЕП";
    ЭлементОтбораПользовательский.Использование                          = Истина;    
    //
 
 Рекламное место пустует
   catena
 
11 - 05.12.18 - 09:06
ЭлементОтбораПользовательский.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
   TolstiyBeremenniy
 
12 - 05.12.18 - 09:16
В начале было вот так вот!!!!!


ПользовательскийОтбор = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(
    КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки);
        
//Добавляем в пользовательский отбор группу

ГруппаОтбора = ПользовательскийОтбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;    



Но там ругалось

ОтчетПоЗакупочнойДеятельности.Форма.ФормаОтчета.Форма(482)}: Значение не является значением объектного типа (Элементы)
    ГруппаОтбора           = ПользовательскийОтбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));

Не понятно что за ошибка. 
Я смотрел по наличию реквизитов через точку.
Вроде все есть.

(11) А как это установится что "Наименование" это договора????
   TolstiyBeremenniy
 
13 - 05.12.18 - 09:20
(11) Это наименование вышло в отборе с красным крестиком.
   TolstiyBeremenniy
 
14 - 05.12.18 - 09:21
(11) Спасибо! Нужно было так, -

    ЭлементОтбораПользовательский.ЛевоеЗначение                          = Новый ПолеКомпоновкиДанных("Договор.Наименование");
   catena
 
15 - 05.12.18 - 09:46
(14)Пора бы уже запомнить, что решения из интырнетов надо не копипастить, а понять и адаптировать. Готовое решение будет платно.

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