Работа с большими объемами документов в 1С:Предприятие 8.3 часто превращается в рутину: сотни строк в журналах сливаются в серую массу, а критически важные записи теряются среди второстепенных. Цветовая маркировка строк решает эту проблему — она позволяет выделять просроченные счета, неоплаченные накладные или документы с ошибками одним взглядом. Но как реализовать эту функцию, если в стандартной конфигурации такой опции нет?
В этой статье мы разберём все способы раскраски журналов — от простого условного форматирования через настройки платформы до сложных программных решений с использованием внешних обработок и модулей менеджера. Особое внимание уделим типичным ошибкам, которые приводят к «поломке» интерфейса, и покажем, как избежать конфликтов при обновлении конфигурации. Материал будет полезен и бухгалтерам, и программистам 1С: первые смогут настроить базовые правила без кода, а вторые — автоматизировать процесс для сложных бизнес-логик.
Почему стандартные настройки 1С не хватает для раскраски
В большинстве типовых конфигураций (Бухгалтерия 3.0, Управление торговлей 11, Зарплата и управление персоналом 3.1) цветовое выделение строк журнала документов либо отсутствует вовсе, либо ограничено жёсткими рамками. Например:
- 🔴 В Бухгалтерии 3.0 можно выделить только просроченные документы красным цветом — и то только в отчётах, а не в журналах.
- 🔵 В УТ 11 есть опция «Пометить на удаление», но она добавляет лишь серый фон, а не гибкую цветовую схему.
- 🟢 В ЗУП 3.1 цветом отмечаются только документы с ошибками валидации, причём палитра ограничена двумя оттенками.
При этом бизнес-задачи часто требуют более тонкой настройки:
- 📌 Выделение документов от ключевых контрагентов (например, VIP-клиентов).
- 💰 Маркировка неоплаченных счетов по срокам (зелёный — в пределах нормы, жёлтый — скоро просрочка, красный — просрочено).
- ⚠️ Подсветка документов с некорректными реквизитами (например, отсутствует подпись или печать).
⚠️ Внимание: В некоторых релизах платформы 1С (например, 8.3.20–8.3.22) попытка изменить цвет строк через внешние обработки может привести к зависанию интерфейса при большом объёме данных (10 000+ строк). Перед массовым применением тестируйте решение на копии базы.
Ещё одна проблема — обновления конфигурации. Если вы вручную правили формы журналов, то после обновления эти изменения могут сброситься. Поэтому для стабильной работы лучше использовать расширения конфигурации или внешние обработки, которые не затрагивают ядро системы.
Способ 1: Условное форматирование через настройки платформы (без программирования)
Если вам нужно быстро выделить документы по простому критерию (например, по дате или статусу), можно обойтись без кода. В платформе 1С 8.3 есть встроенный механизм условного форматирования, который работает в динамических списках и некоторых журналах.
Алгоритм настройки:
- Откройте нужный журнал (например,
Продажи → Реализация товаров и услуг). - Нажмите
Ещё → Настроить список(илиВсе действия → Изменить формув старых релизах). - Перейдите на вкладку
Условное оформление. - Добавьте новое правило, укажите условие (например,
Дата < ТекущаяДата() - 30для просроченных документов) и выберите цвет фона или шрифта.
Ограничения метода:
- 🚫 Работает не во всех журналах (например, в ЗУП 3.1 доступно только для отчётов).
- 🚫 Нельзя использовать сложные условия (например, проверку по нескольким реквизитам одновременно).
- 🚫 Цвета сбрасываются после обновления конфигурации, если правило не сохранено в расширении.
| Типовая конфигурация | Поддерживает условное форматирование | Где работает |
|---|---|---|
| Бухгалтерия 3.0 | ✅ Да | Журналы документов, отчёты |
| Управление торговлей 11 | ✅ Да (ограничено) | Только динамические списки |
| Зарплата и управление персоналом 3.1 | ❌ Нет | Только в отчётах |
| ERP 2.5 | ✅ Да | Журналы и динамические списки |
Если условное форматирование не сохраняется после перезапуска 1С, проверьте права пользователя. Для сохранения настроек требуется роль с правом Изменение форм и отчётов.
Способ 2: Раскраска через внешнюю обработку (для пользователей без доступа к конфигуратору)
Если у вас нет прав на изменение конфигурации, но нужно гибко настраивать цвета, подойдёт внешняя обработка. Она работает как надстройка и не требует внесения изменений в базу. Популярные готовые решения:
- 📥 Обработка «Цветные строки» (от Infostart) — позволяет выделять строки по любым реквизитам с поддержкой RGB-цветов.
- 🎨 «Раскраска журналов документов» (от 1С-Софт) — специализирована на бухгалтерских и складских документах.
- ⚡ «Dynamic Colors» — поддерживает динамическое изменение цветов в реальном времени (например, при изменении статуса документа).
Как подключить обработку:
- Скачайте файл с расширением
.epf(например, с Infostart или 1С:ИТС). - В 1С откройте
Файл → Открытьи выберите скачанный файл. - В форме обработки укажите журнал для раскраски и настройте правила (например,
Если СуммаДокумента > 100000 Тогда ЦветФона = RGB(255, 200, 200)). - Сохраните настройки и примените их к текущему сеансу.
⚠️ Внимание: Некоторые обработки конфликтуют с управляемыми формами в новых релизах 1С (8.3.23+). Перед покупкой проверяйте совместимость с вашей версией платформы на сайте разработчика.
Преимущества метода:
- ✅ Не требует прав на изменение конфигурации.
- ✅ Правила сохраняются между сеансами.
- ✅ Можно быстро отключить раскраску, не трогая базу.
Недостатки:
- ❌ Платные обработки (от 1 500 до 5 000 ₽).
- ❌ Может тормозить при большом количестве документов (50 000+ строк).
Убедитесь, что обработка поддерживает вашу версию 1С|Проверьте отзывы о стабильности|Тестируйте на копии базы|Сверьте список поддерживаемых журналов-->
Способ 3: Программная раскраска через модуль менеджера (для разработчиков)
Для максимальной гибкости и производительности используйте программный код. Этот метод требует доступа к конфигуратору и знания языка 1С:Предприятие, но позволяет реализовать любую логику — от простой раскраски до динамического изменения цветов в зависимости от бизнес-правил.
Пример кода для раскраски журнала Документ.РеализацияТоваровУслуг по статусу оплаты:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Параметры.ФормаДокумента) Тогда
Возврат;
КонецЕсли;
// Получаем список документов
СписокДокументов = ПланыОбмена.ПолучитьДанныеДляОбмена();
// Настраиваем цвета
Для Каждого СтрокаДокумента Из СписокДокументов Цикл
Если СтрокаДокумента.СуммаОплаты < СтрокаДокумента.СуммаДокумента Тогда
СтрокаДокумента.ЦветФона = RGB(255, 200, 200); // Красный - не оплачено
ИначеЕсли СтрокаДокумента.Дата < ТекущаяДата() - 7 Тогда
СтрокаДокумента.ЦветФона = RGB(255, 255, 150); // Жёлтый - просрочено
Иначе
СтрокаДокумента.ЦветФона = RGB(200, 255, 200); // Зелёный - всё в порядке
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Где размещать код:
- 📌 В модуле менеджера документа — если логика привязана к конкретному типу документов.
- 📌 В модуле формы журнала — если нужно раскрашивать строки при открытии списка.
- 📌 В общем модуле — для переиспользуемых функций (например, универсальной проверки просрочки).
Критическая особенность: При программной раскраске через модуль формы не используйте тяжелые запросы в цикле — это приведёт к тормозам. Лучше загрузить все данные одним запросом, а затем обрабатывать их в памяти. Например:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка,
| РеализацияТоваровУслуг.СуммаДокумента КАК Сумма,
| РеализацияТоваровУслуг.Дата КАК Дата
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг";
⚠️ Внимание: Если вы используете тонкий клиент или веб-клиент, некоторые методы раскраски (например, прямой доступ к свойствуЦветФона) могут не работать. В этом случае применяйте стили CSS через механизмПолеHTMLДокумента.
Способ 4: Раскраска через расширение конфигурации (без изменения типовых объектов)
Расширения конфигурации — это официальный механизм 1С для добавления новой функциональности без изменения типовых объектов. Он идеален для раскраски журналов, так как:
- ✅ Сохраняется при обновлении конфигурации.
- ✅ Не требует снятия с поддержки.
- ✅ Можно отключить в любой момент.
Пошаговая инструкция:
- Откройте конфигуратор и создайте новое расширение (
Конфигурация → Расширения → Добавить). - В дереве расширения найдите нужный журнал (например,
ЖурналыДокументов.РеализацияТоваровУслуг). - Добавьте новый реквизит
ЦветСтрокитипаЦвет. - В модуле формы журнала пропишите логику заполнения цвета (аналогично Способу 3).
- Сохраните расширение и обновите конфигурацию базы.
Пример кода для расширения:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Получаем данные документов
Данные = ПолучитьДанныеДокументов();
// Применяем цвета
Для Каждого Строка Из ЭлементыФормы.СписокДокументов Цикл
ТекущийДокумент = Данные.Найти(Строка.Документ);
Если ТекущийДокумент.Просрочено Тогда
Строка.ЦветСтроки = ВебЦвет.Красный;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Преимущества расширений перед внешними обработками:
- 🔹 Высокая производительность (код выполняется на сервере).
- 🔹 Поддержка сложных условий (например, проверка по нескольким связанным таблицам).
- 🔹 Возможность интеграции с бизнес-логикой (например, автоматическим отправлением уведомлений при смене цвета).
Расширения конфигурации — самый надёжный способ раскраски для крупных баз (100 000+ документов), так как они не зависят от внешних файлов и работают на уровне платформы.
Типичные ошибки и как их избежать
Даже опытные разработчики 1С сталкиваются с проблемами при настройке раскраски. Вот самые распространённые ошибки и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Цвета не применяются | Код выполняется на клиенте, а данные загружаются на сервере | Перенести логику в серверную процедуру или использовать ПолучитьФорму() |
| 1С зависает при открытии журнала | Цикл по 50 000+ строкам без оптимизации | Использовать пакетную обработку или ограничить количество обрабатываемых строк |
| Цвета сбрасываются после обновления | Правила сохранены в форме, а не в расширении | Перенести настройки в расширение конфигурации |
| Не работают RGB-цвета | В тонком клиенте не поддерживается RGB() |
Использовать ВебЦвет.ИмяЦвета (например, ВебЦвет.Красный) |
Дополнительные подводные камни:
- 🔴 Конфликт с другими обработками: Если у вас установлено несколько внешних обработок для раскраски, они могут перезаписывать цвета друг друга. Решение — объединить логику в одном расширении.
- 🔵 Неправильные права: Для изменения цветов через код пользователю нужна роль с правом
Интерактивное удаление пометок(да, это странно, но так работает 1С). - 🟢 Проблемы с печатью: Цвета в журнале могут не отображаться в печатной форме. Чтобы это исправить, нужно править макет отчёта.
Почему в веб-клиенте не работают некоторые цвета?
В веб-клиенте 1С использует HTML/CSS для отображения интерфейса, поэтому функции вроде RGB() заменяются на стандартные имена цветов (red, #FF0000). Если вам нужен конкретный оттенок, используйте шестнадцатеричный код:
ЦветФона = ВебЦвет.Создать("FFCCCC"); // Светло-красный
Продвинутые сценарии: динамическая раскраска и интеграция с бизнес-логикой
Если вам нужно не просто статичное выделение строк, а динамическое изменение цветов в зависимости от внешних событий (например, поступление оплаты или изменение статуса), потребуется более сложная настройка. Рассмотрим два примера:
1. Автоматическое обновление цветов при изменении документа
Допустим, вы хотите, чтобы строка в журнале Счета к оплате меняла цвет с красного на зелёный сразу после проведения платежа. Для этого:
- Создайте обработчик события
ПриЗаписив модуле документаПоступлениеНаРасчетныйСчет. - В обработчике обновите статус связанного счёта и перерисуйте журнал:
Процедура ПриЗаписи(Отказ)Если ЭтотОбъект.ВидыДвижений.Оплата Тогда
Счет = ЭтотОбъект.ПолучитьСвязанныйДокумент("СчетНаОплатуПокупателю");
Счет.СтатусОплаты = "Оплачено";
Счет.Записать();
// Обновляем журнал
ОбновитьФормуЖурнала("СчетаКОплате");
КонецЕсли;
КонецПроцедуры
2. Раскраска по данным из внешних источников
Например, вы хотите выделять красным документы от контрагентов, которые попали в чёрный список (данные берутся из внешней базы или API). Решение:
- Создайте веб-сервис или HTTP-запрос для проверки статуса контрагента.
- В модуле формы журнала добавьте асинхронный запрос:
&НаКлиентеПроцедура ПриАктивизацииСтроки(Элемент)
Контрагент = Элемент.ТекущиеДанные.Контрагент;
Запрос = Новый HTTPЗапрос("https://api.your-service.ru/check?inn=" + Контрагент.ИНН);
Ответ = Запрос.Выполнить();
Если Ответ.Тело = "blacklist" Тогда
Элемент.ЦветФона = ВебЦвет.Красный;
КонецЕсли;
КонецПроцедуры
Для таких сценариев важно:
- 🔹 Использовать асинхронные запросы, чтобы не блокировать интерфейс.
- 🔹 Кэшировать результаты проверок (например, в регистре сведений), чтобы не нагружать внешний сервис.
- 🔹 Обрабатывать ошибки связи (например, если API недоступен, использовать последний известный статус).
Для динамической раскраски в реальном времени (например, при изменении курса валют) используйте механизм Оповещения в 1С. Он позволяет отправлять уведомления о изменении данных и автоматически обновлять цвета.
FAQ: Частые вопросы по раскраске журналов в 1С
Можно ли раскрасить журнал документов в базовой версии 1С (например, 1С:Бухгалтерия 3.0 Базовая)?
В базовой версии нет доступа к конфигуратору, поэтому программные методы (Способы 3 и 4) недоступны. Однако вы можете:
- Использовать внешние обработки (Способ 2).
- Настроить условное форматирование (Способ 1), если оно поддерживается в вашей конфигурации.
Обратите внимание: в базовой версии некоторые журналы (например, Банковские выписки) не поддерживают даже условное форматирование.
Почему после обновления 1С исчезли все цвета в журнале?
Это типичная проблема при обновлении конфигурации. Причины и решения:
- Если цвета были настроены через форму журнала — они сбросились, так как форма перезаписалась. Решение: перенести настройки в расширение конфигурации.
- Если использовалась внешняя обработка — проверьте её совместимость с новой версией платформы. Возможно, изменился формат данных.
- Если цвета пропали после обновления до 8.3.23+, проверьте, не изменился ли механизм отображения цветов в тонком клиенте (см. раздел про веб-клиент).
Как раскрасить журнал по нескольким условиям одновременно (например, и по дате, и по сумме)?
Для сложных условий используйте вложенные операторы Если или таблицу правил. Пример кода:
Если Документ.Дата < ТекущаяДата() - 30 Тогда
Цвет = ВебЦвет.Красный; // Просрочено
ИначеЕсли Документ.Сумма > 100000 Тогда
Цвет = ВебЦвет.Желтый; // Крупная сумма
ИначеЕсли Документ.Контрагент.ВЧерномСписке Тогда
Цвет = ВебЦвет.Фиолетовый; // Неблагонадежный контрагент
КонецЕсли;
Для удобства управления правилами можно вынести их в регистр сведений или справочник, где администратор сможет редактировать условия без изменения кода.
Можно ли экспортировать раскрашенный журнал в Excel с сохранением цветов?
Стандартный экспорт через Файл → Сохранить как... не сохраняет цвета. Решения:
- Использовать внешнюю обработку выгрузки (например, «Выгрузка в Excel с форматированием» от Infostart).
- Написать собственный код выгрузки с применением стилей:
ТаблицаExcel = Новый ТаблицаExcel;ТаблицаExcel.УстановитьФорматЯчеек(1, 1, "фон: красный; шрифт: жирный");
- В ручном режиме: экспортировать данные в Excel, а затем применить условное форматирование уже в Excel.
Как сделать, чтобы цвета автоматически обновлялись при изменении данных (например, при проведении оплаты)?
Для динамического обновления используйте:
- Обработчики событий (например,
ПриПроведениив документе оплаты), которые будут обновлять статус связанного документа. - Механизм оповещений:
Оповещение = Новый ОповещениеПользователя;Оповещение.Текст = "Обновите журнал - изменился статус документа " + Ссылка;
Оповещение.Показать();
- Регламентное задание, которое раз в час будет проверять актуальность цветов (подходит для фоновых проверок, например, просрочки).
Для мгновенного обновления интерфейса можно использовать ОбновитьФорму() или ПереоткрытьФорму().