Многие пользователи 1С сталкиваются с необходимостью наглядно представлять информацию о товарах, срок годности которых подходит к концу. Это особенно актуально для розничной торговли, складов и предприятий с активными продажами, где своевременное выявление таких позиций помогает предотвратить убытки и оптимизировать оборот. В нашей задаче мы рассмотрим, как настроить условное оформление в Системе Компоновки Данных (СКД) таким образом, чтобы товары, у которых до истечения срока годности осталось 30 дней или меньше, выделялись в отчете оранжевым цветом.
Изначально задача может показаться сложной, так как стандартные отборы СКД не всегда позволяют гибко работать с динамическими временными интервалами относительно текущей даты. Мы разберем по шагам, как использовать возможности СКД, включая вычисляемые поля и параметры, для создания такого сложного условия.
Прежде чем перейти к детальной настройке, давайте вспомним основные принципы условного оформления в СКД. Условное оформление позволяет нам изменить внешний вид элементов отчета (цвет текста, цвет фона, шрифт и т.д.) в зависимости от определенных условий. Настраивается оно на вкладке "Настройки" в конструкторе схемы компоновки данных, далее на подвкладке "Условное оформление".
Каждый элемент условного оформления состоит из двух основных частей:
Для нашей задачи нам нужно динамическое условие, которое будет пересчитываться при каждом формировании отчета, учитывая текущую дату. Именно для этого мы будем использовать параметры и вычисляемые поля.
Начнем с добавления параметра, который будет содержать текущую дату. Это критически важный шаг, так как он позволит нам сравнивать срок годности товара с актуальной датой, а не с какой-то фиксированной точкой во времени.
ТекущаяДата.ТекущаяДата(). Это гарантирует, что при каждом формировании отчета параметр будет автоматически заполняться актуальным значением.После выполнения этих действий у нас появится параметр &ТекущаяДата, который мы сможем использовать в запросе или вычисляемых полях для динамического расчета условий.
Теперь нам необходимо создать вычисляемое поле, которое будет возвращать булево значение (Истина/Ложь) в зависимости от того, попадает ли товар в "зону 30 дней до окончания срока годности". Это вычисляемое поле станет основой для нашего условия в условном оформлении.
СрокГодностиБлизко.Функция РАЗНОСТЬДАТ(<КонечнаяДата>, <НачальнаяДата>, <ТипЕдиницыИзмерения>) позволяет нам определить количество единиц измерения (например, дней) между двумя датами. Если разница между сроком годности и текущей датой меньше или равна 30 дням, наше условие истинно.
Выражение для поля СрокГодностиБлизко будет выглядеть так:
РАЗНОСТЬДАТ(Серия.ГоденДо, &ТекущаяДата, ДЕНЬ) <= 30
Разберем это выражение:
Серия.ГоденДо: Это наше поле, содержащее дату окончания срока годности товара.&ТекущаяДата: Это параметр, который мы создали на предыдущем шаге и который содержит актуальную текущую дату.ДЕНЬ: Указывает, что разницу нужно вычислять в днях.<= 30: Сравниваем полученную разницу с числом 30. Если дней до истечения срока годности осталось 30 или меньше (включая уже просроченные товары, для которых разница будет отрицательной или нулевой), выражение вернет Истина.Функция ДОБАВИТЬКДАТЕ(<Дата>, <ТипЕдиницыИзмерения>, <Число>) позволяет добавить или вычесть определенное количество единиц измерения к заданной дате. Мы можем использовать ее, чтобы получить дату, которая наступит через 30 дней от текущей даты, и сравнить с ней срок годности товара.
Выражение для поля СрокГодностиБлизко будет выглядеть следующим образом:
Серия.ГоденДо <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, 30)
Проанализируем это выражение:
Серия.ГоденДо: Поле со сроком годности товара.ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, 30): Эта часть вычисляет дату, которая наступит ровно через 30 дней от текущей даты.<=: Мы сравниваем срок годности товара с этой "будущей" датой. Если срок годности товара меньше или равен дате "сегодня + 30 дней", это означает, что до истечения срока годности осталось 30 дней или меньше, и выражение вернет Истина. Этот подход также корректно обрабатывает просроченные товары.Выберите любой из этих вариантов. Оба они приведут к желаемому результату, создав булево поле, которое будет использоваться в условном оформлении.
После того как мы подготовили параметр и вычисляемое поле, остался последний и самый наглядный шаг – настроить само условное оформление в отчете.
СрокГодностиБлизко.Если мы хотим, чтобы оранжевым цветом выделялась не вся строка отчета, а только конкретные поля (например, само поле "ГоденДо" или "Наименование товара"), мы можем указать их здесь. Если это поле оставить пустым, оформление применится ко всему элементу отчета (например, к строке детализации).
Серия.ГоденДо и НаименованиеНоменклатуры.Мы успешно рассмотрели, как настроить условное оформление в СКД для выделения товаров, срок годности которых истекает в ближайшие 30 дней. Использование параметра ТекущаяДата() и вычисляемого поля на основе функций РАЗНОСТЬДАТ или ДОБАВИТЬКДАТЕ позволяет создать гибкое и динамическое условие, которое будет корректно работать в ваших отчетах. Такой подход значительно повышает информативность отчетов, позволяя пользователям быстро выявлять критические позиции и принимать своевременные управленческие решения.
Всегда помните, что детальная проработка условий и полей в СКД открывает широкие возможности для анализа данных и повышения эффективности работы с информационной базой 1С.