|
СКД Ограничение или удаления доступных полей при выборе поля при расшифровке | ☑ | ||
---|---|---|---|---|
0
korchak
24.01.17
✎
20:13
|
Приветствую всех!
Подскажите, как можно собственно сделать сабж. Необходимо ограничить вывод (показ) или удалить, на худой конец, некоторые доступные поля, которые есть в диалоге выбора поля при расшифровке ячейки? |
|||
1
mistеr
24.01.17
✎
20:14
|
(0) Отключай стандартную расшифровку, выводи свой диалог.
|
|||
2
korchak
24.01.17
✎
20:17
|
Может у кого-то хоть какой-то пример РезультатОбработкаРасшифровки есть для таких действий, чтоб не выдумывать "велосипед"? Я уже подгоню его под свои потребности. Спасибо!
|
|||
3
mistеr
24.01.17
✎
20:24
|
(2) Держи:
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; // получим доступные значения полей ЭлементРасшифровки = ДанныеРасшифровки.Элементы[Число(Расшифровка)]; //ВывестиЭлементРасшифровки(ЭлементРасшифровки, ""); ЗначенияПолей = Новый Структура; ЗаполнитьЗначенияПолейРасшифровки(ЭлементРасшифровки, ЗначенияПолей); //Для каждого Поле Из ЗначенияПолей Цикл // Сообщить("Поле: " + Поле.Ключ + " = """ + Поле.Значение + """"); //КонецЦикла; // если значений достаточно, сразу выполняем расшифровку, без контекстного меню Если ЗначенияПолей.Свойство("Работник") И ЗначенияПолей.Свойство("ДатаКалендаря") Тогда РасшифроватьОтчет(ЗначенияПолей.Работник, ЗначенияПолей.ДатаКалендаря); КонецЕсли; КонецПроцедуры Процедура ЗаполнитьЗначенияПолейРасшифровки(ЭлементРасшифровки, ЗначенияПолей) Перем Элемент; //Сообщить(ТипЗнч(ЭлементРасшифровки) + ", " + Число(ЭлементРасшифровки.Идентификатор)); Если ТипЗнч(ЭлементРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда Для каждого Элемент Из ЭлементРасшифровки.ПолучитьПоля() Цикл Если НЕ Элемент.Иерархия Тогда ЗначенияПолей.Вставить(Элемент.Поле, Элемент.Значение); КонецЕсли; КонецЦикла; КонецЕсли; Родители = ЭлементРасшифровки.ПолучитьРодителей(); Для каждого Элемент Из Родители Цикл ЗаполнитьЗначенияПолейРасшифровки(Элемент, ЗначенияПолей); КонецЦикла; КонецПроцедуры // ЗаполнитьЗначенияПолейРасшифровки() |
|||
4
korchak
24.01.17
✎
20:25
|
(3) премного благодарен, пошел копать!
|
|||
5
korchak
24.01.17
✎
22:37
|
Что-то пошло не так...
В моем случае это отчет с запросом по виртуальной таблице ВзаиморасчетыСКонтрагентамиОстатки Ваш код проходит по значениям группировок, а мне нужно пройтись по доступным полям расшифровки, вызываемой по команде "Расшифровать...", вызываемой или двойным кликом по ячейке или через контекстное меню. В открывшейся форме диалога "Выбор поля" необходимо скрыть некоторые поля. В данном случае присутствующие поля - ДоговорКонтрагента, Сделка, Пользовательские поля. Так вот, необходимо скрыть (удалить) в этом диалоге все поля, кроме Сделка. Кстати, в вашем коде заменил Структуру на Соответствие, так как при добавлении в структуру ключа для пользовательского поля выдавал ошибку "Задано неправильное имя атрибута структуры". |
|||
6
korchak
24.01.17
✎
23:28
|
Ап
Коллеги помогайте пожайлуйста! |
|||
7
mistеr
24.01.17
✎
23:55
|
(5) Если расшифровка только по сделке, зачем вообще диалог? Расшифровывай и все.
|
|||
8
korchak
25.01.17
✎
00:07
|
(7) Это для примера было описано. А если необходимо, к примеру, оставить два поля: Сделка и ДоговорКонтрагента для последующего интерактивного выбора?
|
|||
9
korchak
25.01.17
✎
00:09
|
Тут сам принцип важен, как это сделать программно...
|
|||
10
mistеr
25.01.17
✎
09:05
|
(8) В схеме для поля ставишь запрет использования в группировках, и оно не появляется в расшифровке.
|
|||
11
korchak
25.01.17
✎
11:08
|
(10) Да, сработало, только нужно было поставить ограничение и для реквизита, и для поля сделать. Спасибо!
Для полей запроса и вычисляемых полей есть возможность интерактивно ограничить группировку, но для пользовательских полей как сделать ограничение? Как ограничить группировку по пользовательским полям? |
|||
12
aleks_default
25.01.17
✎
11:55
|
Сделать их вычисляемыми.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |