|
Подскажите почему не срабатывает программный отбор в СКД? | ☑ | ||
---|---|---|---|---|
0
vfrcbv
10.09.19
✎
13:47
|
Добрый день!
В отчета на СКД добавил новый реквизит "ОтветственныйМенеджер", вывел его на форму. В событие ПриИзменение прописал код: &НаСервере Процедура ОтветственныйМенеджерПриИзмененииНаСервере() ПолеОтбора = Новый ПолеКомпоновкиДанных("ОтветственныйМенеджер"); // найдем отбор ЭлементОтбора = Неопределено; Для Каждого Отбор Из Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если Отбор.ЛевоеЗначение = ПолеОтбора Тогда ЭлементОтбора = Отбор; Прервать КонецЕсли; КонецЦикла; // если не нашли, то создадим Если ЭлементОтбора = Неопределено Тогда ЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = ПолеОтбора; КонецЕсли; Если ЗначениеЗаполнено(Отчет.ОтветственныйМенеджер) Тогда ЭлементОтбора.Использование = Истина; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Отчет.ОтветственныйМенеджер; Иначе ЭлементОтбора.Использование = Ложь; КонецЕсли; КонецПроцедуры В отладчике вижу, что все значения и типы переменных какие нужно, но отбор в отчете не происходит. Если в вручную в пользовательком интерфейсе по кнопке "Показать настройки" - Отбор. Задать Этот отбор, то все работает. Подскажите, что не так? |
|||
1
toypaul
гуру
10.09.19
✎
14:13
|
не понятно зачем это делать "&НаСервере". вполне себе можно сделать на клиенте.
|
|||
2
toypaul
гуру
10.09.19
✎
14:14
|
ну и конечно же не понятно для чего добавлять поле, когда все тоже самое можно сделать пользовательскими настройками
|
|||
3
toypaul
гуру
10.09.19
✎
14:17
|
почему не работает = это чертова магия СКД. чтобы расколдовать ее нужно миллион картинок выложить на форум. тут форум на дает этого делать. поэтому вопросы по СКД решаются плохо.
|
|||
4
toypaul
гуру
10.09.19
✎
14:19
|
кстати если у тебя конфа на БСП воспользуйся хотя бы типовыми методами по установке отбора. что-то там из ОбщегоНазначенияКлиентСервер по-моему
|
|||
5
Fragster
гуру
10.09.19
✎
14:19
|
в УФ это пользовательские настройки, а не просто настройки
|
|||
6
DrZombi
гуру
10.09.19
✎
14:29
|
(0) Ты его не помещаешь в компоновщик :)
|
|||
7
Tonik992
10.09.19
✎
14:30
|
Есть еще такая вероятность, что отбор по этому полю выведен в пользовательские настройки.
Из-за этого пользовательские настройки имеют приоритет над обычными. |
|||
8
vfrcbv
10.09.19
✎
14:36
|
(2) Отчет на УФ. имеет произвольную форму.
В том то дело, что какая-то магия. В отладчике при установки отбора в пользователем и программной установке, настройки КомпоновщикНастроек идентичны, но в програмном отбор не срабатывает. https://s8.hostingkartinok.com/uploads/images/2019/09/2b5d086516ec2922aa257a3c2e41d7e1.png |
|||
9
vfrcbv
10.09.19
✎
14:38
|
(6) судя по скрину выше, все в компоновщике помещается.
|
|||
10
vfrcbv
10.09.19
✎
14:38
|
(7) это отпадает. пользовательский отбор убираю, для чистоты эксперимента
|
|||
11
Tonik992
10.09.19
✎
14:38
|
(8)
Зайди в отладчитке "ПриКомпоновкеРезультата" Посмотри, что там стоит. Сравни пользовательские настройки и обычными настройками. Если пересекаются, значит пользовательские имеют приоритет. Если в ПриКомпоновкеРезультата не будет твоих новых отборов, значит таким способом(на форме) как ты делаешь нельзя помещать в отбором. |
|||
12
Tonik992
10.09.19
✎
14:40
|
Ты смотришь в отладчике на форме. Это неправильно.
Смотри в отладчике ПриКомпоновке. Вызови там процедуру КомпоновщикНастроек.ПолучитьНастройки() и посмотри, какая итоговая настройка применяется для компоновки |
|||
13
Tonik992
10.09.19
✎
14:55
|
(8) Так у васна картинке идентификатор пользовательской настройки заполнен. А врете, что пользовательских настроек нет. -)
"Если идентификатор не пустой, объект включается в состав пользовательских настроек." (c) |
|||
14
vfrcbv
10.09.19
✎
15:11
|
Всем спасибо за помощь!
Нашел проблему, при программном отборе нужно было добавил строчку: ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ; и тогда все заработало. по умолчанию если не указывать эту строчку, РежимОтображения выставляется обычный и отбор не работает. незнаю с чем это связано... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |