Разработка и Конфигурация · 8 мин
Как определить квартал в 1С
Как определить квартал в 1С: функции языка запросов КВАРТАЛ, способы в коде, настройка периода в отчётах и типичные ошибки при работе с кварталами.
Определить квартал в 1С требуется в нескольких типовых ситуациях: при написании отчётов и запросов, при проверке корректности данных за налоговый период, при настройке отборов в списках документов и при программной разработке. В зависимости от задачи используются разные инструменты — от встроенных функций языка запросов до настроек периода в интерфейсе отчётов.
Единого «кнопочного» способа нет: бухгалтер определяет квартал через настройку периода отчёта, а разработчик — через функцию КВАРТАЛ в запросе или вычисление в коде. Ниже разобраны все рабочие варианты с указанием, где и когда каждый из них применим.
Определение квартала в языке запросов 1С
Основной инструмент — функция КВАРТАЛ(<Дата>). Она принимает значение типа Дата и возвращает целое число от 1 до 4: для дат с января по март — 1, с апреля по июнь — 2, с июля по сентябрь — 3, с октября по декабрь — 4.
Функцию можно использовать в произвольных полях запроса, в условиях ГДЕ и в группировках. Типичный пример — группировка продаж по кварталам:
ВЫБРАТЬ
КВАРТАЛ(Продажи.Период) КАК Квартал,
СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты КАК Продажи
СГРУППИРОВАТЬ ПО
КВАРТАЛ(Продажи.Период)Для отбора данных конкретного квартала в условии ГДЕ удобнее использовать функции НАЧАЛОПЕРИОДА(<Дата>, КВАРТАЛ) и КОНЕЦПЕРИОДА(<Дата>, КВАРТАЛ). Они возвращают границы квартала, в который попадает переданная дата, и позволяют не вычислять номер квартала вручную.
Определение квартала в коде на встроенном языке
В модуле объекта или формы используется функция Квартал(Дата) — она работает аналогично функции запроса и возвращает число от 1 до 4. Если функция недоступна в конкретном контексте (например, в тонком клиенте некоторых старых конфигураций), квартал вычисляют через месяц:
НомерКвартала = Цел((Месяц(ДатаДокумента) - 1) / 3) + 1;
// Для января (месяц 1) получим 1, для декабря (месяц 12) — 4Для получения дат начала и конца квартала в коде применяют функции НачалоКвартала(Дата) и КонецКвартала(Дата). Это стандартные функции глобального контекста, они корректно учитывают високосные годы и возвращают конец квартала с точностью до последней секунды (23:59:59), что важно при сравнении дат документов.
Как задать квартал в отчётах и списках документов
В типовых конфигурациях (1С:Бухгалтерия, 1С:ЗУП, Управление торговлей) период отчёта задаётся кнопкой выбора периода рядом с полями дат. В открывшейся форме есть вкладка или выпадающий список со стандартными вариантами: «1 квартал», «2 квартал», «3 квартал», «4 квартал», а также «Произвольный период».
- 1Откройте нужный отчёт, например «Оборотно-сальдовая ведомость»
- 2Нажмите кнопку выбора периода рядом с полями дат
- 3В списке стандартных периодов выберите нужный квартал и год
- 4Нажмите «Выбрать» и сформируйте отчёт
- 5Проверьте, что даты начала и конца соответствуют границам квартала
В динамических списках и журналах документов период настраивается через команду «Установить интервал дат» (обычно в меню «Ещё» или по кнопке с иконкой календаря). Там также доступны стандартные кварталы. Если нужного квартала нет в списке быстрых вариантов, переключитесь на произвольный период и введите даты вручную: 01.01–31.03, 01.04–30.06, 01.07–30.09, 01.10–31.12.
Квартал в СКД и настройках отчётов
В отчётах на системе компоновки данных квартал можно вывести как отдельное поле группировки. Для этого в настройках отчёта (кнопка «Ещё» → «Изменить вариант» или «Настройки») добавьте группировку по полю, вычисляемому через выражение Квартал(Период), либо используйте поле периода с установленной периодичностью «Квартал».
Многие типовые отчёты уже содержат предопределённые поля периодичности: «Период месяц», «Период квартал», «Период год». Достаточно перетащить нужное поле в группировки строк — данные будут свёрнуты по кварталам без изменения запроса.
Способы определить квартал
Для разработчиков: группировки, отборы, вычисляемые поля. Требует доступа к консоли запросов или конфигуратору.
Для модулей и обработок. Возвращает номер квартала или его границы как даты.
Для пользователей отчётов и журналов. Не требует знания языка, но ограничен предустановленными вариантами.
Для настройки отчётов без изменения кода. Работает только если поле периодичности доступно в наборе данных.
Проверка результата и типичные ошибки
После определения квартала результат стоит проверить на контрольном примере: возьмите документ с известной датой и убедитесь, что он попал в ожидаемый квартал. Особое внимание — граничным датам: 31 марта, 30 июня, 30 сентября и 31 декабря.
Как проверить результат
01.02 даёт 1, 15.05 даёт 2, 20.08 даёт 3, 31.12 даёт 4
Граничные месяцы (март, июнь, сентябрь, декабрь) попадают не в тот квартал
Начало — первый день квартала 00:00:00, конец — последний день 23:59:59
Конец периода стоит на начало последнего дня, документы за этот день теряются
Число групп не превышает 4 на один год, суммы сходятся с помесячной группировкой
Появляется пятая группа с пустой датой или итоги не сходятся
Когда квартал определяется не от даты документа
В учётных задачах квартал иногда нужно определить не по дате документа, а по дате операции, периоду регистрации или периоду начисления. Например, в зарплатных отчётах квартал берётся от периода начисления, а не от даты выплаты; в налоговых отчётах — от налогового периода, указанного в документе.
Всегда уточняйте, какое именно поле даты участвует в расчёте. В запросе это означает применение функции КВАРТАЛ к нужному полю: КВАРТАЛ(Начисления.ПериодДействия), а не к дате документа. Ошибка в выборе поля — частая причина расхождения отчётов с регламентированной отчётностью.
FAQ
Что вернёт функция КВАРТАЛ для пустой даты?
Для пустой даты (01.01.0001) функция вернёт 1, поскольку месяц такой даты — январь. Чтобы пустые даты не искажали группировку, добавьте в запрос условие ГДЕ Дата <> ДАТАВРЕМЯ(1,1,1) или обработайте такие записи отдельно.
Как получить строку «2 квартал 2026» вместо числа?
Функция КВАРТАЛ возвращает только число. Строковое представление формируют вручную: соединяют номер квартала со словом «квартал» и значением ГОД(Дата) через строковую конкатенацию в коде или через ВЫБОР в запросе.
Можно ли определить квартал без программирования?
Да. В отчётах и журналах документов достаточно выбрать стандартный период «1 квартал» — «4 квартал» через кнопку установки интервала дат. Программирование требуется только для доработки отчётов, обработок и произвольных запросов.
Чем НАЧАЛОПЕРИОДА с параметром КВАРТАЛ отличается от функции КВАРТАЛ?
КВАРТАЛ возвращает номер квартала (число 1–4), а НАЧАЛОПЕРИОДА(Дата, КВАРТАЛ) возвращает дату начала этого квартала. Первая нужна для нумерации и группировки, вторая — для отбора данных по границам периода.
Почему документ за 31 марта не попал в отчёт за первый квартал?
Чаще всего конец периода задан как 31.03 00:00:00 — начало дня, а не его конец. Документ, проведённый днём 31 марта, оказывается позже границы. Используйте функцию КонецКвартала или КонецДня, либо выбирайте стандартный период в интерфейсе.
Что важно запомнить
В запросах квартал определяется функцией КВАРТАЛ(Дата), в коде — Квартал(Дата), НачалоКвартала и КонецКвартала, в интерфейсе — выбором стандартного периода. Всегда проверяйте граничные даты и убеждайтесь, что квартал считается от нужного поля даты.