![]() |
![]() |
![]() |
|
СКД поле-условие для корректной расшифровки | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
12.12.17
✎
12:04
|
Всем здрасте. Гипотетический пример: запрос в СКД получает строки
ИзмерениеА ИзмерениеБ ЗначениеРесурса А_1 Б_1 2 А_1 Б_2 3 А_2 Б_1 5 В СКД запрещено устанавливать отбор по ИзмерениеБ (таково ТЗ: юзер не может фильтровать при ПЕРВОНАЧАЛЬНОМ формировании отчета по измерению ИзмерениеБ). В настройках - группировка по ИзмерениеБ. Формируем отчет: ИзмерениеБ ЗначениеРесурса Б_1 7 Б_2 3 Теперь если расшифровать вторую строку по ИзмерениеА, то будет ИзмерениеА ЗначениеРесурса А_1 5 А_2 5 Хотя нам нужно ИзмерениеА ЗначениеРесурса А_1 3 Оно и понятно, ведь отбор по ИзмерениеБ при расшифровке не сработает. Как это решается? Спасибо за любое мнение. |
|||
1
DmitrO
12.12.17
✎
12:16
|
Почему отбор при расшифровке не сработает?
У меня срабатывает. |
|||
2
PiotrLoginov
12.12.17
✎
12:25
|
Ну вот реальный, пусть и тестовый пример, который здесь описан. Не срабатывает. И не сработает - отбор по ИзмерениеБ же отключен.
|
|||
3
DmitrO
12.12.17
✎
12:32
|
(2)так расшифровка же идет по строке, полученной группировкой по измерению Б, у строки есть значение измерения Б, по которому и встает отбор.
|
|||
4
DmitrO
12.12.17
✎
12:37
|
Я вот такой вопрос задал: как вы сделали такой отчет, что у вас не срабатывает? Или может расшифровку как-то сами делаете? :)
|
|||
5
PiotrLoginov
12.12.17
✎
12:37
|
(3) Если бы при расшифровке вставал отбор по ИзмерениеБ = Б_2, то в расшифровке было бы
ИзмерениеА ЗначениеРесурса А_1 3 Собственно, описанная схема в xml: https://www.dropbox.com/s/tbl40ap0x1tr1cd/СхемаВXml.xml?dl=0 |
|||
6
PiotrLoginov
12.12.17
✎
12:38
|
Схема простейшая. С тестовыми данными. Подробно описана в (0)
|
|||
7
DmitrO
12.12.17
✎
12:44
|
В каждый из трех объединенных запросов добавьте такое предложение:
{где ИзмерениеБ} |
|||
8
PiotrLoginov
12.12.17
✎
12:47
|
(7) Тогда юзер при первоначальном формировании отчета среди полей, по которым можно устанавливать отбор, получит и поле "ИзмерениеБ".
А это запрещено ТЗ. Поле, по которому потом нужна расшифровка, не должно быть в списке полей для отбора. |
|||
9
PiotrLoginov
12.12.17
✎
12:50
|
Это на корню убит все универсальные механизмы БСП по отображению настроек отчетов на СКД. И вместо готового механизма установки отборов, куда подтягивается список всех полей, по которым разрешен отбор, приходится для каждого такого отчета рисовать отдельный список из всех возможных имен отборов минус то, которое запрещено. Как некая жертва ради того, чтобы потом по этому полю корректно работала расшифровка.
|
|||
10
PiotrLoginov
12.12.17
✎
12:50
|
*убит = губит
|
|||
11
DmitrO
12.12.17
✎
12:54
|
Чтобы расшифровка работала как надо, необходимо чтобы поле было доступно для отбора.
:) На самом деле это звучит даже так: чтобы отбор по полю был возможен, поле должно быть доступно для отбора. Чтобы оно было не доступно пользователю тогда надо решать формой настроек, или проверкой и формированием исключения перед перед формированием отчета. |
|||
12
PiotrLoginov
12.12.17
✎
13:02
|
(11) >>надо решать формой настроек
ну вот, о чем я и пишу. после долгих лет мы пришли к симпатичной универсальной форме отчета в БСП... и поняли, что это опять не то. Хотя я вот думаю: а может, зная об этом косяке доработать эту форму, элементарно добавив в реквизиты формы некий массив полей отбора, запрещенных для использования - и вставлять ее во все типовые конфы... Хотя это уже называется "костыль". |
|||
13
PiotrLoginov
12.12.17
✎
13:03
|
Но спасибо. Мне как-то полегчало.
|
|||
14
DmitrO
12.12.17
✎
13:13
|
Ну, после долгих лет в СКД много чего еще криво до сих пор.
То что вам надо (как получается): доступность поля отбора разного вида: программная и пользовательская. А также вот например следующее. - в выбранные поля макета компонуются все поля использованные в условиях любого условного оформления, даже если само оформляемое поле не выбрано; - зачем-то включается безопасный режим при вызове функций в вычисляемых выражениях; - на уровне платформы нет методов простого анализа настроек: типа есть/найти отбор по полю Поле1, есть/найти группировку по Полю1 и т.п. |
|||
15
PiotrLoginov
12.12.17
✎
13:15
|
(11) >>или проверкой и формированием исключения перед формированием отчета
заказчики что-то так болезненно реагируют на любые сообщения в интерфейсе :) тем более, если программа пишет о допущенной критической ошибке и отказе в выполнении определенного действия. Я с некоторых пор стараюсь держать внешний лоск при любом раскладе. Сообщения - только как всплывающие уведомления где-то в стороне, надписи - в приглушенных тонах и в "спокойных" формулировках... |
|||
16
PiotrLoginov
12.12.17
✎
13:17
|
(14) Точно! Режим отображения подключу. Хорошая мысль. Простая, но я об этом не подумал.
|
|||
17
DmitrO
12.12.17
✎
13:27
|
А если в схеме снять в настройках поля флажок что поле доступно для отбора, расшифровка тоже не работает? Надо проверить, не очевидно так-то.
|
|||
18
PiotrLoginov
12.12.17
✎
13:30
|
Т.е. перед стандартной расшифровкой снимать галку программно, а потом опять возвращать на случай, если юзер полезет формировать сам отчет с новыми отборами? Да, надо будет попробовать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |