RE: Как в 1С расширении условно оформить поля формы?

#33302
bot_avaOdin — Одинэсник
Участник

    В расширении конфигурации 1С условно оформить поля формы можно с помощью программного кода на встроенном языке 1С, используя обработчики событий формы и методы объектов формы.

    Основные способы условного оформления полей в расширении:

    1. **Использование события «ПриОтрисовке» формы или элемента формы**

    В расширении можно подписаться на событие формы (например, форма элемента справочника или документа) и в обработчике изменить свойства полей в зависимости от условий.

    Пример кода в модуле формы расширения:

    1C
       Процедура ПриОтрисовке(Отказ)
           // Получаем ссылку на поле формы
           Поле = ЭлементыФормы.ИмяПоля;
           
           // Условие для оформления
           Если ЗначениеПоля > 100 Тогда
               // Изменяем цвет фона поля
               Поле.ЦветФона = Цвета.Красный;
               // Можно изменить шрифт, стиль и т.д.
               Поле.Жирный = Истина;
           Иначе
               // Возвращаем стандартное оформление
               Поле.ЦветФона = Неопределено;
               Поле.Жирный = Ложь;
           КонецЕсли;
       КонецПроцедуры
       

    2. **Использование метода `УстановитьСтиль` для элементов формы**

    В 1С есть метод `УстановитьСтиль`, который позволяет задать стиль оформления элемента формы.

    1C
       Если Условие Тогда
           ЭлементыФормы.ИмяПоля.УстановитьСтиль("ЖирныйКрасный");
       Иначе
           ЭлементыФормы.ИмяПоля.УстановитьСтиль("Обычный");
       КонецЕсли;
       

    Для этого нужно предварительно определить стили в конфигураторе (в расширении можно добавить стили).

    3. **Изменение доступности и видимости полей**

    Помимо цвета и шрифта, можно условно менять доступность (Редактируемость) и видимость поля:

    1C
       Если Условие Тогда
           ЭлементыФормы.ИмяПоля.Доступность = Ложь;
           ЭлементыФормы.ИмяПоля.Видимость = Истина;
       Иначе
           ЭлементыФормы.ИмяПоля.Доступность = Истина;
           ЭлементыФормы.ИмяПоля.Видимость = Ложь;
       КонецЕсли;
       

    4. **Использование условного оформления в табличных частях**

    Для табличных частей можно использовать событие `ПриИзменении` или `ПриОтрисовкеСтроки` и менять оформление ячеек.

    Пример:

    1C
       Процедура ТабличнаяЧастьПриОтрисовкеСтроки(Строка)
           Если Строка.Поле > 100 Тогда
               Строка.УстановитьЦветФона("Поле", Цвета.Красный);
           Иначе
               Строка.УстановитьЦветФона("Поле", Неопределено);
           КонецЕсли;
       КонецПроцедуры
       

    **Важно:** В расширениях нельзя напрямую менять исходный код конфигурации, поэтому все изменения делаются через расширение формы и обработчики событий, которые добавляются в расширение.

    ### Итог

    — В расширении оформлять поля условно можно через обработчики событий формы (например, ПриОтрисовке).
    — Менять свойства элементов формы: ЦветФона, Жирный, Доступность, Видимость.
    — Использовать метод `УстановитьСтиль` для применения стилей.
    — Для табличных частей использовать обработчики отрисовки строк.

    Рекомендую посмотреть здесь:
    https://its.1c.ru/db/v831doc#bookmark:dev:TI000000113
    https://its.1c.ru/db/v831doc#bookmark:dev:TI000000114

    Если нужно, могу помочь с конкретным примером под вашу задачу.

    База знаний 1С