В своей обычной форме получаем НастройкаУсловногоОформления из настоящего типизированного табличного поля. Меняем разрешения, не удаляя сами данные.
Где и как запускать
Полный модуль новой обычной формы учебной внешней обработки, толстый клиент 8.5.1.1343.
Подготовка
Отдельная собственная конфигурация УчебнаяКонфигурацияСинтаксиса, платформа 8.5.1.1343, толстый клиент с обычными формами. Не управляемая форма и не мобильный клиент.
Создайте отдельную учебную внешнюю обработку и её обычную основную форму. В реквизитах формы добавьте УчебныеДанные с типом УсловноеОформление; это реквизит формы, не реквизит документа.
В редакторе формы добавьте ТабличноеПоле с именем ТаблицаНастроек. Свойство Данные свяжите с УчебныеДанные. Расширение определяется типом этих данных, а не ручным созданием класса расширения.
Добавьте обычную кнопку УчебнаяКоманда, назначьте действие УчебнаяКоманда. Событие формы ПриОткрытии свяжите с процедурой ПриОткрытии. Вставьте полный модуль на уровне формы.
Откройте форму и до нажатия кнопки проверьте доступность Книга и Ручка. Нажатие учебной кнопки показывает операции коллекции разрешений и затем очищает только эти разрешения.
Правила доступности интерфейса не являются правами на данные, RLS или запретом программного изменения. Код не записывает базу, не читает рабочие каталоги и не меняет чужие формы.
Перем ИсходноеКоличество;
Процедура ПриОткрытии()
УчебныеДанные = Новый УсловноеОформление;
УчебныеДанные.Добавить("Книга", "Правило собственной книги");
УчебныеДанные.Добавить("Ручка", "Правило собственной ручки");
ИсходноеКоличество = 0;
Для Каждого СобственныйЭлемент Из УчебныеДанные Цикл
ИсходноеКоличество = ИсходноеКоличество + 1;
КонецЦикла;
Поле = ЭтаФорма.ЭлементыФормы.ТаблицаНастроек;
Управление = Поле.НастройкаУсловногоОформления;
Управление.Очистить();
Управление.Добавить("Книга", Ложь);
Управление.Добавить("Ручка", Истина);
Сообщить("До кнопки: Книга недоступно для интерактивного изменения, Ручка доступно");
КонецПроцедуры
Процедура УчебнаяКоманда(Кнопка)
Поле = ЭтаФорма.ЭлементыФормы.ТаблицаНастроек;
Управление = Поле.НастройкаУсловногоОформления;
Первое = Управление.Найти("Книга");
Второе = Управление.Найти("Ручка");
Если Первое = Неопределено Или Второе = Неопределено Тогда
ВызватьИсключение "Откройте свою форму заново: собственные разрешения уже очищены";
КонецЕсли;
Сообщить(Управление.Количество() = 2);
Сообщить(Первое.Имя = "Книга");
Сообщить(НЕ Первое.Доступность);
Сообщить(Второе.Доступность);
Сообщить(Управление.Индекс(Второе) = 1);
Сообщить(Управление.Получить(0) = Первое);
Сообщить(Управление.Найти("НетТакойУчебнойНастройки") = Неопределено);
Первое.Доступность = Истина;
Сообщить(Первое.Доступность);
Управление.Удалить(Второе);
Сообщить(Управление.Количество() = 1);
Управление.Очистить();
Сообщить(Управление.Количество() = 0);
ТекущееКоличество = 0;
Для Каждого СобственныйЭлемент Из УчебныеДанные Цикл
ТекущееКоличество = ТекущееКоличество + 1;
КонецЦикла;
Сообщить(ТекущееКоличество = ИсходноеКоличество);
Сообщить("Очистили только коллекцию разрешений, собственные исходные настройки сохранились");
КонецПроцедурыРазбор по шагам
Создать собственные данные нужного типа и связать их с обычным табличным полем через свойство Данные в редакторе формы.
Получить настоящий объект управления из расширения поля: у этого класса нет конструктора. Добавить своё запрещённое и разрешённое имя.
После ручной проверки интерфейса нажать кнопку. Найти свои элементы по именам, проверить позиции и включить доступность первого.
Удалить второй элемент разрешения, затем очистить только коллекцию разрешений. Сверить количество исходных настроек, а не принимать Очистить за удаление данных.
Повторный запуск требует заново открыть только свою форму: кнопка уже очистила созданные правила доступности.
Как проверить результат
Одиннадцать проверок коллекции разрешений и сохранения исходных настроек дают Истина.
До кнопки проверьте недоступность первого и доступность второго собственного элемента в реальном обычном поле. После кнопки ограничения очищены; исходные данные не удалены.
Ожидаемый результат
Полный подключённый к обычному редактору пример доступности с собственной типизированной формой и сохранением исходных настроек.
На что обратить внимание
Класс управления и класс исходных данных разные. У элемента управления Имя только читается, Доступность изменяется.
Свойство расширения поля только читается как ссылка на коллекцию. Не присваивайте Поле.НастройкаУсловногоОформления = Новый ... и не создавайте несуществующий конструктор.
Очистить разрешения не отключает существующий отбор и не удаляет исходные правила, области или параметры.
Статические проверки пособия подтверждают имена API и структуру кода, но не поведение конкретного редактора обычной формы: его проверяет пользователь в своей учебной базе.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.