|
СКД - переопределение поля для расшифровки | ☑ | ||
---|---|---|---|---|
0
Stolz
04.04.14
✎
10:51
|
Доброго всем времени суток!
Возникла проблема с переопределением поля для расшифровки. Попробую описать её на следующем примере. Сразу замечу, что пример сильно упрощён, чтобы яснее вычленить суть дела. Допустим, есть программно формируемая схема компоновки данных с запросом примерно такого вида: ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка, Наименование, Комментарий ИЗ Справочник.Контрагенты В табличном поле результата выводятся колонки Наименование и Комментарий, колонка Ссылка выводиться не должна. Однако при двойном щелчке на строке табличного поля должна открываться форма соответствующего элемента справочника Контрагенты. Поскольку схема компоновки данных формируется программно, и состав полей запроса заранее неизвестен, нет возможности нарисовать для неё макет поля, чтобы в нём задать выражение для расшифровки. Возможно, в процедуре ОбработкаРасшифровки как-то можно добраться до поля Ссылка, но, судя по итогам изучения форумов, это вряд ли возможно. Как быть? |
|||
1
Cube
04.04.14
✎
10:56
|
(0) Как быть?
Разрешаю удалить поле "Наименование" и выводить вместо него поле "Ссылка", у которого выражение представления типа этого: "Ссылка.Наименование". |
|||
2
Stolz
04.04.14
✎
11:18
|
(1)
Я уже упоминал, что приведён упрощённый пример лишь для пояснения сути вопроса. В реальности там нет поля Наименование, да и запрос выполняется вовсе не к справочнику контрагентов. А вот открывать объект по ссылке всё же необходимо. |
|||
3
Defender aka LINN
04.04.14
✎
11:23
|
(2) Если уж ты пишешь отвлеченными примерами - будь, ять, готов этот отвлеченный пример преобразовать обратно в свою задачу. В (1) все написано, что тебе поможет ее сделать.
|
|||
4
Cube
04.04.14
✎
11:23
|
(2) А что там есть?
Можно, конечно, и дальше обсуждать сферических коней в вакууме, но я бы предпочел обсуждать реальные задачи... |
|||
5
Stolz
04.04.14
✎
11:51
|
(3) В (1) написано о выводе представления в табличное поле. О том, как это сделать, вопрос не задавался. Вопрос был о переопределении поля для расшифровки. На это ответ не был дан.
|
|||
6
Defender aka LINN
04.04.14
✎
11:54
|
(5) А ты тугой, как я погляжу...
|
|||
7
Stolz
04.04.14
✎
11:56
|
(2) Хорошо, вот реальная задача. Запрос выглядит так:
ВЫБРАТЬ Ссылка, Этап1, Этап2, Этап3 ИЗ &ТаблицаЭтапов КАК ТаблицаЭтапов Количество полей ЭтапX может варьироваться в зависимости от выбранных пользователем настроек. Требуется при двойном щелчке на строке табличного поля открывать форму объекта, на который указывает ссылка. Как можно видеть, никаких коней тут не наблюдается. |
|||
8
Stolz
04.04.14
✎
11:57
|
(6) То есть, по существу тебе ответить нечего? Так бы и сказал с самого начала.
|
|||
9
Stolz
04.04.14
✎
12:03
|
(7) -> (4)
|
|||
10
Defender aka LINN
04.04.14
✎
12:03
|
(8) По существу тебе ответили с самого начала в (1).
(7) Вычисляемые поля + (1). Свободен. |
|||
11
Stolz
04.04.14
✎
12:09
|
(10) Ты вопрос читал?
Спрашивалось, как переопределить расшифровку. При чём тут вычисляемые поля? |
|||
12
GenV
04.04.14
✎
12:16
|
(11) В обработке расшифровки здесь нет? :
ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля() |
|||
13
Cube
04.04.14
✎
12:19
|
(7) Параметр расшифровки указать для поля нельзя.
Поэтому вижу два варианта: 1. Рисовать свой макет и передавать параметр расшифровки в него (не знаю, получится или нет) 2. Этап 1 выводить как сказано в (1), а при расшифровке всех последующих этапов искать этап 1 в коде (в ДанныхРасшифровки) и открывать... Все варианты так себе... |
|||
14
Cube
04.04.14
✎
12:20
|
Я бы вывел ещё одну колонку с ссылкой...
|
|||
15
Defender aka LINN
04.04.14
✎
12:24
|
(11) А ты ответ читал? Тебе какая нахрен разница, если выглядит одинаково?
|
|||
16
barrgand
04.04.14
✎
12:27
|
(11) Решение в (10), лучше подумай, а не распыляйся напрасно. Готового решения тут тебе не дадут, а на правильную мысль уже давно навели.
|
|||
17
Stolz
04.04.14
✎
12:32
|
(15) Ох, как с тобою тяжко-то. Читай вопрос: там сказано, что поле ссылки выводиться не должно и что пример упрощённый. Читай ответы ниже, там упомянуто, что поля в реальности другие. Что с чем должно «выглядеть одинаково»? И да, монитор себе протри, а то заплевал поди весь, гневный ты наш.
|
|||
18
Stolz
04.04.14
✎
12:34
|
(14) Спасибо за ответы в (13), попробую и отпишусь по результатам. Но ссылку выводить, увы, нельзя. :-(
|
|||
19
Stolz
04.04.14
✎
12:35
|
(16) Я бы и рад последовать твоему совету, да только не пояснишь ли, как вычисляемые поля связаны с расшифровкой?
|
|||
20
Cube
04.04.14
✎
12:42
|
(18) Ты выведи поле Ссылка, а в выражении представления напиши "Подробнее" или "Открыть этапы". Это будет "типа" кнопка для открытия...
|
|||
21
Stolz
04.04.14
✎
12:49
|
(20) Улыбнуло. :-) (я без иронии). Конечно, на самый крайний случай можно сделать и так, но хотелось бы остаться в пределах стандартного оформления выводимых данных. А то пользователи - они ведь и испугаться могут. :-)
|
|||
22
Cube
04.04.14
✎
13:03
|
(13) Мне кажется, через макеты должно получиться.
|
|||
23
Stolz
04.04.14
✎
13:56
|
(22) Ты прав, в общем случае это делается через макеты, как, например, и написано у Хрусталёвой на странице 211. Вот только в том-то и загвоздка, что нарисовать макет здесь нельзя. В макете, сделанном в конструкторе, можно определить конечное число полей (ячеек), к каковым и привязать выводимые поля. Тут же число выводимых этапов может варьироваться до некоего количества, заранее неизвестного. Так что предварительно изготовленный макет не поможет.
|
|||
24
Cube
04.04.14
✎
13:57
|
(23) Да всё должно получиться. Почитай ищо))
|
|||
25
Stolz
04.04.14
✎
14:11
|
(24) Ну, бесспорно, литература - штука полезная. Но, увы, такая ситуация там не описана, уж поверь, иначе я бы вопрос не задавал. К сожалению, второй вариант из (13) тоже не годится: там предлагается привязка к конкретному полю (Этап1), а пользователь в настройках СКД может его попросту исключить, и опереться будет не на что. Ладно, «будем подождать» (почти (С)), авось, ещё у кого-либо родятся идеи.
|
|||
26
Stolz
07.04.14
✎
09:39
|
(12) Нет, там только поле, по которому в данный момент выполняется двойной щелчок мышью. То есть, при двойном щелчке на поле Этап1 - это поле Этап1, при двойном щелчке на поле Этап2 - поле Этап2 и так далее. Самое досадное в том, что после двойного щелчка выдаётся контекстное меню, в котором при выборе пункта Расшифровать открывается диалоговое окно выбора поля, где в числе доступных полей выводится Ссылка. Впрочем, если в окне выбрать это поле, открывается новое окно того же отчёта, а не объект по ссылке. Похоже, что до поля ссылка как-то можно достучаться, да вот только как?
|
|||
27
Cube
07.04.14
✎
12:13
|
Чем макет не угодил? Там можно использовать любое поле для расшифровки же...
|
|||
28
ам794123
07.04.14
✎
12:29
|
(26) Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля(); Поле = Поля.Найти(Реквизит); Если Поле = Неопределено Тогда Возврат Неопределено Иначе Возврат Поле.Значение; КонецЕсли; |
|||
29
Stolz
07.04.14
✎
12:44
|
(27) См. в (23): количество полей заранее неизвестно.
|
|||
30
Stolz
07.04.14
✎
12:49
|
(28) Да в том-то и дело, что в коллекции, возвращаемом методом ПолучитьПоля(), нет поля Ссылка. Об этом-то и говорится в (26).
|
|||
31
Stolz
07.04.14
✎
12:50
|
(30): возвращаемом -> возвращаемой
|
|||
32
Cube
07.04.14
✎
12:51
|
(29) И что? Не вижу проблемы...
|
|||
33
ам794123
07.04.14
✎
12:55
|
(30) Для коллекции существует метод Добавить. В чем проблема?
|
|||
34
Stolz
07.04.14
✎
12:55
|
(32) В нарисованном макете будет фиксированное количество ячеек. Например, ячейка для поля Этап1, ячейка для поля Этап2 и т.д. А в запросе этапов может быть сколько угодно. Можно, конечно, нарисовать ячейки от Этап1 где-то до Этап1000, так как вряд ли их будет больше. Но это как-то некомильфо, разве что на крайний случай.
|
|||
35
Stolz
07.04.14
✎
12:56
|
(30) А вот это уже любопытно, спасибо. Если это коллекция не фиксированная, должно получиться, попробую.
|
|||
36
Stolz
07.04.14
✎
12:57
|
(35) -> (33)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |