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

Мы рассмотрим не только базовые способы (через интерфейс и конструкторы), но и продвинутые методы — работу с периодами в запросах 1С, настройку динамических дат в отчетах, а также типичные ошибки, которые допускают пользователи. Особое внимание уделим периодам с плавающими датами (например,"последний квартал"), которые часто вызывают сложности у новичков.

Статья актуальна для 1С:Предприятие 8.3 (всех конфигураций на управляемых формах), но большинство приемов применимы и к более ранним версиям. Если вы работаете с 1С:Бухгалтерия 3.0, 1С:Зарплата и Управление Персоналом или 1С:Управление Торговлей — здесь найдете ответы на свои вопросы.

1. Базовые способы задания периода в интерфейсе 1С

Самый простой способ указать период — через стандартные формы отчетов и документов. Рассмотрим, где именно можно встретить поля для ввода дат и как их правильно заполнять.

В большинстве отчетов (например, Оборотно-сальдовая ведомость, Анализ счета) поле периода находится в верхней части формы. Оно может выглядеть как:

  • 📅 Период с… по… — два отдельных поля для начала и конца интервала.
  • 🗓️ Период — одно поле с выпадающим календарем (чаще в новых версиях).
  • Текущий период — кнопка для автоматического заполнения (например,"текущий месяц").

Чтобы задать период:

  1. Откройте нужный отчет (например, через Отчеты → Стандартные отчеты → Оборотно-сальдовая ведомость).
  2. В поле"Период с" укажите начальную дату (кликните по календарю или введите вручную в формате ДД.ММ.ГГГГ).
  3. В поле"по" укажите конечную дату. Если поле одно, выберите тип периода (день, месяц, квартал) из выпадающего списка.
  4. Нажмите Сформировать.

Указан ли год в датах (частая ошибка — пропуск года)|

Начальная дата не позже конечной|

Период не выходит за пределы рабочего года (для бухгалтерских отчетов)|

Учтена ли временная зона (актуально для распределенных баз)

-->

В документах (например, Поступление товаров или Начисление зарплаты) период часто задается одной датой — датой документа. Она автоматически влияет на:

  • 📊 Принадлежность к отчетному периоду (месяцу, кварталу).
  • 🔄 Порядок проведения (документы проводятся в хронологическом порядке).
  • 📈 Включение в регистры накопления и бухгалтерские итоги.
⚠️ Внимание: Если дата документа попадает в закрытый период (например, прошлый год), система может заблокировать проведение. Чтобы исправить это, потребуется открыть период в настройках учетной политики или через администратора.

2. Периоды в отчетах: тонкости и скрытые возможности

Отчеты в позволяют гибко настраивать периоды, но не все пользователи знают о дополнительных функциях. Например, можно:

  • 🔄 Сравнивать периоды (например,"текущий месяц vs прошлый месяц").
  • 📅 Использовать плавающие даты (НачалоМесяца(ТекущаяДата)).
  • 🔍 Задавать периоды относительно других дат (например,"30 дней назад от даты документа").

Рассмотрим на примере Оборотно-сальдовой ведомости:

  1. Откройте отчет и перейдите на закладку Показатели.
  2. В разделе"Период" выберите Произвольный период.
  3. Активируйте опцию Сравнить с и укажите второй период (например, предыдущий месяц).
  4. В результатах появится колонка с отклонениями.
Тип периода Пример ввода Где применяется Особенности
Фиксированный 01.01.2026 - 31.01.2026 Отчеты, документы Точные даты, без динамики
Плавающий НачалоКвартала(ТекущаяДата) Автоматические обработки Меняется при каждом открытии
Относительный ТекущаяДата - 30 Аналитика, контроль Зависит от текущей даты
Сравнительный Текущий месяц vs прошлый месяц Анализ динамики Требует двух периодов

Для бухгалтерских отчетов (например, Баланс или Отчет о финансовых результатах) период часто привязан к учетной политике. Если в настройках указан"рабочий год с января по декабрь", то попытка сформировать отчет за декабрь 2023 — январь 2026 может привести к ошибке.

Никогда|

Редко (раз в квартал)|

Часто (ежемесячно)|

Постоянно (ежедневно)

-->

⚠️ Внимание: В некоторых конфигурациях (например, 1С:ERP) при формировании отчетов за длительные периоды (более года) может срабатывать ограничение по объему данных. В этом случае разбейте запрос на несколько более коротких интервалов.

3. Программное задание периода: язык запросов и 1С-скрипты

Для автоматизации или создания кастомных отчетов периоды часто задаются через язык запросов 1С или встроенный 1С-скрипт. Это позволяет гибко управлять датами без ручного ввода.

Основные конструкции для работы с периодами в запросах:

  • 📌 ГДЕ Дата МЕЖДУ &НачалоПериода И &КонецПериода — классический интервал.
  • 📌 ГДЕ ГОД(Дата) = 2026 — фильтрация по году.
  • 📌 ГДЕ МЕСЯЦ(Дата) = 1 — фильтрация по месяцу (январь).
  • 📌 ГДЕ Дата >= НачалоДня(ТекущаяДата) — текущий день с начала суток.

Пример запроса для выборки документов за текущий квартал:

ВЫБРАТЬ

Документ.Ссылка КАК Ссылка,

Документ.Дата КАК Дата

ИЗ

Документ.ПоступлениеТоваров КАК Документ

ГДЕ

Документ.Дата МЕЖДУ НачалоКвартала(ТекущаяДата) И КонецКвартала(ТекущаяДата)

В 1С-скриптах (например, в обработках или отчетах) периоды можно задавать с помощью функций:

  • ТекущаяДата — текущая дата системы.
  • НачалоМесяца(Дата), КонецМесяца(Дата) — границы месяца.
  • ДобавитьМесяц(Дата, -1) — откат на месяц назад.
  • Дата(2026, 1, 1) — создание даты из год/месяц/день.

Пример кода для динамического периода"последние 30 дней":

НачалоПериода = ТекущаяДата - 30;

КонецПериода = ТекущаяДата;

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Документ.Ссылка КАК Ссылка

|ИЗ

| Документ.РеализацияТоваровУслуг КАК Документ

|ГДЕ

| Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода";

Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);

Запрос.УстановитьПараметр("КонецПериода", КонецПериода);

💡

Чтобы избежать ошибок с временными зонами в распределенных базах, используйте функцию НачалоДня для обнуления времени. Например: НачалоДня(ТекущаяДата) вместо ТекущаяДата.

4. Периоды в регистрах накопления и бухгалтерских итогах

Регистры накопления и бухгалтерские итоги в хранят данные с привязкой к периодам. Неправильная настройка может привести к:

  • 🔢 Искажению остатков (если период закрыт некорректно).
  • 📉 Потере данных (при сбросе итогов).
  • ⚠️ Ошибкам проведения (если дата документа вне открытого периода).

Чтобы проверить или изменить периоды для регистров:

  1. Перейдите в Администрирование → Поддержка и обслуживание → Регламентные операции.
  2. Выберите Закрытие месяца или Обновление итогов.
  3. Укажите период, за который нужно пересчитать итоги.
  4. Нажмите Выполнить.

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

  • 🔒 Новые документы с датой из закрытого периода проводиться не будут.
  • 📊 Отчеты за этот период формируются только по уже проведенным данным.
  • 🔄 Для внесения изменений потребуется открыть период через Учетная политика.
⚠️ Внимание: В конфигурациях с регламентированным учетом (например, 1С:Бухгалтерия) закрытие периода может блокировать не только проведение документов, но и редактирование справочников (например, изменение ставок НДС).
Как открыть закрытый период в 1С?

1. Перейдите в Главное → Учетная политика → Настройки учета.

2. Найдите раздел"Закрытие периодов" (название может отличаться в зависимости от конфигурации).

3. Снимите флажок"Запретить изменение данных" для нужного периода.

4. Сохраните изменения.

⚠️ После открытия периода рекомендуется перепровести все документы за этот интервал!

5. Типичные ошибки при работе с периодами и как их избежать

Даже опытные пользователи иногда допускают ошибки при работе с периодами. Вот самые распространенные:

Ошибка Причина Как исправить
Период не сохраняется в отчете Не нажата кнопка"Сформировать" или"Применить" Всегда подтверждайте изменения кнопкой Сформировать
Данные не попадают в отчет Неверно указан интервал (например, год пропущен) Проверьте формат даты (ДД.ММ.ГГГГ)
Ошибка"Период закрыт" Документ проводится в закрытом месяце Откройте период в учетной политике или измените дату документа
Разные итоги в отчетах Периоды в отчетах не синхронизированы Используйте одинаковый интервал для всех связанных отчетов

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

  • 🕒 Временные зоны на серверах синхронизированы.
  • 📅 Периоды закрытия совпадают во всех базах.
  • 🔄 Обмен данными настроен с учетом временных сдвигов.

Для проверки корректности периодов в базе можно использовать тестовое задание:

  1. Создайте тестовый документ с датой на границе периода (например, 31.12.2023).
  2. Попробуйте провести его.
  3. Проверьте, попал ли он в отчеты за 2023 и 2026 годы.
💡

Всегда проверяйте периоды в отчетах на стыках годов и кварталов — это самые проблемные зоны, где чаще всего возникают ошибки.

6. Автоматизация работы с периодами: обработки и внешние отчеты

Если вам часто приходится работать с одними и теми же периодами, можно автоматизировать процесс с помощью внешних обработок или дополнительных отчетов. Например, создать обработку, которая:

  • 📅 Автоматически подставляет"текущий месяц минус 1".
  • 🔄 Сравнивает данные за два произвольных периода.
  • 📊 Экспортирует отчеты за заданный интервал в Excel.

Пример кода для обработки, которая формирует отчет за прошлый месяц:

Процедура СформироватьОтчетЗаПрошлыйМесяц(Команда)

НачалоПериода = НачалоМесяца(ДобавитьМесяц(ТекущаяДата, -1));

КонецПериода = КонецМесяца(ДобавитьМесяц(ТекущаяДата, -1));

Отчет = Отчеты.ОборотноСальдоваяВедомость.Создать;

Отчет.Период.Начало = НачалоПериода;

Отчет.Период.Конец = КонецПериода;

Отчет.Сформировать;

Отчет.Показать;

КонецПроцедуры

Для более сложных задач (например, ежемесячной отправки отчетов по email) можно использовать регламентные задания:

  1. Перейдите в Администрирование → Регламентные задания.
  2. Создайте новое задание типа"Формирование отчета".
  3. Укажите расписание (например,"1-е число каждого месяца").
  4. В параметрах задания настройте период отчета (например,"прошлый месяц").

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

  • 📌 Начальную и конечную дату.
  • 📌 Флаг"сравнить с предыдущим периодом".
  • 📌 Список счетов/контрагентов для фильтрации.
⚠️ Внимание: При использовании внешних обработок убедитесь, что они совместимы с вашей версией 1С:Предприятие. Некоторые обработки, написанные для 1С 8.2, могут не работать в 8.3 из-за изменений в платформе.

7. Периоды в обменах данными и интеграциях

При настройке обменов данными (например, между 1С:Бухгалтерия и 1С:Зарплата или с внешними системами) периоды играют ключевую роль. Неправильная настройка может привести к:

  • 🔄 Дублированию данных (если период перекрывается).
  • 📥 Потере записей (если период слишком узкий).
  • ⚠️ Ошибкам синхронизации (если временные зоны не учтены).

Основные правила настройки периодов в обменах:

  1. В обмена укажите начальную дату (с какой даты начинать выгрузку).
  2. Для регулярных обменов настройте инкрементальную выгрузку (только новые/измененные данные).
  3. Убедитесь, что периоды в источниках и приемниках данных совпадают.

Пример настройки обмена между 1С:Управление Торговлей и 1С:Бухгалтерия:

  • В УТ перейдите в Администрирование → Обмен данными.
  • Выберите узел обмена с Бухгалтерией.
  • В настройках укажите:
    • 📅 Период выгрузки (например, с 01.01.2026).
    • 🔄 Режим обмена ("Выгружать только изменения").
    • 🕒 Временная зона (если серверы в разных регионах).

Для обменов с внешними системами (например, через REST API или 1C:EDI) периоды часто передаются в параметрах запроса. Пример:

GET /api/documents?dateFrom=2026-01-01&dateTo=2026-01-31

Headers:

Authorization: Bearer {token}

Accept: application/json

⚠️ Внимание: При обменах с банками или госсистемами (например, Диадок, СБИС) формат дат может отличаться. Например, вместо ДД.ММ.ГГГГ потребуется ГГГГ-ММ-ДД. Всегда уточняйте требования в документации к API.

8. Продвинутые приемы: динамические периоды и аналитика

Для аналитических задач стандартных периодов (месяц, квартал) может быть недостаточно. Рассмотрим несколько продвинутых приемов:

1. Плавающие периоды (например,"последние 90 дней" или"текущий год минус 1"):

// Последние 90 дней

НачалоПериода = ТекущаяДата - 90;

// Текущий год минус 1

НачалоПериода = Дата(Год(ТекущаяДата) - 1, 1, 1);

КонецПериода = Дата(Год(ТекущаяДата) - 1, 12, 31);

2. Периоды относительно рабочих дней (например,"5 рабочих дней назад"):

Функция РабочиеДниНазад(Дата, КоличествоДней)

ТекущаяДата = Дата;

Счетчик = 0;

Пока Счетчик < КоличествоДней Цикл

ТекущаяДата = ТекущаяДата - 1;

Если НЕ ТекущаяДата.ДеньНедели = 6 И НЕ ТекущаяДата.ДеньНедели = 7 Тогда

Счетчик = Счетчик + 1;

КонецЕсли;

КонецЦикла;

Возврат ТекущаяДата;

КонецФункции

НачалоПериода = РабочиеДниНазад(ТекущаяДата, 5);

3. Периоды по условию (например,"до даты последнего документа"):

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| МАКСИМУМ(Документ.Дата) КАК ПоследняяДата

|ИЗ

| Документ.ПоступлениеТоваров КАК Документ";

Результат = Запрос.Выполнить;

ПоследняяДата = Результат.Выбрать.ПоследняяДата;

НачалоПериода = Дата(Год(ПоследняяДата), Месяц(ПоследняяДата), 1);

4. Агрегация по нестандартным периодам (например,"неделя с понедельника" вместо календарной недели):

Функция НачалоНедели(Дата)

ДеньНедели = Дата.ДеньНедели;

Если ДеньНедели = 1 Тогда // Понедельник

Возврат Дата;

Иначе

Возврат Дата - (ДеньНедели - 1);

КонецЕсли;

КонецФункции

НачалоПериода = НачалоНедели(ТекущаяДата);

КонецПериода = НачалоПериода + 6;

💡

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

FAQ: Частые вопросы по периодам в 1С

1. Как задать период"с начала года по текущую дату"?

Используйте конструкцию:

НачалоПериода = Дата(Год(ТекущаяДата), 1, 1);

КонецПериода = ТекущаяДата;

2. Почему в отчете не показываются данные за прошлый год?

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

3. Как сделать, чтобы период в отчете автоматически устанавливался как"прошлый месяц"?

В настройках отчета используйте выражение:

НачалоПериода = НачалоМесяца(ДобавитьМесяц(ТекущаяДата, -1));

КонецПериода = КонецМесяца(ДобавитьМесяц(ТекущаяДата, -1));

4. Можно ли в 1С задать период в формате"последние 3 квартала"?

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

Функция ПоследниеКварталы(Количество)

ТекущийКвартал = Квартал(ТекущаяДата);

ТекущийГод = Год(ТекущаяДата);

Результат = Новый Массив;

Для Счетчик = 0 По Количество - 1 Цикл

Квартал = ТекущийКвартал - Счетчик;

Год = ТекущийГод;

Если Квартал < 1 Тогда

Квартал = 4;

Год = Год - 1;

КонецЕсли;

Начало = НачалоКвартала(Дата(Год, МесяцНачалаКвартала(Квартал), 1));

Конец = КонецКвартала(Начало);

Результат.Добавить(Новый Структура("Начало, Конец", Начало, Конец));

КонецЦикла;

Возврат Результат;

КонецФункции

5. Как экспортировать данные за период в Excel с сохранением формата дат?

Используйте метод Записать с параметром формата:

ТаблицаДокумент = Новый ТаблицаДокумент;

ТаблицаДокумент.Вывести(Отчет.Результат);

Настройки = Новый Соответствие;

Настройки.Вставить("ФорматДат","ДД.ММ.ГГГГ");

ТаблицаДокумент.Записать(ПутьКФайлу, ТипФайлаТаблицыДокумента.Excel, Настройки);