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

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

Как добавить периоды в 1С: пошаговая инструкция

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

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

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

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

Как выбрать период в отчёте или журнале документов

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

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

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

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

Как сделать регистр сведений периодическим в конфигураторе

Если нужно хранить историю изменения значений — например, цены номенклатуры или курсы валют по датам — используется периодический регистр сведений. Откройте конфигуратор, найдите в дереве конфигурации ветку «Регистры сведений», выберите нужный регистр и откройте палитру свойств (правый клик — «Свойства»).

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

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

Выбор шага периодичности влияет на уникальность записей: при периодичности «Месяц» на одну комбинацию измерений в пределах месяца может существовать только одна запись. Если вы попытаетесь записать вторую запись с теми же измерениями в том же месяце, система выдаст ошибку. Для данных, меняющихся несколько раз в день, выбирайте «В пределах секунды» или подчинение регистратору.

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

В современных типовых конфигурациях периодические реквизиты напрямую в справочнике не используются — вместо них применяются периодические регистры сведений, где измерением выступает ссылка на элемент справочника. Так устроены, например, «Кадровая история сотрудников» или «Цены номенклатуры».

Чтобы добавить такое хранение, создайте регистр сведений с периодичностью, добавьте измерение «Номенклатура» (или «Сотрудник», «Организация» — ссылку на нужный справочник) и ресурс «Цена» (или другое значение). Затем в модуле формы элемента справочника добавьте переход к регистру через команду, чтобы пользователь мог вводить значения с указанием даты.

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

Периодичность документов и нумерация

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

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

Какой вариант периодичности выбрать

В пределах секунды / дня

Подходит для часто меняющихся данных: курсы валют, статусы, оперативные цены. Минус — быстрый рост объёма таблицы.

В пределах месяца / квартала / года

Для редко меняющихся значений: оклады, ставки, нормы. Компактное хранение, но только одна запись на период.

По позиции регистратора

Когда каждое изменение оформляется документом: кадровые переводы, установка цен. Позволяет несколько изменений в день и даёт ссылку на документ-основание.

Работа с периодами в запросах и программном коде

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

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

bsl
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, )");
Запрос.УстановитьПараметр("Период", КонецДня(ТекущаяДатаСеанса()));
Результат = Запрос.Выполнить().Выгрузить();
Типичные ошибки
01
Передача в параметр «Период» начала дня вместо конца — записи, сделанные позже в этот день, не попадут в срез. Используйте КонецДня() или границу периода.
02
Выбор периодичности «Месяц» для данных, меняющихся несколько раз в месяц, — вторая запись не сохранится из-за конфликта уникальности.
03
Изменение периодичности регистра с данными без резервной копии и теста на копии базы — риск потери или искажения истории.
04
Поиск поля периода в форме отчёта, когда оно спрятано в настройках СКД, — проверяйте «Настройки» и параметры варианта отчёта.

Проверка результата и ограничения

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

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

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

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

Срез последних на дату
Норма

Возвращается значение, действовавшее на указанный момент

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

Возвращается пустой результат или значение из будущего периода

Уникальность записей
Норма

Записи с разными периодами сохраняются без ошибок

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

Ошибка «запись с такими ключевыми полями существует» при корректных данных

Итоги отчёта за период
Норма

Совпадают с данными журнала документов за тот же интервал

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

Итоги меньше или больше — проверить границы дат

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

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

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

Почему отчёт за период показывает не все документы?

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

Чем срез последних отличается от обычной выборки регистра сведений?

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

Что делать, если при изменении периодичности возникла ошибка реструктуризации?

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

Как задать период «по умолчанию» при открытии отчёта?

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

Можно ли хранить несколько значений в одном дне без документа?

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

Итог

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

«Добавить период» в 1С означает разные действия: в отчёте — задать даты начала и окончания, в регистре сведений — установить периодичность в конфигураторе, в справочнике — использовать периодический регистр сведений. Любые изменения периодичности существующих объектов выполняйте только после резервного копирования и проверки на тестовой базе.