Цветные строки в списках, документах и отчётах 1С 8.3: условное оформление руками и кодом
Содержание
Выделять строки цветом в 1С 8.3 позволяет механизм условного оформления: вы задаёте условие («документ не проведён», «сумма больше 100 000», «остаток меньше нуля») и оформление — цвет фона, цвет текста или шрифт. В списке документов или справочника это делается без программиста: меню Ещё → настройка списка → вкладка «Условное оформление».
Для табличной части документа, печатной формы и обработки нужен Конфигуратор или расширение. Механизм общий для платформы 8.3 и одинаково работает в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других типовых конфигурациях на управляемых формах.
| Где нужно выделить строку | Кто может сделать | Инструмент |
|---|---|---|
| Список документов, справочника, журнала | Пользователь | Настройка списка → «Условное оформление» |
| Отчёт на СКД | Пользователь | Настройки отчёта, расширенный вид → «Оформление» |
| Динамический список для всех пользователей | Разработчик | Список.УсловноеОформление или настройка в Конфигураторе |
| Табличная часть документа | Разработчик | УсловноеОформление формы |
| Печатная форма (табличный документ) | Разработчик | Свойство ЦветФона области |
Как выделять строки цветом в списке без программирования
Это способ для бухгалтера, кладовщика, менеджера. Настройка сохраняется для вашего пользователя и этой формы списка, коллег она не затрагивает.
Пример: в журнале «Реализация (акты, накладные, УПД)» подсветить жёлтым все документы на сумму от 100 000 руб.
- Откройте нужный список.
- Нажмите
Ещёв командной панели и выберите команду настройки списка (Настроить список...). - Перейдите на вкладку «Условное оформление» и нажмите «Добавить».
- В колонке «Оформление» откройте настройку и выберите «Цвет фона» — например, светло-жёлтый. Здесь же можно задать «Цвет текста» или «Шрифт» (полужирный).
- В колонке «Условие» добавьте отбор: поле «Сумма», вид сравнения «Больше или равно», значение
100000. - Колонку «Оформляемые поля» оставьте пустой — тогда цветом выделится вся строка. Если указать поля, подсветятся только эти колонки.
- Нажмите «Завершить редактирование».
Условий в одном элементе может быть несколько. Чтобы объединить их через «ИЛИ», добавьте в условие группу «Группа ИЛИ» и перенесите отборы внутрь неё. Без группы условия работают через «И».
Что полезно подсветить в повседневной работе:
- 🔴 непроведённые документы — красным текстом (условие «Проведен» равно «Нет»);
- 🟡 крупные суммы — жёлтым фоном;
- ⚪ помеченные на удаление — серым текстом;
- 🟢 документы конкретного контрагента или ответственного — зелёным фоном.
Если строк несколько и они попадают под разные условия, применяются все подходящие элементы. Когда два элемента задают один и тот же параметр (например, оба — цвет фона), побеждает тот, что ниже в списке условного оформления.
Если подсветка пропала
Настройки списка можно сбросить: Ещё → команда установки стандартных настроек. После этого условное оформление, отборы и сортировки вернутся к исходным. Перед экспериментами с настройками запомните, что было настроено, — восстановить сброшенное оформление нельзя, только задать заново.
Выделение строк цветом в отчёте
Отчёты на системе компоновки данных (оборотно-сальдовая ведомость, анализ счёта, отчёты по продажам и остаткам) поддерживают то же условное оформление.
- Сформируйте отчёт и нажмите «Настройки».
- Переключите вид настроек на расширенный.
- Откройте вкладку «Оформление» и добавьте новый элемент.
- Укажите условие (например, «Сальдо на конец Дт» больше 0) и оформление — цвет фона.
- Закройте настройки и переформируйте отчёт.
Оформление сохранится вместе с вариантом отчёта. Чтобы не потерять его, сохраните настройки как свой вариант: тогда стандартный вариант останется нетронутым, а свой можно будет передать коллегам.
В отчётах удобно красить не всю строку, а одну колонку: в оформляемых полях укажите только «Сумма» или «Количество». Так глаз сразу находит отклонения, а таблица не превращается в пёструю мозаику.
Разработчик задаёт то же самое в схеме компоновки: вкладка «Настройки» конструктора СКД, нижняя закладка «Условное оформление». Такое оформление увидят все пользователи стандартного варианта отчёта.
Программное выделение строк в динамическом списке
Когда цвет нужен всем пользователям сразу и не должен слетать при сбросе настроек, оформление задают в конфигурации. Есть два пути.
Настройка в Конфигураторе без кода
В редакторе формы списка выделите реквизит Список (динамический список) и откройте настройку списка. В ней та же вкладка «Условное оформление», что видит пользователь. Заполняете условие и оформление — и всё, код не нужен.
Код в ПриСозданииНаСервере
Код удобен, когда условие зависит от данных: текущей даты, настроек пользователя, констант. Пример — непроведённые документы серым текстом, а документы на сумму от 100 000 — светло-жёлтым фоном:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// 1. Непроведённые — серым текстом
Элемент = Список.УсловноеОформление.Элементы.Добавить();
Элемент.Представление = "Непроведённые документы";
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Проведен");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
// 2. Крупные суммы — жёлтым фоном
Элемент = Список.УсловноеОформление.Элементы.Добавить();
Элемент.Представление = "Сумма от 100 000";
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СуммаДокумента");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
Отбор.ПравоеЗначение = 100000;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 245, 190));
КонецПроцедуры
Поля «Оформляемые поля» в примере не заполнены, поэтому выделяется вся строка. Имя СуммаДокумента замените на реальное имя поля вашего документа: посмотрите его в запросе динамического списка.
Поле из условия должно попадать в выборку динамического списка. Если колонки с этим полем нет на форме, платформа может не запросить его из базы, и условие не сработает. В настройке полей динамического списка отметьте у такого поля «Использовать всегда».
Когда условие не выразить отбором
Иногда цвет зависит от расчёта, которого нет в запросе: например, от остатка из регистра или от внешней проверки. Тогда используют событие таблицы формы ПриПолученииДанныхНаСервере: в нём перебирают полученные строки и задают оформление каждой. Способ гибкий, но выполняется при каждой порции данных, поэтому тяжёлые запросы в нём замедлят прокрутку списка.
Подсветка строк в табличной части документа
У табличной части (товары, услуги, сотрудники в начислении) пользовательской настройки условного оформления нет. Подсветку задаёт разработчик через условное оформление самой формы документа.
Пример: в документе продажи выделить розовым строки, где цена равна нулю.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элемент = УсловноеОформление.Элементы.Добавить();
Элемент.Представление = "Строки без цены";
// Оформляем все колонки таблицы Товары — получается выделение строки
Для Каждого Колонка Из Элементы.Товары.ПодчиненныеЭлементы Цикл
Поле = Элемент.Поля.Элементы.Добавить();
Поле.Поле = Новый ПолеКомпоновкиДанных(Колонка.Имя);
КонецЦикла;
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 220, 220));
КонецПроцедуры
Чем это отличается от динамического списка:
- 📌 условие пишется через путь к данным формы —
Объект.Товары.Цена, а не простоЦена; - 📌 оформляемые поля обязательны: без них оформление применится ко всем полям формы, включая шапку;
- 📌 в цикле указаны имена элементов формы (колонок), а не реквизитов табличной части — они могут различаться, например
ТоварыЦенаиЦена.
Если в таблице есть колонки внутри групп, ПодчиненныеЭлементы вернёт группы, а не сами поля. В этом случае перечислите нужные колонки вручную.
Цвет обновляется сам: стоит пользователю ввести цену, строка перестанет быть розовой. Пересчитывать что-то в событиях ПриИзменении не нужно — условное оформление вычисляется на клиенте по данным формы.
Для простой «зебры» без условий у таблицы формы есть свойство «Чередование цветов строк» (ЧередованиеЦветовСтрок). Оно чередует оттенок фона через строку и облегчает чтение длинных табличных частей.
Цвет строк в печатной форме
Печатная форма — это табличный документ, и условное оформление на него не действует. Цвет задают прямо в коде формирования, свойством ЦветФона (и ЦветТекста) области.
Пример: в выводе строк накладной выделить жёлтым товары с нулевым остатком.
ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТЧ Из ДанныеДокумента.Товары Цикл
ОбластьСтроки.Параметры.Заполнить(СтрокаТЧ);
Если СтрокаТЧ.Остаток <= 0 Тогда
ОбластьСтроки.Области.Строка.ЦветФона = Новый Цвет(255, 235, 156);
Иначе
ОбластьСтроки.Области.Строка.ЦветФона = Новый Цвет(); // автоцвет
КонецЕсли;
ТабДок.Вывести(ОбластьСтроки);
КонецЦикла;
Область «Строка» получена один раз до цикла, поэтому цвет нужно сбрасывать в ветке Иначе: иначе после первой жёлтой строки все следующие тоже станут жёлтыми. Новый Цвет() без параметров — это автоцвет, исходное оформление макета.
Если нужно покрасить уже выведенную строку, обратитесь к ней по номеру: ТабДок.Область("R" + Формат(ТабДок.ВысотаТаблицы, "ЧГ=0")).ЦветФона = .... Так закрашивается последняя выведенная строка документа целиком.
Учтите, что печатные формы часто печатают на чёрно-белом принтере. Светлый фон станет едва заметным серым, а тёмный «съест» текст. Для печати надёжнее полужирный шрифт или рамка, чем цвет.
Типовую печатную форму не правьте в основной конфигурации: после обновления изменения придётся переносить вручную. Правильный путь — расширение конфигурации (доступно с платформы 8.3.6) или своя внешняя печатная форма.
Расширения и внешние обработки: как не снимать конфигурацию с поддержки
Разработчик, которому нужно подсветить строки в типовой форме Бухгалтерии или ЗУП, почти всегда решает задачу расширением:
- В Конфигураторе:
Конфигурация→Расширения конфигурации→ добавить новое расширение. - Заимствуйте форму нужного документа или списка (контекстное меню формы в основной конфигурации → «Добавить в расширение»).
- В модуле заимствованной формы создайте обработчик
ПриСозданииНаСерверес аннотацией&После("ПриСозданииНаСервере")и поместите туда код условного оформления из примеров выше. - Сохраните расширение и обновите конфигурацию базы данных.
Типовая конфигурация остаётся на поддержке, обновления ставятся как обычно, а подсветка продолжает работать — если разработчики 1С не переименуют поля, на которые опирается условие.
Внешняя обработка не умеет перекрашивать чужие формы. Зато в её собственной форме доступно всё то же самое: таблица значений на форме, у формы — условное оформление, код в ПриСозданииНаСервере. Это удобно для служебных обработок: сверок, загрузок, контроля остатков, где нужно сразу показать проблемные строки красным.
Выделение строк цветом в мобильном приложении 1С
Условное оформление, заданное в конфигурации, работает и в мобильном клиенте, и в мобильном приложении на мобильной платформе: цвет текста и фона отображается в списках и таблицах форм. Код из примеров выше подходит без изменений, потому что выполняется на сервере при создании формы.
Отличий три:
- 📱 экран узкий, и в таблице видно меньше колонок, поэтому выделять лучше всю строку, а не отдельное поле;
- 📱 пользовательская настройка списка на телефоне неудобна: подсветку, которая нужна мобильным сотрудникам, лучше заложить в конфигурацию;
- 📱 на ярком солнце бледные оттенки неразличимы — выбирайте насыщенные цвета и дублируйте смысл значком или полужирным шрифтом.
Почему строка не красится: частые ошибки
Частые вопросы
Увидят ли коллеги мою подсветку в списке?
Ещё сохраняется только для вашего пользователя. Чтобы подсветка была у всех, её задают в конфигурации или в расширении.Можно ли выделить строку цветом вручную, без условия?
Сохраняется ли цвет при выгрузке отчёта в Excel?
Какой цвет выбрать, чтобы было видно в тёмной теме?
Новый Цвет(...): элементы стиля подстраиваются под оформление интерфейса.