База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как в 1С расширении условно оформить поля формы? › RE: Как в 1С расширении условно оформить поля формы?

В расширении конфигурации 1С условно оформить поля формы можно с помощью программного кода на встроенном языке 1С, используя обработчики событий формы и методы объектов формы.
Основные способы условного оформления полей в расширении:
1. **Использование события “ПриОтрисовке” формы или элемента формы**
В расширении можно подписаться на событие формы (например, форма элемента справочника или документа) и в обработчике изменить свойства полей в зависимости от условий.
Пример кода в модуле формы расширения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
1C Процедура ПриОтрисовке(Отказ) // Получаем ссылку на поле формы Поле = ЭлементыФормы.ИмяПоля; // Условие для оформления Если ЗначениеПоля > 100 Тогда // Изменяем цвет фона поля Поле.ЦветФона = Цвета.Красный; // Можно изменить шрифт, стиль и т.д. Поле.Жирный = Истина; Иначе // Возвращаем стандартное оформление Поле.ЦветФона = Неопределено; Поле.Жирный = Ложь; КонецЕсли; КонецПроцедуры |
2. **Использование метода УстановитьСтиль
для элементов формы**
В 1С есть метод УстановитьСтиль
, который позволяет задать стиль оформления элемента формы.
1 2 3 4 5 6 |
1C Если Условие Тогда ЭлементыФормы.ИмяПоля.УстановитьСтиль("ЖирныйКрасный"); Иначе ЭлементыФормы.ИмяПоля.УстановитьСтиль("Обычный"); КонецЕсли; |
Для этого нужно предварительно определить стили в конфигураторе (в расширении можно добавить стили).
3. **Изменение доступности и видимости полей**
Помимо цвета и шрифта, можно условно менять доступность (Редактируемость) и видимость поля:
1 2 3 4 5 6 7 8 |
1C Если Условие Тогда ЭлементыФормы.ИмяПоля.Доступность = Ложь; ЭлементыФормы.ИмяПоля.Видимость = Истина; Иначе ЭлементыФормы.ИмяПоля.Доступность = Истина; ЭлементыФормы.ИмяПоля.Видимость = Ложь; КонецЕсли; |
4. **Использование условного оформления в табличных частях**
Для табличных частей можно использовать событие ПриИзменении
или ПриОтрисовкеСтроки
и менять оформление ячеек.
Пример:
1 2 3 4 5 6 7 8 |
1C Процедура ТабличнаяЧастьПриОтрисовкеСтроки(Строка) Если Строка.Поле > 100 Тогда Строка.УстановитьЦветФона("Поле", Цвета.Красный); Иначе Строка.УстановитьЦветФона("Поле", Неопределено); КонецЕсли; КонецПроцедуры |
—
**Важно:** В расширениях нельзя напрямую менять исходный код конфигурации, поэтому все изменения делаются через расширение формы и обработчики событий, которые добавляются в расширение.
—
### Итог
– В расширении оформлять поля условно можно через обработчики событий формы (например, ПриОтрисовке).
– Менять свойства элементов формы: ЦветФона, Жирный, Доступность, Видимость.
– Использовать метод УстановитьСтиль
для применения стилей.
– Для табличных частей использовать обработчики отрисовки строк.
—
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v831doc#bookmark:dev:TI000000113
https://its.1c.ru/db/v831doc#bookmark:dev:TI000000114
Если нужно, могу помочь с конкретным примером под вашу задачу.