Цветные строки в списках, документах и отчётах 1С 8.3: условное оформление руками и кодом

· 9 мин

Содержание

Выделять строки цветом в 1С 8.3 позволяет механизм условного оформления: вы задаёте условие («документ не проведён», «сумма больше 100 000», «остаток меньше нуля») и оформление — цвет фона, цвет текста или шрифт. В списке документов или справочника это делается без программиста: меню Ещё → настройка списка → вкладка «Условное оформление».

Для табличной части документа, печатной формы и обработки нужен Конфигуратор или расширение. Механизм общий для платформы 8.3 и одинаково работает в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других типовых конфигурациях на управляемых формах.

Где нужно выделить строкуКто может сделатьИнструмент
Список документов, справочника, журналаПользовательНастройка списка → «Условное оформление»
Отчёт на СКДПользовательНастройки отчёта, расширенный вид → «Оформление»
Динамический список для всех пользователейРазработчикСписок.УсловноеОформление или настройка в Конфигураторе
Табличная часть документаРазработчикУсловноеОформление формы
Печатная форма (табличный документ)РазработчикСвойство ЦветФона области

Как выделять строки цветом в списке без программирования

Это способ для бухгалтера, кладовщика, менеджера. Настройка сохраняется для вашего пользователя и этой формы списка, коллег она не затрагивает.

Пример: в журнале «Реализация (акты, накладные, УПД)» подсветить жёлтым все документы на сумму от 100 000 руб.

  1. Откройте нужный список.
  2. Нажмите Ещё в командной панели и выберите команду настройки списка (Настроить список...).
  3. Перейдите на вкладку «Условное оформление» и нажмите «Добавить».
  4. В колонке «Оформление» откройте настройку и выберите «Цвет фона» — например, светло-жёлтый. Здесь же можно задать «Цвет текста» или «Шрифт» (полужирный).
  5. В колонке «Условие» добавьте отбор: поле «Сумма», вид сравнения «Больше или равно», значение 100000.
  6. Колонку «Оформляемые поля» оставьте пустой — тогда цветом выделится вся строка. Если указать поля, подсветятся только эти колонки.
  7. Нажмите «Завершить редактирование».

Условий в одном элементе может быть несколько. Чтобы объединить их через «ИЛИ», добавьте в условие группу «Группа ИЛИ» и перенесите отборы внутрь неё. Без группы условия работают через «И».

Что полезно подсветить в повседневной работе:

  • 🔴 непроведённые документы — красным текстом (условие «Проведен» равно «Нет»);
  • 🟡 крупные суммы — жёлтым фоном;
  • ⚪ помеченные на удаление — серым текстом;
  • 🟢 документы конкретного контрагента или ответственного — зелёным фоном.

Если строк несколько и они попадают под разные условия, применяются все подходящие элементы. Когда два элемента задают один и тот же параметр (например, оба — цвет фона), побеждает тот, что ниже в списке условного оформления.

Если подсветка пропала

Настройки списка можно сбросить: Ещё → команда установки стандартных настроек. После этого условное оформление, отборы и сортировки вернутся к исходным. Перед экспериментами с настройками запомните, что было настроено, — восстановить сброшенное оформление нельзя, только задать заново.

Выделение строк цветом в отчёте

Отчёты на системе компоновки данных (оборотно-сальдовая ведомость, анализ счёта, отчёты по продажам и остаткам) поддерживают то же условное оформление.

  1. Сформируйте отчёт и нажмите «Настройки».
  2. Переключите вид настроек на расширенный.
  3. Откройте вкладку «Оформление» и добавьте новый элемент.
  4. Укажите условие (например, «Сальдо на конец Дт» больше 0) и оформление — цвет фона.
  5. Закройте настройки и переформируйте отчёт.

Оформление сохранится вместе с вариантом отчёта. Чтобы не потерять его, сохраните настройки как свой вариант: тогда стандартный вариант останется нетронутым, а свой можно будет передать коллегам.

В отчётах удобно красить не всю строку, а одну колонку: в оформляемых полях укажите только «Сумма» или «Количество». Так глаз сразу находит отклонения, а таблица не превращается в пёструю мозаику.

Разработчик задаёт то же самое в схеме компоновки: вкладка «Настройки» конструктора СКД, нижняя закладка «Условное оформление». Такое оформление увидят все пользователи стандартного варианта отчёта.

Программное выделение строк в динамическом списке

Когда цвет нужен всем пользователям сразу и не должен слетать при сбросе настроек, оформление задают в конфигурации. Есть два пути.

Настройка в Конфигураторе без кода

В редакторе формы списка выделите реквизит Список (динамический список) и откройте настройку списка. В ней та же вкладка «Условное оформление», что видит пользователь. Заполняете условие и оформление — и всё, код не нужен.

Код в ПриСозданииНаСервере

Код удобен, когда условие зависит от данных: текущей даты, настроек пользователя, констант. Пример — непроведённые документы серым текстом, а документы на сумму от 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. В Конфигураторе: Конфигурация → Расширения конфигурации → добавить новое расширение.
  2. Заимствуйте форму нужного документа или списка (контекстное меню формы в основной конфигурации → «Добавить в расширение»).
  3. В модуле заимствованной формы создайте обработчик ПриСозданииНаСервере с аннотацией &После("ПриСозданииНаСервере") и поместите туда код условного оформления из примеров выше.
  4. Сохраните расширение и обновите конфигурацию базы данных.

Типовая конфигурация остаётся на поддержке, обновления ставятся как обычно, а подсветка продолжает работать — если разработчики 1С не переименуют поля, на которые опирается условие.

Внешняя обработка не умеет перекрашивать чужие формы. Зато в её собственной форме доступно всё то же самое: таблица значений на форме, у формы — условное оформление, код в ПриСозданииНаСервере. Это удобно для служебных обработок: сверок, загрузок, контроля остатков, где нужно сразу показать проблемные строки красным.

Перед тем как отдать подсветку пользователям
Выполнено: 0 / 5

Выделение строк цветом в мобильном приложении 1С

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

Отличий три:

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

Почему строка не красится: частые ошибки

Диагностика: выберите симптом

Частые вопросы

Увидят ли коллеги мою подсветку в списке?
Нет. Настройка через меню Ещё сохраняется только для вашего пользователя. Чтобы подсветка была у всех, её задают в конфигурации или в расширении.
Можно ли выделить строку цветом вручную, без условия?
Штатно — нет: условное оформление всегда опирается на данные. Обходной путь — завести реквизит-признак (флажок «Отметить») и красить строки, где он установлен.
Сохраняется ли цвет при выгрузке отчёта в Excel?
Да. При сохранении табличного документа отчёта в формат xlsx цвет фона и шрифта ячеек переносится.
Какой цвет выбрать, чтобы было видно в тёмной теме?
Задавайте цвета через элементы стиля конфигурации, а не жёстким Новый Цвет(...): элементы стиля подстраиваются под оформление интерфейса.
Сколько элементов условного оформления можно добавить?
Жёсткого лимита на практике нет, но каждый элемент проверяется для каждой строки. Десяток условий на большом списке заметно не влияет, сотня — уже может.