Как в СКД отобразить квартал из даты в нужном формате?

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

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

Способ 1. Использование стандартных дополнительных полей

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

Разберем этот метод пошагово:

  1. Откройте схему компоновки данных и перейдите на вкладку «Настройки».
  2. Выберите вариант отчета или конкретную группировку.
  3. Перейдите на вкладку «Выбранные поля».
  4. Найдите ваше поле с датой (например, ДатаДокумента). Обратите внимание на иконку «плюс» слева от названия поля. Нажмите на неё.
  5. Система раскроет список доступных производных полей: «Год», «Квартал», «Месяц» и т.д.
  6. Выберите ДатаДокумента.Квартал.

Важное ограничение: Этот способ удобен для быстрой настройки, но он имеет существенный минус — формат вывода будет стандартным (просто цифра квартала), и вы не сможете легко изменить его на представление вида «III кв. 2023 г.». Кроме того, если вы хотите, чтобы поле было доступно сразу без лишних манипуляций пользователя, лучше использовать другие методы.

Способ 2. Получение квартала напрямую в запросе

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

Рассмотрим пример кода в тексте запроса:


ВЫБРАТЬ
    Продажи.Период КАК Дата,
    КВАРТАЛ(Продажи.Период) КАК НомерКвартала,
    НАЧАЛОПЕРИОДА(Продажи.Период, КВАРТАЛ) КАК НачалоКвартала
ИЗ
    РегистрНакопления.Продажи КАК Продажи

Здесь мы видим два подхода:

Способ 3. Тонкая настройка формата (Римские и арабские цифры)

Выясним, как заставить дату превратиться в красивую строку. Если вы использовали НАЧАЛОПЕРИОДА, то в СКД у этого поля можно настроить Оформление.

Перейдите на вкладку «Наборы данных», найдите ваше поле и в колонке «Оформление» нажмите на кнопку выбора. Нас интересует параметр «Формат». Рассмотрим строку формата подробнее:

  1. Если вы укажете ДФ='к "квартал" гггг', то получите результат: 1 квартал 2024.
  2. Если вы укажете ДФ='кк "квартал" гггг' (две буквы «к»), система выведет квартал римскими цифрами: I квартал 2024.

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

Способ 4. Выражение представления для сохранения сортировки

Это самый профессиональный способ решения проблемы. Часто программисты совершают ошибку, превращая дату в строку прямо в запросе через оператор ВЫБОР КОГДА. Это приводит к тому, что «I квартал 2024 года» в списке окажется раньше, чем «IV квартал 2023 года», так как строка «I» идет по алфавиту раньше «IV».

Чтобы этого избежать, выполним следующие шаги:

  1. В наборе данных оставьте поле как дату: НАЧАЛОПЕРИОДА(Дата, КВАРТАЛ).
  2. В колонке «Выражение представления» для этого поля напишите код:

Формат(ПериодКвартал, "ДФ='кк ""квартал"" гггг ""г.""'")

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

Способ 5. Функция ПредставлениеПериода

В СКД (в вычисляемых полях или выражениях представления) доступна встроенная функция ПредставлениеПериода. Проанализируем её синтаксис:

ПредставлениеПериода(НачалоКвартала, КонецКвартала, "ФП=Истина")

Параметры функции:

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

Способ 6. Условное оформление как быстрый метод

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

  1. Перейдите на вкладку «Настройки» -> «Условное оформление».
  2. Добавьте новый элемент оформления.
  3. В параметре «Формат» укажите уже знакомую нам строку: ДФ='кк "кв." гггг'.
  4. В «Оформляемых полях» выберите вашу дату.
  5. В «Условии» ничего не указывайте (тогда оформление применится ко всем записям).

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

Итоги

Подводя итог, можно сказать: для корректной работы отчета лучше всего использовать НАЧАЛОПЕРИОДА в запросе, сохраняя тип Дата, и настраивать визуальное отображение через Формат или Выражение представления. Помните о разнице между к и кк для выбора между арабскими и римскими цифрами — это мелочь, которая делает отчет гораздо более презентабельным.

← На главную