Имя: Пароль:
1C
1С v8
СКД: запретить пользователю менять программно установленный отбор
0 Zakakvo
 
19.06.14
10:32
Доброго днищща, уважаемые.

СКД отчет на обычных формах. На форме отчета расположено табличное поле с настройками, конкретно - с отборами. Пытаюсь ограничить доступность одного из полей отбора следующим способом:

Для каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
                Если ТипЗнч(ЭлементОтбора.ПравоеЗначение) = Тип("СправочникСсылка.Пользователи") Тогда
                    ЭлементОтбора.ПравоеЗначение = ДополнительныеПараметры.Ответственный;
                    ЭлементОтбора.Использование = Истина;
                    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
                КонецЕсли;
            КонецЦикла;

РежимОтображения устанавливается, но пользователю всё равно доступно редактирование поля. ЧЯДНТ?
1 zak555
 
19.06.14
10:33
а в УФ ?
2 Godofsin
 
19.06.14
10:33
"Доброго днищща" - в мемориз =)
3 zak555
 
19.06.14
10:35
(2) от слова дно
4 Godofsin
 
19.06.14
10:36
(3) угу )
5 Maxus43
 
19.06.14
10:37
(0) в самом СКД параментр сделай недоступным, тогда только программно можно будет
6 Defender aka LINN
 
19.06.14
10:38
(0) Запомни, Zakakvo - когда ты хочешь сделать отбор - делай параметр. Если видишь задание на отчет и понимаешь, что нужен параметр - делай отбор не медля. Хотя бы так ты будешь делать все правильно.
7 Zakakvo
 
19.06.14
10:39
(2) это УСО
8 Zakakvo
 
19.06.14
10:42
(5) совет дельный, но это не параметр, увы.
9 Godofsin
 
19.06.14
10:44
(8) Тебе и намекают сделать его параметром
10 Zakakvo
 
19.06.14
10:45
(6) я хочу чашку чаю с жасмином и спать 20 часов. Я понимаю разницу между параметрами и отбором, просто в данной ситуации нужен отбор - ну вот нужен.
Я, собственно, переделаю и форму и схему и отборы заменю параметрами, если уважаемый мне авторитетно объяснит, что запретить изменение отбора тупо нельзя.
11 Zakakvo
 
19.06.14
10:46
(9) намёк-то я понял...
12 Godofsin
 
19.06.14
10:49
(10) Ну тогда можешь поиграть с ТП.
13 Zakakvo
 
19.06.14
10:52
(12) отстал от жизни, попал под лошадь ;)
ТП - это что за зверь? (не считая известного луркоморского определения)
14 Kamas
 
19.06.14
10:53
(10) может не включать в пользовательские настройки этот отбор
15 Godofsin
 
19.06.14
10:53
(13) Табличное Поле жеж )))
16 Zakakvo
 
19.06.14
10:56
(14) исключить из пользовательских настроек? Не уверен, что это возможно, но попробую, спасибо :)
17 Godofsin
 
19.06.14
10:58
И все же не пойму. Почему элемент отбора "Ответственный" нильзя перенести в параметры?
18 Zakakvo
 
19.06.14
10:58
(15) страшное дело. Но мысль, да  :) Оставлю на сладкое, если всё прочее не поможет.
19 Kalambur
 
19.06.14
11:03
заПихать в Фиксированные настройки
20 Zakakvo
 
19.06.14
11:04
(17) мешает обычная фигня - удобство использования табличного поля на форме. Базовые параметры - которые параметры - границы, разделители учета и прочее лежит своими контролями на форме. Всё прочее, зависящее лишь от желания левой пятки постановщика задачи и меняющееся в зависимости от политической ситуации дважды на дню удобнее выполнять отборами, которые сами наполнят ТП (ггг) и не будут портить мне жизнь.
21 Kalambur
 
19.06.14
11:05
(20) ты такой загадочный, как краб
22 Enders
 
19.06.14
11:10
Используй ФиксированныеНастройки вместо настроек.
Есть минус: на форме не видно какой отбор стоит, и они могут выбрать любой другой, но, в любом случае, отчет сформируется по установленному тобой.

ЭлементОтбора = ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Местонахождение");
        ЭлементОтбора.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение =Склад.Подразделение;
        ЭлементОтбора.Использование=Истина;
        ЭлементОтбора.РежимОтображения=РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
23 Zakakvo
 
19.06.14
11:18
(22) (19) Да! Я всё понял, в первом приближении сработало, спасибо!
24 Zakakvo
 
19.06.14
15:15
На всякий случай, чтобы закруглить тему, отрывки кода из ПриКомпоновкеРезультата

    Если ЗначениеЗаполнено(ДополнительныеПараметры) Тогда
        Если ДополнительныеПараметры.РежимЗапуска <> Перечисления.Важность.Высокая Тогда
            ЭлементОтбора = ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МенеджерКлиента");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтбора.ПравоеЗначение = ДополнительныеПараметры.Ответственный;
            ЭлементОтбора.Использование = Истина;
            ЭлементОтбора.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы;
        КонецЕсли;
    КонецЕсли;

и если вы там же создаёте новый компоновщик макета, то не забудьте, фиксированные настройки сами в него не загрузятся.

    ВнешниеНаборыДанных = Новый Структура;
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
25 Kalambur
 
19.06.14
15:18
(24) бред в голове и сообщенгие ниочем
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший