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

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

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


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

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

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



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


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



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

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

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

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

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