Имя: Пароль:
1C
1С v8
СКД. Как убрать колонку из списка доступных полей выбора на закладке "Выбранные поля".
0 sanchesaist
 
07.04.18
14:53
Есть простой отчет на СКД.
Запросом выбираю 3 поля. Поле "Наименование" мне нужно не показывать пользователю и не давать это поле выбирать.

Делаю так:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    УбратьПолеНаСервере();    
КонецПроцедуры

&НаСервере
Процедура УбратьПолеНаСервере()
    
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    
    ПолеНаименование = ОтчетОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Наименование");
    
    ПолеНаименование.ОграничениеИспользования.Поле        = Истина;
    ПолеНаименование.ОграничениеИспользования.Группировка = Истина;
    ПолеНаименование.ОграничениеИспользования.Порядок     = Истина;
    ПолеНаименование.ОграничениеИспользования.Условие     = Истина;
            
    ОтчетОбъект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ОтчетОбъект.СхемаКомпоновкиДанных));
    
    ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет");
    
КонецПроцедуры

Прохожу отладчиком. Поля "Наименование" нет в списке доступных полей для выбора Компоновщика настроек. В схеме ограничения у этого поля также проставлены.
В форме отчета захожу "Изменить вариант" и это поле есть в настройках.
В процедуре ПриКомпоновкеРезультата это поле тоже есть в списке доступных для выбора.

Помогите, пожалуйста!!! Что делаю не так?
1 Mankubus
 
07.04.18
16:07
Нужно отключить автозаполнение в Скд и использовать фигурные скобки. А свой код выкинь не позорься
2 Cyberhawk
 
07.04.18
16:24
"нужно не показывать пользователю и не давать это поле выбирать" // Зачем оно в запросе тогда?
3 sanchesaist
 
07.04.18
17:04
Суть в том, что в отчете надо полностью отключать одну колонку в зависимости от определенных условий.
4 Cyberhawk
 
07.04.18
17:05
Так управляй плоьзовательской доступностью поля СКД
5 sanchesaist
 
07.04.18
17:20
(4) А как управлять пользовательской доступностью? Объясните, пожалуйста, начинающему.
6 Cyberhawk
 
07.04.18
17:30
Либо в полях СКД (первая вкладка) флажок ограничения "Поле" (недоступно для выбора будет), либо в настройках СКД в выбранных полях ПКМ - Свойства ... - недоступно для редактирования.
7 sanchesaist
 
07.04.18
17:57
(6) Ставил в настройках СКД в выбранных полях ПКМ - Свойства ... - недоступно для редактирования. Все равно поле есть в списке доступных для выбора полей. Флажок ограничения "Поле" - самое то, то почему-то не получается устанавливать его программно. Т.е. поставить то можно, но если из формы открыть настройки, то поле все равно есть в списке доступных.
В отчете есть два поля, и мне надо открывать форму отчета, в котором одно поле полностью отключено. А какое поле будет отключено определяется глобальными настройками конфигурации.
8 ssh2006
 
07.04.18
18:05
(7)   ПолеНаименование.ОграничениеИспользования.Поле        = Истина;
    ПолеНаименование.ОграничениеИспользования.Группировка = Истина;
    ПолеНаименование.ОграничениеИспользования.Порядок     = Истина;
    ПолеНаименование.ОграничениеИспользования.Условие     = Истина;

Вот это можно написать в модуле объекта, будет работать
9 sanchesaist
 
07.04.18
18:29
(8) Да, если поместить этот код в процедуру "ПриКомпоновкеРезультата", то в отчете это поле выходить не будет. Но поле все равно есть в доступных полях, и его можно выбрать. Я пробовал этот код вызывать в процедуре ПриСозданииНаСервере из модуля посредством экспортной процедуры, но это не дало эффекта.
10 sanchesaist
 
07.04.18
18:45
(1) А как использовать фигурные скобки, чтобы программно отключить вывод колонки?
11 ssh2006
 
07.04.18
18:45
(9) этот код надо помещать прямо в модуль объекта, а не в какую либо процедуру
12 youalex
 
07.04.18
18:56
Убрать схему из основных - по идее, тоже должно сработать.
13 sanchesaist
 
07.04.18
19:08
(11) Спасибо, ssh2006. Ваш совет помог! Спасибо всем участникам за помощь!!!
14 youalex
 
07.04.18
19:09
(12) нет, в (11), похоже, единственный вариант.
15 Mankubus
 
08.04.18
05:41
(10) никак. Нужно было сразу полную задачу описывать, а ты с конца начал :)
Закон Брукера: Даже маленькая практика стоит большой теории.