Период в 1С 8.3: выбор в отчётах, настройка в коде и закрытие месяца

· 9 мин

Содержание

Чтобы задать период в 1С 8.3, откройте отчёт и заполните поля «Период» с датой начала и датой окончания. Удобнее нажать кнопку ... рядом с полями: откроется окно выбора, где месяц, квартал или год выбираются одним щелчком. В коде период создают объектом СтандартныйПериод или парой дат, а «закрыть» период для изменений можно через дату запрета изменения.

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

Где в 1С встречается период и чем они различаются

Слово «период» в 1С означает несколько разных вещей. От того, какой из них нужен, зависит, где его создавать.

  • 📊 Период отчёта — интервал дат, за который собираются данные. Его задаёт пользователь перед формированием.
  • 📅 Период документа — например, «Месяц начисления» в документах зарплаты. Это поле самого документа.
  • 🔒 Закрытый период — интервал, в котором запрещено менять данные. Задаётся датой запрета изменения.
  • 🧾 Закрытие месяца — набор регламентных операций в конце месяца: амортизация, закрытие затратных счетов, финансовый результат.
  • 🛠 Периодичность регистра — свойство объекта метаданных, которое задаёт разработчик в Конфигураторе.

Пользователю чаще всего нужны первые четыре. Разработчику — все пять плюс работа с датами во встроенном языке.

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

Порядок одинаков для большинства отчётов в БП 3.0, ЗУП 3.1 и УТ 11. Отчёты там построены на системе компоновки данных, и форма выбора периода у них общая.

Шаг 1. Введите даты в поля «с» и «по»

  1. Откройте отчёт, например Отчёты → Оборотно-сальдовая ведомость в БП 3.0.
  2. В шапке найдите поля периода: две даты, начало и конец.
  3. Введите дату цифрами, без точек: 01012026 система превратит в 01.01.2026.
  4. Нажмите Сформировать.

Конец периода в отчётах включается целиком. Если указать 31.03, в отчёт попадут документы за 31 марта до 23:59:59.

Шаг 2. Выберите период в окне выбора

Ручной ввод медленный и даёт опечатки. Быстрее так:

  1. Нажмите кнопку ... справа от полей периода.
  2. Стрелками переключите год.
  3. Щёлкните нужный месяц, квартал, полугодие или весь год.
  4. Окно подставит обе даты сразу.

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

Шаг 3. Сохраните период в варианте отчёта

Если отчёт нужен каждый месяц, не вводите период заново:

  1. Настройте период и отборы.
  2. Откройте меню Ещё в командной панели отчёта и выберите сохранение варианта.
  3. Дайте варианту понятное имя, например «ОСВ — прошлый месяц».

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

Рабочая дата для новых документов

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

Периоды в Бухгалтерии, ЗУП и УТ

Окно выбора периода в отчётах одинаковое. Различается то, где задают периоды учёта и закрытия.

ЗадачаБП 3.0ЗУП 3.1УТ 11
Закрытие месяцаОперации → Закрытие периода → Закрытие месяцаитоги месяца формирует документ «Начисление зарплаты и взносов»Финансовый результат и контроллинг → Закрытие месяца
Месяц расчётадата документаполе «Месяц начисления» в документах начисленийдата документа
Дата запрета измененияраздел Администрирование, настройки пользователей и правраздел Администрирование, настройки пользователей и правраздел НСИ и администрирование, настройки пользователей и прав

В ЗУП ключевое — «Месяц начисления». Дата документа может быть 5 апреля, а месяц начисления — март. Именно месяц начисления определяет, в какой период попадёт зарплата в расчётных листках и отчётах.

В регламентированных отчётах БП и ЗУП период выбирается в окне создания нового отчёта: укажите организацию, затем стрелками выберите квартал или год. Отчёт за другой квартал удобнее создать отдельным экземпляром, чтобы не испортить уже сданный.

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

Во встроенном языке период хранят двумя способами: двумя датами или значением типа СтандартныйПериод. Второй вариант удобнее, если период выбирает пользователь.

Конструктор СтандартныйПериод

// Относительный период: всегда «этот месяц» на момент обращения
Период = Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц);

// Произвольный период по двум датам
Период = Новый СтандартныйПериод(Дата(2026, 1, 1), Дата(2026, 3, 31, 23, 59, 59));

НачалоИнтервала = Период.ДатаНачала;
КонецИнтервала  = Период.ДатаОкончания;

У относительного варианта даты вычисляются при чтении свойств. Поэтому период, сохранённый в настройках, на следующий месяц покажет уже новые даты.

Реквизит формы и окно выбора

Если на форме обработки нужен выбор периода, добавьте реквизит типа СтандартныйПериод и выведите его на форму. Платформа сама нарисует поле и кнопку выбора.

Открыть окно выбора из кода можно объектом ДиалогРедактированияСтандартногоПериода. В 8.3 его вызывают асинхронно:

&НаКлиенте
Процедура ВыбратьПериод(Команда)
    Диалог = Новый ДиалогРедактированияСтандартногоПериода;
    Диалог.Период = Объект.Период;
    Оповещение = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
    Диалог.Показать(Оповещение);
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьПериодЗавершение(НовыйПериод, ДополнительныеПараметры) Экспорт
    Если НовыйПериод <> Неопределено Тогда
        Объект.Период = НовыйПериод;
    КонецЕсли;
КонецПроцедуры

Если пользователь закрыл окно без выбора, в обработчик приходит Неопределено. Проверка обязательна, иначе период сотрётся.

Периодичность регистра

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

Динамические периоды и функции работы с датами

Жёстко прописанные даты в коде — частая причина отчётов, которые «перестали работать в новом году». Границы периода лучше вычислять от текущей даты.

Функции, которые нужны чаще всего

ФункцияЧто возвращаетПример для 15.05.2026
НачалоМесяца(Дата)первый день месяца, 00:00:0001.05.2026 0:00:00
КонецМесяца(Дата)последний день, 23:59:5931.05.2026 23:59:59
НачалоКвартала(Дата)начало квартала01.04.2026 0:00:00
КонецКвартала(Дата)конец квартала30.06.2026 23:59:59
НачалоГода(Дата)1 января01.01.2026 0:00:00
ДобавитьМесяц(Дата, N)дата со сдвигом на N месяцевпри N = −1: 15.04.2026
КонецДня(Дата)та же дата, 23:59:5915.05.2026 23:59:59

Готовые периоды от текущей даты

Сегодня = ТекущаяДатаСеанса();

// Прошлый месяц целиком
НачалоПрошлогоМесяца = НачалоМесяца(ДобавитьМесяц(Сегодня, -1));
КонецПрошлогоМесяца  = КонецМесяца(ДобавитьМесяц(Сегодня, -1));

// Прошлый квартал
НачалоПрошлогоКвартала = НачалоКвартала(ДобавитьМесяц(Сегодня, -3));
КонецПрошлогоКвартала  = КонецКвартала(ДобавитьМесяц(Сегодня, -3));

// Последние 30 дней, включая сегодня
НачалоИнтервала = НачалоДня(Сегодня) - 29 * 86400;
КонецИнтервала  = КонецДня(Сегодня);

Дата в 1С складывается с числом секунд. Сутки — 86 400 секунд, поэтому сдвиг на 29 дней — это 29 * 86400. Вместе с сегодняшним днём получается ровно 30 дней.

ТекущаяДатаСеанса() лучше, чем ТекущаяДата(): она учитывает часовой пояс сеанса и одинаково работает на клиенте и на сервере.

Период в запросе

Параметры периода передают в запрос отдельно и используют в виртуальных таблицах:

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

Имя регистра и его ресурсы здесь условные — подставьте свои. Третий параметр Месяц разбивает обороты по месяцам внутри периода.

Период в СКД

В схеме компоновки данных заведите параметр Период типа СтандартныйПериод. Параметрам НачалоПериода и КонецПериода задайте выражения &Период.ДатаНачала и &Период.ДатаОкончания и снимите у них флажок доступности пользователю. Тогда пользователь увидит одно поле периода с кнопкой выбора, а запрос получит две даты.

Закрытие периода: как запретить изменения задним числом

После сдачи отчётности период нужно защитить от правок. Для этого служит дата запрета изменения.

Как установить дату запрета

  1. Откройте раздел Администрирование (в УТ 11 — НСИ и администрирование).
  2. Перейдите к настройкам пользователей и прав.
  3. Включите флажок «Даты запрета изменения» и откройте настройку.
  4. Укажите дату: общую для всех или отдельно по организациям и пользователям.
  5. Сохраните настройку.

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

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

Закрытие месяца — не то же самое

Обработка «Закрытие месяца» рассчитывает итоги месяца, но сама по себе не блокирует данные. Можно закрыть март и затем изменить мартовскую накладную. Тогда закрытие месяца придётся выполнить заново, иначе себестоимость и финансовый результат останутся рассчитанными по старым данным. Защищает от правок только дата запрета.

Почему период работает не так, как ожидалось

Большинство проблем с периодом укладывается в несколько повторяющихся сценариев. Выберите свой симптом:

Диагностика: выберите симптом

Ошибки закрытия периода в Бухгалтерии

Если в «Закрытии месяца» операция подсвечена как ошибочная, порядок действий такой:

  1. Щёлкните по операции и откройте пояснение к ошибке.
  2. Исправьте причину: чаще всего это не настроены методы распределения косвенных расходов в учётной политике, остались отрицательные остатки на складе или не введены документы поступления.
  3. Повторите закрытие месяца целиком. Отдельные операции зависят друг от друга: себестоимость влияет на закрытие счетов затрат, а оно — на финансовый результат.
  4. Если ошибка в прошлом месяце, сначала закройте его, затем текущий. Порядок — строго от раннего месяца к позднему.

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

Частые вопросы

Можно ли задать период в отчёте не с первого числа месяца?
Да. Введите даты вручную или выберите в окне выбора произвольный интервал. Ограничения на начало с первого числа нет, кроме регламентированных отчётов: там период задан формой отчёта.
Влияет ли рабочая дата на период отчётов?
Нет. Рабочая дата подставляется в новые документы. Период отчёта берётся из полей отчёта или из сохранённого варианта.
Чем «Этот месяц» отличается от произвольного периода в сохранённом отчёте?
«Этот месяц» пересчитывается при каждом открытии. Произвольный период хранит конкретные даты и не меняется, пока его не поправят вручную.
Можно ли поставить разную дату запрета для разных организаций?
Да. В настройке дат запрета можно задать дату отдельно для каждой организации и для отдельных пользователей, а не одну общую.
Как в коде проверить, что дата попадает в период?
Сравните её с границами: Дата >= Период.ДатаНачала И Дата <= Период.ДатаОкончания. Если конец периода задан без времени, предварительно примените к нему КонецДня().