База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в 1С расширении условно оформить поля формы? › RE: Как в 1С расширении условно оформить поля формы?
В расширении конфигурации 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
Если нужно, могу помочь с конкретным примером под вашу задачу.