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

Отчеты и Аналитика · 9 мин

Как задать период в 1С: практическое руководство

Как задать период в 1С: в отчётах, журналах документов, обработках и программном коде. Настройка стандартных периодов, типовые ошибки и способы проверки результата.

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

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

Дальше разберём все основные сценарии: задание периода в отчётах, журналах документов, обработках, программном коде и запросах, а также типичные ошибки и способы проверить, что период установлен правильно.

Как задать период в отчёте через форму

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

Чтобы задать произвольный интервал, нажмите кнопку выбора рядом с полем периода (значок календаря или стрелка вниз). Откроется диалог, где можно ввести даты вручную в формате ДД.ММ.ГГГГ или выбрать их в календаре. После нажатия «ОК» или «Выбрать» отчёт нужно сформировать заново — автоматически он не пересчитывается.

Порядок действий в отчёте
  1. 1
    Откройте нужный отчёт из раздела учёта (например, «Оборотно-сальдовая ведомость»)
  2. 2
    Нажмите кнопку выбора рядом с полем периода
  3. 3
    Укажите дату начала и дату окончания или выберите стандартный период из списка
  4. 4
    Нажмите «Сформировать» и проверьте, что данные появились
  5. 5
    Если отчёт пуст — проверьте, не установлены ли дополнительные отборы, отсекающие данные

Обратите внимание: в отчётах на СКД (система компоновки данных) период может находиться в настройках. Если на форме полей периода нет, нажмите «Показать настройки» или кнопку «Настройки» — параметры «Начало периода» и «Конец периода» будут там. Иногда они скрыты, потому что кто-то сохранил вариант отчёта с урезанным набором видимых параметров.

Стандартные периоды: быстрый выбор без ручного ввода дат

Вместо ручного ввода дат 1С предлагает готовые варианты: сегодня, вчера, эта неделя, этот месяц, этот квартал, этот год, прошлый месяц, прошлый квартал и другие. Они доступны в диалоге выбора периода в виде выпадающего списка или кнопок.

Главное преимущество стандартного периода — он «скользящий». Если сохранить вариант отчёта с периодом «Этот месяц», то в следующем месяце отчёт автоматически покажет данные нового месяца. С жёстко зафиксированными датами пришлось бы каждый раз менять настройки вручную.

Для регламентных операций удобны периоды «Прошлый месяц» и «Прошлый квартал»: сверки, закрытие периода, формирование отчётности за прошедший интервал. Для оперативной работы — «Сегодня», «Эта неделя», «С начала месяца».

Как задать период в журнале документов

В списках документов (реализации, поступления, платёжные поручения) период задаётся через отбор. В большинстве конфигураций над списком есть поле «Период» или кнопка с датами. Если её нет, используйте «Ещё → Настроить список» или сочетание Ctrl+E (в некоторых конфигурациях — «Установить отбор и сортировку списка»).

В окне настройки найдите поле «Дата» и задайте условие. Обычно используют два условия, объединённых по «И»: «Дата больше или равна» началу интервала и «Дата меньше или равна» концу. Либо выберите вид сравнения «В интервале» или «В интервале (включая границы)», если он доступен.

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

Как задать период в обработках и при загрузке данных

Во внешних обработках (загрузка из Excel, выгрузка в банк, обмен с другими системами) период обычно задаётся парой полей «Дата начала» и «Дата окончания» на форме. Логика та же, что в отчётах, но здесь ошибка опаснее: обработка может не просто показать данные, а изменить их или выгрузить во внешнюю систему.

Перед запуском обработки, которая изменяет данные за период (групповое перепроведение, установка цен, свёртка остатков), убедитесь, что границы заданы именно так, как задумано. Безопасная практика — сначала запустить обработку на узком тестовом интервале, например за один день, и проверить результат на копии базы или на небольшом объёме.

Типичные ошибки
01
Конец периода задан как начало дня (00:00:00) — последний день не попадает в выборку, документы за него «теряются»
02
Период задан, но забыт дополнительный отбор по организации или складу — отчёт пустой, и пользователь ищет ошибку не там
03
В обработке группового перепроведения указан слишком широкий период — операция идёт долго и блокирует работу других пользователей
04
В сохранённом варианте отчёта зафиксированы жёсткие даты вместо стандартного периода — каждый месяц настройки приходится менять вручную

Как задать период программно: в коде и запросах

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

bsl
// Пример: отбор документов за текущий месяц
НачалоПериода = НачалоМесяца(ТекущаяДатаСеанса());
КонецПериода = КонецМесяца(ТекущаяДатаСеанса());

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);

Для передачи периода в отчёт на СКД удобен тип СтандартныйПериод: он хранит начало и конец интервала и вариант (произвольный или стандартный). В запросах вместо условия «МЕЖДУ» с двумя параметрами часто используют виртуальные таблицы регистров с параметрами периода — это быстрее, так как платформа сразу ограничивает читаемые итоги.

При работе с датами в коде учитывайте, что документы хранят дату с точностью до секунды. Сравнение «Дата = &КонецПериода» почти никогда не сработает корректно — используйте «МЕЖДУ» с КонецДня() или условие «меньше начала следующего дня».

Как проверить, что период задан правильно

Простейший способ — сформировать заведомо широкий период (например, весь год) и убедиться, что данные есть. Затем сузить интервал до нужного и сравнить итоги: сумма за месяц должна быть меньше или равна сумме за год. Если при сужении периода данные исчезают полностью — скорее всего, ошибка в границах или в дополнительном отборе.

Контрольные точки

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

Первый день периода
Норма

Документы за первый день присутствуют в отчёте или списке

Тревожный признак

Документы первого дня отсутствуют — проверьте, не задано ли начало позже 00:00:00

Последний день периода
Норма

Документы последнего дня видны в выборке

Тревожный признак

Последний день выпал — конец периода стоит на начало дня, замените на КонецДня() или 23:59:59

Итоговые суммы
Норма

Сумма за период сходится с контрольным отчётом (ОСВ, сверкой)

Тревожный признак

Расхождение на сумму операций крайних дат — границы периода смещены

Для журналов документов дополнительная проверка — счётчик количества строк или поиск конкретного документа по номеру. Если документ находится поиском, но не виден в списке, значит, его отсекает отбор по дате или другому полю.

Частые вопросы о задании периода в 1С

Почему отчёт пустой, хотя документы за этот период точно есть?

Чаще всего дело не в периоде, а в дополнительных отборах: по организации, складу, контрагенту или подразделению. Откройте настройки отчёта и временно отключите все отборы. Также проверьте, что документы проведены — непроведённые документы в большинство отчётов не попадают.

Как задать период «с начала года по сегодня»?

В диалоге выбора периода укажите начало вручную — 01.01 текущего года, а конец выберите как «Сегодня» или введите текущую дату. В коде используйте связку НачалоГода(ТекущаяДатаСеанса()) для начала и КонецДня(ТекущаяДатаСеанса()) для конца.

Чем стандартный период лучше ручного ввода дат?

Стандартный период «скользит» вместе с текущей датой: отчёт с периодом «Этот месяц» в новом месяце сам покажет новые данные. Жёстко заданные даты придётся менять каждый раз. Для регулярно используемых отчётов и сохранённых вариантов всегда выбирайте стандартные периоды.

Документ есть в базе, но не виден в журнале. Что делать?

Снимите все отборы командой «Ещё → Отключить отбор» или очисткой настроек списка. Если документ появился — постепенно возвращайте отборы, чтобы найти тот, который его отсекал. Чаще всего это отбор по дате, организации или автору.

Как задать период в запросе, чтобы не потерять последний день?

Используйте условие «МЕЖДУ &НачалоПериода И &КонецПериода», где конец периода вычислен через КонецДня() или КонецМесяца(). Альтернатива — условие «Дата < &СледующийДень», где следующий день — начало суток после последнего дня интервала. Оба варианта корректно включают документы до 23:59:59.

Можно ли ограничить пользователю доступный период?

Да, в типовых конфигурациях есть механизм дат запрета изменения данных (раздел «Администрирование → Поддержка и обслуживание» или настройки прав). Он не даёт создавать и изменять документы раньше заданной даты. Это защита закрытых периодов от случайных правок, а не настройка отбора.

Итог

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

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