К статье
Практический материал

Разработка и Конфигурация · 8 мин

Как определить квартал в 1С

Как определить квартал в 1С: функции языка запросов КВАРТАЛ, способы в коде, настройка периода в отчётах и типичные ошибки при работе с кварталами.

Определить квартал в 1С требуется в нескольких типовых ситуациях: при написании отчётов и запросов, при проверке корректности данных за налоговый период, при настройке отборов в списках документов и при программной разработке. В зависимости от задачи используются разные инструменты — от встроенных функций языка запросов до настроек периода в интерфейсе отчётов.

Единого «кнопочного» способа нет: бухгалтер определяет квартал через настройку периода отчёта, а разработчик — через функцию КВАРТАЛ в запросе или вычисление в коде. Ниже разобраны все рабочие варианты с указанием, где и когда каждый из них применим.

Определение квартала в языке запросов 1С

Основной инструмент — функция КВАРТАЛ(<Дата>). Она принимает значение типа Дата и возвращает целое число от 1 до 4: для дат с января по март — 1, с апреля по июнь — 2, с июля по сентябрь — 3, с октября по декабрь — 4.

Функцию можно использовать в произвольных полях запроса, в условиях ГДЕ и в группировках. Типичный пример — группировка продаж по кварталам:

bsl
ВЫБРАТЬ
	КВАРТАЛ(Продажи.Период) КАК Квартал,
	СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
	РегистрНакопления.Продажи.Обороты КАК Продажи
СГРУППИРОВАТЬ ПО
	КВАРТАЛ(Продажи.Период)

Для отбора данных конкретного квартала в условии ГДЕ удобнее использовать функции НАЧАЛОПЕРИОДА(<Дата>, КВАРТАЛ) и КОНЕЦПЕРИОДА(<Дата>, КВАРТАЛ). Они возвращают границы квартала, в который попадает переданная дата, и позволяют не вычислять номер квартала вручную.

Определение квартала в коде на встроенном языке

В модуле объекта или формы используется функция Квартал(Дата) — она работает аналогично функции запроса и возвращает число от 1 до 4. Если функция недоступна в конкретном контексте (например, в тонком клиенте некоторых старых конфигураций), квартал вычисляют через месяц:

bsl
НомерКвартала = Цел((Месяц(ДатаДокумента) - 1) / 3) + 1;
// Для января (месяц 1) получим 1, для декабря (месяц 12) — 4

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

Как задать квартал в отчётах и списках документов

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

Как выбрать квартал в отчёте
  1. 1
    Откройте нужный отчёт, например «Оборотно-сальдовая ведомость»
  2. 2
    Нажмите кнопку выбора периода рядом с полями дат
  3. 3
    В списке стандартных периодов выберите нужный квартал и год
  4. 4
    Нажмите «Выбрать» и сформируйте отчёт
  5. 5
    Проверьте, что даты начала и конца соответствуют границам квартала

В динамических списках и журналах документов период настраивается через команду «Установить интервал дат» (обычно в меню «Ещё» или по кнопке с иконкой календаря). Там также доступны стандартные кварталы. Если нужного квартала нет в списке быстрых вариантов, переключитесь на произвольный период и введите даты вручную: 01.01–31.03, 01.04–30.06, 01.07–30.09, 01.10–31.12.

Квартал в СКД и настройках отчётов

В отчётах на системе компоновки данных квартал можно вывести как отдельное поле группировки. Для этого в настройках отчёта (кнопка «Ещё» → «Изменить вариант» или «Настройки») добавьте группировку по полю, вычисляемому через выражение Квартал(Период), либо используйте поле периода с установленной периодичностью «Квартал».

Многие типовые отчёты уже содержат предопределённые поля периодичности: «Период месяц», «Период квартал», «Период год». Достаточно перетащить нужное поле в группировки строк — данные будут свёрнуты по кварталам без изменения запроса.

Способы определить квартал

Функция КВАРТАЛ в запросе

Для разработчиков: группировки, отборы, вычисляемые поля. Требует доступа к консоли запросов или конфигуратору.

Функции Квартал, НачалоКвартала в коде

Для модулей и обработок. Возвращает номер квартала или его границы как даты.

Стандартный период в интерфейсе

Для пользователей отчётов и журналов. Не требует знания языка, но ограничен предустановленными вариантами.

Периодичность в СКД

Для настройки отчётов без изменения кода. Работает только если поле периодичности доступно в наборе данных.

Проверка результата и типичные ошибки

После определения квартала результат стоит проверить на контрольном примере: возьмите документ с известной датой и убедитесь, что он попал в ожидаемый квартал. Особое внимание — граничным датам: 31 марта, 30 июня, 30 сентября и 31 декабря.

Типичные ошибки
01
Сравнение даты документа с концом квартала без учёта времени: документ проведён 31.03 в 18:00, а граница задана как 31.03 00:00:00 — документ выпадает из выборки
02
Путаница между кварталом и налоговым периодом при доначислениях: корректировочные документы могут относиться к прошлому кварталу, хотя датированы текущим
03
Ручной расчёт номера квартала с ошибкой в формуле: деление Месяц(Дата)/3 без сдвига даёт неверный результат для марта и июня
04
Использование КВАРТАЛ для поля, содержащего пустую дату (01.01.0001): функция вернёт 1, что исказит группировку
Контрольные точки

Как проверить результат

Номер квартала для контрольной даты
Норма

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 марта, оказывается позже границы. Используйте функцию КонецКвартала или КонецДня, либо выбирайте стандартный период в интерфейсе.

Итог

Что важно запомнить

В запросах квартал определяется функцией КВАРТАЛ(Дата), в коде — Квартал(Дата), НачалоКвартала и КонецКвартала, в интерфейсе — выбором стандартного периода. Всегда проверяйте граничные даты и убеждайтесь, что квартал считается от нужного поля даты.