Как настроить условное оформление в СКД, чтобы выделить товары, срок годности которых истекает через 30 дней или раньше?

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

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

Изначально задача может показаться сложной, так как стандартные отборы СКД не всегда позволяют гибко работать с динамическими временными интервалами относительно текущей даты. Мы разберем по шагам, как использовать возможности СКД, включая вычисляемые поля и параметры, для создания такого сложного условия.

Принцип работы условного оформления в СКД

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

Каждый элемент условного оформления состоит из двух основных частей:

  1. Отбор (Условие): Здесь мы указываем, при выполнении какого условия будет применяться оформление. Для сложных условий, таких как сравнение даты с "текущая дата + N дней", нам потребуется использовать вычисляемые поля.
  2. Оформление: В этой части мы определяем, как именно будет выглядеть элемент отчета, если условие отбора истинно. Например, мы можем установить оранжевый цвет фона или изменить шрифт.

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

Шаг 1: Добавляем параметр для текущей даты

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

  1. Откроем конструктор схемы компоновки данных нашего отчета.
  2. Перейдем на вкладку "Параметры".
  3. Добавим новый параметр. В колонке "Имя" присвоим ему понятное имя, например, ТекущаяДата.
  4. В колонке "Тип значения" выберем тип "Дата".
  5. В колонке "Выражение" укажем системную функцию, которая возвращает текущую дату и время: ТекущаяДата(). Это гарантирует, что при каждом формировании отчета параметр будет автоматически заполняться актуальным значением.
  6. Убедимся, что галочка "Включать в пользовательские настройки" не установлена, так как это параметр внутреннего использования и изменять его вручную нет необходимости.

После выполнения этих действий у нас появится параметр &ТекущаяДата, который мы сможем использовать в запросе или вычисляемых полях для динамического расчета условий.

Шаг 2: Создаем вычисляемое поле для определения близкого срока годности

Теперь нам необходимо создать вычисляемое поле, которое будет возвращать булево значение (Истина/Ложь) в зависимости от того, попадает ли товар в "зону 30 дней до окончания срока годности". Это вычисляемое поле станет основой для нашего условия в условном оформлении.

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

Вариант 1: Использование функции РАЗНОСТЬДАТ

Функция РАЗНОСТЬДАТ(<КонечнаяДата>, <НачальнаяДата>, <ТипЕдиницыИзмерения>) позволяет нам определить количество единиц измерения (например, дней) между двумя датами. Если разница между сроком годности и текущей датой меньше или равна 30 дням, наше условие истинно.

Выражение для поля СрокГодностиБлизко будет выглядеть так:


РАЗНОСТЬДАТ(Серия.ГоденДо, &ТекущаяДата, ДЕНЬ) <= 30

Разберем это выражение:

Вариант 2: Использование функции ДОБАВИТЬКДАТЕ

Функция ДОБАВИТЬКДАТЕ(<Дата>, <ТипЕдиницыИзмерения>, <Число>) позволяет добавить или вычесть определенное количество единиц измерения к заданной дате. Мы можем использовать ее, чтобы получить дату, которая наступит через 30 дней от текущей даты, и сравнить с ней срок годности товара.

Выражение для поля СрокГодностиБлизко будет выглядеть следующим образом:


Серия.ГоденДо <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, 30)

Проанализируем это выражение:

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

Шаг 3: Настраиваем условное оформление

После того как мы подготовили параметр и вычисляемое поле, остался последний и самый наглядный шаг – настроить само условное оформление в отчете.

  1. В конструкторе схемы компоновки данных перейдем на вкладку "Настройки".
  2. Выберем нужный вариант отчета (обычно "Основные настройки") и перейдем на подвкладку "Условное оформление".
  3. Нажмем кнопку "Добавить", чтобы создать новый элемент условного оформления.
  4. В разделе "Условие" (Отбор):

    1. Нажмем кнопку "Добавить" в таблице отборов.
    2. В колонке "Левое значение" выберем наше вычисляемое поле СрокГодностиБлизко.
    3. В колонке "Вид сравнения" выберем "Равно".
    4. В колонке "Правое значение" установим значение "Истина" (галочка).
  5. В разделе "Оформление":

    1. Нажмем кнопку с многоточием (...) рядом с полем "Оформление".
    2. Откроется стандартное окно настроек оформления. Здесь мы можем выбрать свойства, которые будут применяться. Для нашей задачи мы установим "Цвет фона".
    3. Выберем оранжевый цвет из палитры.
    4. Нажмем "ОК", чтобы закрыть окно оформления.
  6. В разделе "Оформляемые поля" (необязательно, но полезно для точности):

    Если мы хотим, чтобы оранжевым цветом выделялась не вся строка отчета, а только конкретные поля (например, само поле "ГоденДо" или "Наименование товара"), мы можем указать их здесь. Если это поле оставить пустым, оформление применится ко всему элементу отчета (например, к строке детализации).

    1. Нажмем кнопку "Добавить" и выберем поля, к которым хотим применить оформление. Например, Серия.ГоденДо и НаименованиеНоменклатуры.
  7. Нажмем "ОК", чтобы сохранить настройки условного оформления и закрыть конструктор схемы компоновки данных.

Заключение

Мы успешно рассмотрели, как настроить условное оформление в СКД для выделения товаров, срок годности которых истекает в ближайшие 30 дней. Использование параметра ТекущаяДата() и вычисляемого поля на основе функций РАЗНОСТЬДАТ или ДОБАВИТЬКДАТЕ позволяет создать гибкое и динамическое условие, которое будет корректно работать в ваших отчетах. Такой подход значительно повышает информативность отчетов, позволяя пользователям быстро выявлять критические позиции и принимать своевременные управленческие решения.

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

← На главную