Работа с периодами в 1С:Предприятие — одна из самых частых задач, с которой сталкиваются бухгалтеры, кадровики и администраторы системы. Неправильно указанный интервал может привести к искажению отчетности, ошибкам в расчетах или даже потере данных. Эта статья поможет разобраться, как корректно задавать периоды в разных разделах программы: от стандартных отчетов до программного кода.
Мы рассмотрим не только базовые способы (через интерфейс и конструкторы), но и продвинутые методы — работу с периодами в запросах 1С, настройку динамических дат в отчетах, а также типичные ошибки, которые допускают пользователи. Особое внимание уделим периодам с плавающими датами (например,"последний квартал"), которые часто вызывают сложности у новичков.
Статья актуальна для 1С:Предприятие 8.3 (всех конфигураций на управляемых формах), но большинство приемов применимы и к более ранним версиям. Если вы работаете с 1С:Бухгалтерия 3.0, 1С:Зарплата и Управление Персоналом или 1С:Управление Торговлей — здесь найдете ответы на свои вопросы.
1. Базовые способы задания периода в интерфейсе 1С
Самый простой способ указать период — через стандартные формы отчетов и документов. Рассмотрим, где именно можно встретить поля для ввода дат и как их правильно заполнять.
В большинстве отчетов (например, Оборотно-сальдовая ведомость, Анализ счета) поле периода находится в верхней части формы. Оно может выглядеть как:
- 📅 Период с… по… — два отдельных поля для начала и конца интервала.
- 🗓️ Период — одно поле с выпадающим календарем (чаще в новых версиях).
- ⏳ Текущий период — кнопка для автоматического заполнения (например,"текущий месяц").
Чтобы задать период:
- Откройте нужный отчет (например, через
Отчеты → Стандартные отчеты → Оборотно-сальдовая ведомость). - В поле"Период с" укажите начальную дату (кликните по календарю или введите вручную в формате
ДД.ММ.ГГГГ). - В поле"по" укажите конечную дату. Если поле одно, выберите тип периода (день, месяц, квартал) из выпадающего списка.
- Нажмите
Сформировать.
Указан ли год в датах (частая ошибка — пропуск года)|
Начальная дата не позже конечной|
Период не выходит за пределы рабочего года (для бухгалтерских отчетов)|
Учтена ли временная зона (актуально для распределенных баз)
-->
В документах (например, Поступление товаров или Начисление зарплаты) период часто задается одной датой — датой документа. Она автоматически влияет на:
- 📊 Принадлежность к отчетному периоду (месяцу, кварталу).
- 🔄 Порядок проведения (документы проводятся в хронологическом порядке).
- 📈 Включение в регистры накопления и бухгалтерские итоги.
⚠️ Внимание: Если дата документа попадает в закрытый период (например, прошлый год), система может заблокировать проведение. Чтобы исправить это, потребуется открыть период в настройках учетной политики или через администратора.
2. Периоды в отчетах: тонкости и скрытые возможности
Отчеты в 1С позволяют гибко настраивать периоды, но не все пользователи знают о дополнительных функциях. Например, можно:
- 🔄 Сравнивать периоды (например,"текущий месяц vs прошлый месяц").
- 📅 Использовать плавающие даты (
НачалоМесяца(ТекущаяДата)). - 🔍 Задавать периоды относительно других дат (например,"30 дней назад от даты документа").
Рассмотрим на примере Оборотно-сальдовой ведомости:
- Откройте отчет и перейдите на закладку
Показатели. - В разделе"Период" выберите
Произвольный период. - Активируйте опцию
Сравнить си укажите второй период (например, предыдущий месяц). - В результатах появится колонка с отклонениями.
| Тип периода | Пример ввода | Где применяется | Особенности |
|---|---|---|---|
| Фиксированный | 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С хранят данные с привязкой к периодам. Неправильная настройка может привести к:
- 🔢 Искажению остатков (если период закрыт некорректно).
- 📉 Потере данных (при сбросе итогов).
- ⚠️ Ошибкам проведения (если дата документа вне открытого периода).
Чтобы проверить или изменить периоды для регистров:
- Перейдите в
Администрирование → Поддержка и обслуживание → Регламентные операции. - Выберите
Закрытие месяцаилиОбновление итогов. - Укажите период, за который нужно пересчитать итоги.
- Нажмите
Выполнить.
Для бухгалтерских итогов критично следить за периодами закрытия. Например, если месяц закрыт, то:
- 🔒 Новые документы с датой из закрытого периода проводиться не будут.
- 📊 Отчеты за этот период формируются только по уже проведенным данным.
- 🔄 Для внесения изменений потребуется открыть период через
Учетная политика.
⚠️ Внимание: В конфигурациях с регламентированным учетом (например, 1С:Бухгалтерия) закрытие периода может блокировать не только проведение документов, но и редактирование справочников (например, изменение ставок НДС).
Как открыть закрытый период в 1С?
1. Перейдите в Главное → Учетная политика → Настройки учета.
2. Найдите раздел"Закрытие периодов" (название может отличаться в зависимости от конфигурации).
3. Снимите флажок"Запретить изменение данных" для нужного периода.
4. Сохраните изменения.
⚠️ После открытия периода рекомендуется перепровести все документы за этот интервал!
5. Типичные ошибки при работе с периодами и как их избежать
Даже опытные пользователи 1С иногда допускают ошибки при работе с периодами. Вот самые распространенные:
| Ошибка | Причина | Как исправить |
|---|---|---|
| Период не сохраняется в отчете | Не нажата кнопка"Сформировать" или"Применить" | Всегда подтверждайте изменения кнопкой Сформировать |
| Данные не попадают в отчет | Неверно указан интервал (например, год пропущен) | Проверьте формат даты (ДД.ММ.ГГГГ) |
| Ошибка"Период закрыт" | Документ проводится в закрытом месяце | Откройте период в учетной политике или измените дату документа |
| Разные итоги в отчетах | Периоды в отчетах не синхронизированы | Используйте одинаковый интервал для всех связанных отчетов |
Еще одна частая проблема — несовпадение периодов в распределенных базах. Если у вас несколько филиалов с отдельными базами, убедитесь, что:
- 🕒 Временные зоны на серверах синхронизированы.
- 📅 Периоды закрытия совпадают во всех базах.
- 🔄 Обмен данными настроен с учетом временных сдвигов.
Для проверки корректности периодов в базе можно использовать тестовое задание:
- Создайте тестовый документ с датой на границе периода (например,
31.12.2023). - Попробуйте провести его.
- Проверьте, попал ли он в отчеты за 2023 и 2026 годы.
Всегда проверяйте периоды в отчетах на стыках годов и кварталов — это самые проблемные зоны, где чаще всего возникают ошибки.
6. Автоматизация работы с периодами: обработки и внешние отчеты
Если вам часто приходится работать с одними и теми же периодами, можно автоматизировать процесс с помощью внешних обработок или дополнительных отчетов. Например, создать обработку, которая:
- 📅 Автоматически подставляет"текущий месяц минус 1".
- 🔄 Сравнивает данные за два произвольных периода.
- 📊 Экспортирует отчеты за заданный интервал в Excel.
Пример кода для обработки, которая формирует отчет за прошлый месяц:
Процедура СформироватьОтчетЗаПрошлыйМесяц(Команда)
НачалоПериода = НачалоМесяца(ДобавитьМесяц(ТекущаяДата, -1));
КонецПериода = КонецМесяца(ДобавитьМесяц(ТекущаяДата, -1));
Отчет = Отчеты.ОборотноСальдоваяВедомость.Создать;
Отчет.Период.Начало = НачалоПериода;
Отчет.Период.Конец = КонецПериода;
Отчет.Сформировать;
Отчет.Показать;
КонецПроцедуры
Для более сложных задач (например, ежемесячной отправки отчетов по email) можно использовать регламентные задания:
- Перейдите в
Администрирование → Регламентные задания. - Создайте новое задание типа"Формирование отчета".
- Укажите расписание (например,"1-е число каждого месяца").
- В параметрах задания настройте период отчета (например,"прошлый месяц").
Если вам нужна еще большая гибкость, рассмотрите возможность создания внешнего отчета с параметрами. Например, отчет, который принимает на вход:
- 📌 Начальную и конечную дату.
- 📌 Флаг"сравнить с предыдущим периодом".
- 📌 Список счетов/контрагентов для фильтрации.
⚠️ Внимание: При использовании внешних обработок убедитесь, что они совместимы с вашей версией 1С:Предприятие. Некоторые обработки, написанные для 1С 8.2, могут не работать в 8.3 из-за изменений в платформе.
7. Периоды в обменах данными и интеграциях
При настройке обменов данными (например, между 1С:Бухгалтерия и 1С:Зарплата или с внешними системами) периоды играют ключевую роль. Неправильная настройка может привести к:
- 🔄 Дублированию данных (если период перекрывается).
- 📥 Потере записей (если период слишком узкий).
- ⚠️ Ошибкам синхронизации (если временные зоны не учтены).
Основные правила настройки периодов в обменах:
- В обмена укажите начальную дату (с какой даты начинать выгрузку).
- Для регулярных обменов настройте инкрементальную выгрузку (только новые/измененные данные).
- Убедитесь, что периоды в источниках и приемниках данных совпадают.
Пример настройки обмена между 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, Настройки);