Как настроить нумерацию строк в СКД и сделать красную разделительную черту в отчете 1С?

Программист 1С v8.3 (Управляемые формы) Сфера услуг, туризм и социальный сектор
← На главную

При формировании различных рейтинговых списков (например, списков абитуриентов при поступлении в учебные заведения, рейтингов продаж или списков сотрудников на премирование) часто возникает задача визуального разделения строк. Нам необходимо не просто пронумеровать строки, но и провести четкую визуальную границу — так называемую «красную черту» или линию отсечения, которая наглядно покажет, кто из кандидатов укладывается в лимит (например, количество бюджетных мест), а кто остается вне его.

В этой статье мы подробно разберем, как решить эту задачу в системе компоновки данных (СКД) 1С. Мы рассмотрим процесс с самых азов: от анализа структуры отчета и его выгрузки до настройки вычисляемых полей, параметров и условного оформления. Также мы разберем продвинутые приемы, которые позволят сделать отчет динамическим, интерактивным и удобным для конечного пользователя без постоянного вмешательства программиста.

Шаг 1. Поиск и сохранение отчета во внешний файл для анализа

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

Для сохранения отчета как внешнего выполним следующие действия:

  1. Откроем информационную базу в режиме Конфигуратор.
  2. В дереве метаданных найдем ветку Отчеты.
  3. Найдем в списке интересующий нас отчет (например, «СписокАбитуриентовРейтинг»).
  4. Кликнем по нему правой кнопкой мыши и выберем пункт меню Сохранить как внешнюю обработку, отчет....
  5. Укажем путь на диске и сохраним файл с расширением .erf.

Теперь мы можем открыть этот файл через меню Файл -> Открыть в Конфигураторе и вносить любые изменения в схему компоновки данных (СКД), не опасаясь повредить основную конфигурацию и не снимая ее с поддержки.

Если отчет изначально был добавлен в базу как дополнительный (через механизм дополнительных отчетов и обработок), мы можем выгрузить его прямо в пользовательском режиме. Для этого перейдем в раздел Администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчеты и обработки, найдем нужный элемент в списке и нажмем кнопку Выгрузить в файл.

Шаг 2. Реализация нумерации строк в группировках СКД

Главная сложность при создании линии отсечения заключается в том, что нам нужно привязать условие оформления к порядковому номеру строки в конкретной группировке. Стандартное системное поле СКД СистемныеПоля.НомерПоПорядку не всегда подходит, так как оно нумерует абсолютно все строки в результирующем документе сквозным образом, игнорируя группировки и иерархию. Нам же требуется нумерация внутри конкретной группы (например, внутри специальности или учебной группы абитуриентов).

Рассмотрим два способа решения этой задачи: классический (через Конфигуратор) и пользовательский (непосредственно в режиме «1С:Предприятие»).

Способ А. Создание вычисляемого поля в Конфигураторе

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

Разберем по шагам настройку схемы компоновки данных:

  1. Откроем сохраненный внешний отчет в Конфигураторе и перейдем на вкладку Схема компоновки данных (обычно это «ОсновнаяСхемаКомпоновкиДанных»).
  2. Перейдем на вкладку Вычисляемые поля.
  3. Добавим новую строку нажатием на кнопку с плюсом.
  4. Заполним свойства нового поля следующим образом:
    • Путь к данным: введем имя поля на латинице, например, НумерацияВГруппе.
    • Выражение: укажем встроенную функцию СКД для расчета порядковых номеров: ВычислитьВыражение("НомерПоПорядкуВГруппировке", , , )
    • Заголовок: укажем понятное пользователю название, например, «№ в группе» или «Ранг».
  5. Перейдем на вкладку Настройки. На вкладке Выбранные поля перетащим наше новое поле НумерацияВГруппе в список выводимых полей, чтобы оно отображалось в отчете.

Использование функции ВычислитьВыражение с параметром "НомерПоПорядкуВГруппировке" гарантирует, что при смене группировок (например, при выводе списка по разным учебным направлениям) нумерация для каждого нового направления будет начинаться заново с единицы.

Способ Б. Создание пользовательского поля в режиме «1С:Предприятие»

Что делать, если у нас нет доступа к Конфигуратору или мы не хотим изменять структуру метаданных? Мы можем получить аналогичный результат прямо в пользовательском интерфейсе с помощью механизма пользовательских полей. Проанализируем, как это настроить:

  1. Запустим отчет в режиме «1С:Предприятие».
  2. Нажмем кнопку Еще на панели управления отчета и выберем пункт Прочее -> Изменить вариант отчета....
  3. В открывшемся окне настроек перейдем на вкладку Пользовательские поля (в нижней части окна).
  4. Нажмем кнопку Добавить и выберем пункт Новое поле-выражение....
  5. Зададим настройки поля:
    • Представление (заголовок): напишем «Номер строки».
    • В поле Выражение детальных записей введем формулу: НомерПоПорядкуВГруппировке()
    • В поле Выражение итоговых записей вставим ту же формулу: НомерПоПорядкуВГруппировке()
  6. Нажмем ОК. Теперь созданное пользовательское поле появится в списке доступных полей на вкладке «Настройки -> Выбранные поля». Перетащим его в список выводимых полей отчета.

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

Шаг 3. Настройка условного оформления для создания «красной черты»

Теперь, когда у нас есть поле с порядковым номером строки, мы можем настроить правила условного оформления для рисования визуальной границы.

Основная цель — провести горизонтальную красную линию под строкой, номер которой соответствует предельному значению (например, под строкой номер 25, если на специальность выделено 25 мест). Выясним, как сделать это аккуратно, чтобы линия не превратилась в рамку вокруг ячеек и не «уползла» в другие части отчета.

Разберем по шагам процесс добавления элемента условного оформления:

  1. В настройках отчета (в Конфигураторе или через «Изменить вариант отчета» в Предприятии) перейдем на вкладку Условное оформление.
  2. Нажмем кнопку Добавить для создания нового элемента оформления.
  3. На вкладке Оформление найдем свойство Граница снизу. Нажмем на него и раскроем детальные параметры границы:
    • Тип линии: выберем Сплошная (для большей строгости) или Двойная (для акцентирования внимания).
    • Толщина: установим значение 2 или 3. Стандартная толщина «1» может сливаться с обычной сеткой таблицы.
    • Цвет: выберем ярко-красный цвет (например, из палитры Web-цветов или стилей).
  4. Перейдем на вкладку Условие. Нам нужно задать правило, при котором данная граница будет отрисовываться. Добавим новое условие:
    • Левое значение (Поле): выберем наше поле нумерации (например, НумерацияВГруппе или созданное пользовательское поле).
    • Вид сравнения: выберем значение Равно.
    • Правое значение: укажем конкретное число, например, 25.
  5. Перейдем на вкладку Оформляемые поля. Здесь кроется важный нюанс. Если мы выберем конкретное поле, то красная линия подчеркнет только одну эту ячейку. Чтобы линия протянулась через всю строку от левого до правого края таблицы, оставим список оформляемых полей пустым. В этом случае СКД автоматически применит оформление ко всей строке целиком.
  6. Перейдем на вкладку Область использования. Часто пользователи сталкиваются с тем, что черта начинает хаотично дублироваться в группировках верхнего уровня или итогах отчета. Чтобы избежать этого, настроим область применения:
    • Установим флажок В группировке.
    • Снимем флажки с пунктов В иерархической группировке и В общем итоге.

Нажмем кнопку ОК и сформируем отчет. Теперь ровно под строкой с номером 25 появится красивая и четкая красная черта.

Шаг 4. Динамическая граница отсечения: избавляемся от жесткого кодирования

В реальной жизни количество мест (лимит) редко бывает одинаковым для всех направлений. Например, на одно направление принимают 15 человек, а на другое — 30. Прописывать фиксированное число «25» в условии оформления нецелесообразно, так как при изменении планов набора придется каждый раз перенастраивать отчет. Посмотрим, как сделать положение линии динамическим с помощью параметров СКД.

Разберем, как привязать условие оформления к параметру:

  1. Откроем схему компоновки данных в Конфигураторе и перейдем на вкладку Параметры.
  2. Добавим новый параметр с именем ЛимитПрохода. Установим для него тип данных Число.
  3. В колонке Ограничение доступности снимем флажок, чтобы пользователь мог самостоятельно вводить этот параметр на форме отчета перед формированием. При желании укажем значение по умолчанию (например, 20).
  4. Перейдем на вкладку Настройки в элемент условного оформления, который мы создали на предыдущем шаге.
  5. Перейдем на вкладку Условие и отредактируем наше правило сравнения:
    • Поле: оставляем НумерацияВГруппе.
    • Вид сравнения: оставляем Равно.
    • В поле Правое значение нажмем на кнопку выбора типа значения (стрелочка) и выберем режим Поле компоновки данных или Параметр.
    • Выберем из списка наш созданный параметр &ЛимитПрохода.

Теперь положение нашей красной черты будет полностью управляемым. Пользователь сможет прямо на форме отчета ввести в поле «Лимит прохода» любое число (например, 15, 20 или 50), и разделительная линия автоматически переместится под соответствующую строку.

Шаг 5. Комплексная визуализация рейтинга: настраиваем «зоны прохода»

Чтобы сделать отчет еще более информативным, мы можем дополнить красную линию цветовой индикацией строк. Реализуем концепцию светофора, разделив список абитуриентов на две явные зоны: проходящие (зеленая зона) и не проходящие (серая или светло-красная зона).

Рассмотрим, какие три правила условного оформления нам нужно настроить в системе компоновки данных:

Правило 1. Зеленая зона (проходящие на бюджет)

Правило 2. Разделительная черта (красная линия отсечения)

Правило 3. Серая зона (вне бюджета)

В результате совместной работы этих трех правил мы получим профессиональный интерактивный отчет. Пользователю достаточно будет одного взгляда на сформированную таблицу, чтобы мгновенно оценить конкурсную ситуацию и увидеть точную границу прохода.

Шаг 6. Перенос настроек между базами данных без Конфигуратора

Представим ситуацию, когда вы потратили время, настроили великолепный отчет с пользовательскими полями, параметрами и условным оформлением в одной базе данных (например, на тестовой копии), и теперь вам нужно перенести эти настройки в рабочую базу или передать коллеге на другой компьютер. Сохранять отчет как внешний файл и обновлять его через Конфигуратор не обязательно. Разберем быстрый способ экспорта настроек через XML-файлы.

Для экспорта настроек выполним следующий алгоритм:

  1. В базе-источнике откроем наш настроенный отчет.
  2. Нажмем кнопку Еще на панели отчета и перейдем в меню Прочее -> Изменить вариант отчета....
  3. В окне настроек варианта нажмем кнопку Еще (в самом верху окна настройки варианта) и выберем пункт Сохранить настройки в файл....
  4. Укажем путь для сохранения XML-файла на диске. В этом файле сохранится вся структура схемы настроек, включая ваши пользовательские вычисляемые поля, группировки и правила условного оформления.

Для импорта настроек в другой базе выполним обратную процедуру:

  1. Откроем этот же отчет в целевой базе данных.
  2. Перейдем в меню Еще -> Прочее -> Изменить вариант отчета....
  3. Нажмем кнопку Еще -> Загрузить настройки из файла....
  4. Укажем сохраненный ранее XML-файл и подтвердим загрузку.
  5. Нажмем кнопку Завершить редактирование и сформируем отчет.

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

← На главную