Имя: Пароль:
1C
1С v8
СКД Ограничение или удаления доступных полей при выборе поля при расшифровке
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
Сделать их вычисляемыми.
Основная теорема систематики: Новые системы плодят новые проблемы.