Применить рамку нужного вида, не путая её с цветом

Учебные задачи

РамкаОдинарнаяЭПД в XML — одинарная рамка элемента управления толщиной 1. Назначаем её своей обычной панели, а не ячейке табличного документа.

Где и как запускать

Полный модуль собственной обычной формы внешней обработки; толстый клиент учебной копии.

Подготовка

  1. Только отдельная учебная копия КА2 Progress. Три существующих элемента: АктуальнаяПодпискаЦвет, ВажнаяНадписьШрифт, РамкаОдинарнаяЭПД. Их виды и исходные значения проверены по StyleItems/*.xml, не придуманы.

  2. Для визуальных уроков создайте собственную внешнюю обработку с обычной формой, пустой панелью УчебнаяПанель и кнопкой вне панели. Назначьте кнопке действие ВыполнитьПример. Вставьте полный модуль урока в модуль этой обычной формы; обработчик без аргументов.

  3. Запускайте обычную форму в толстом клиенте учебной копии. В управляемой форме нет ЭлементыФормы и объекта Панель; туда код обычного визуального урока не переносится.

  4. Серверные диагностические уроки отдельно размещаются в серверном общем модуле УчебныеЗадачи. Код не меняет метаданные, ГлавныйСтиль, основной стиль базы или оформление рабочих форм.

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

Разбор по шагам

  1. Сопоставляем исходные Type=Border, ControlBorderType=Single и width=1 с видом элемента, ТипРамки и Толщина.

  2. Перед присваиванием есть две проверки: вид элемента метаданных и тип его значения.

  3. Рамка назначается свойству Рамка обычной панели. Рамки ячеек табличного документа имеют другой набор типов оформления, и этот урок их не подменяет.

  4. Внешняя кнопка остаётся за пределами панели, поэтому эксперимент не мешает повторному запуску.

Как проверить результат

  1. Три контрольные Истина для исходной учебной копии. Собственная панель получает одинарную рамку.

  2. Исходный StyleItems/РамкаОдинарнаяЭПД.xml не изменён.

Ожидаемый результат

Начинающий связывает типизированное значение рамки с совместимым свойством своей формы.

На что обратить внимание

  1. Не считайте все значения типа Рамка взаимозаменяемыми во всех визуальных объектах.

  2. Толщина из XML не является универсальной гарантией одного физического пикселя при любом масштабе экрана.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.