Разработка и Конфигурация · 11 мин
Как добавить периоды в 1С: пошаговая инструкция
Как добавить периоды в 1С: настройка периодичности регистров сведений, выбор периода в отчётах и документах, типичные ошибки и проверка результата.
Задача «добавить период» в 1С встречается в нескольких разных ситуациях: нужно сделать регистр сведений периодическим, выбрать период в отчёте или оборотах, добавить периодический реквизит в справочник или настроить периодичность документа. Подход в каждом случае свой, и путаница между ними — главная причина ошибок начинающих пользователей и разработчиков.
Под «периодом» в 1С понимают либо временной интервал (дата начала и дата окончания), либо периодичность хранения данных — то, как часто фиксируются значения: раз в день, месяц, квартал, год или в пределах даты документа-регистратора. Ниже разобраны все основные сценарии: от простого выбора периода в отчёте до настройки периодичности в конфигураторе.
Все действия, связанные с изменением конфигурации, выполняются в конфигураторе и требуют прав на редактирование. Обычный пользователь в режиме «Предприятие» может работать только с периодами в отчётах, документах и периодических реквизитах, уже созданных разработчиком.
Как выбрать период в отчёте или журнале документов
Самый частый бытовой сценарий — нужно построить отчёт за конкретный интервал. В типовых конфигурациях (Бухгалтерия, Управление торговлей, Зарплата и управление персоналом) поле периода находится прямо на форме отчёта. Обычно это выпадающий список со стандартными вариантами: «Сегодня», «Этот месяц», «Прошлый квартал», «Этот год» и «Произвольный период».
Чтобы задать произвольный интервал, выберите вариант «Произвольный период» — откроются два поля «с» и «по». Введите даты вручную в формате ДД.ММ.ГГГГ или выберите их через календарь. После этого нажмите «Сформировать». Если отчёт построился пустым, первым делом проверьте, не перепутаны ли даты местами и есть ли вообще данные за этот интервал.
В отчётах на системе компоновки данных (СКД) период может быть скрыт в расширенных настройках. Нажмите кнопку «Настройки» (или «Ещё — Изменить вариант»), найдите параметр «Период» и разверните его — там задаются дата начала и дата окончания. В некоторых отчётах период задаётся одним параметром типа «Стандартный период».
- 1Откройте нужный отчёт из раздела «Отчёты» или из журнала документов
- 2В поле периода выберите «Произвольный период»
- 3Введите дату начала и дату окончания вручную или через календарь
- 4Нажмите «Сформировать» и проверьте, что данные попали в интервал
- 5Если данных нет — откройте «Настройки» и проверьте параметры периода в СКД
Как сделать регистр сведений периодическим в конфигураторе
Если нужно хранить историю изменения значений — например, цены номенклатуры или курсы валют по датам — используется периодический регистр сведений. Откройте конфигуратор, найдите в дереве конфигурации ветку «Регистры сведений», выберите нужный регистр и откройте палитру свойств (правый клик — «Свойства»).
В свойстве «Периодичность» выберите одно из значений: «В пределах секунды», «В пределах дня», «В пределах месяца», «В пределах квартала», «В пределах года» или «По позиции регистратора». Вариант «По позиции регистратора» доступен только если регистр подчинён регистратору (режим записи — «Подчинение регистратору»), и тогда момент времени записи определяется датой документа.
После изменения свойства сохраните конфигурацию и выполните обновление конфигурации базы данных (клавиша F7). Система добавит в регистр служебное поле «Период», и каждая запись будет храниться с указанием момента времени. Для чтения актуальных данных используются виртуальные таблицы «СрезПоследних» и «СрезПервых».
Выбор шага периодичности влияет на уникальность записей: при периодичности «Месяц» на одну комбинацию измерений в пределах месяца может существовать только одна запись. Если вы попытаетесь записать вторую запись с теми же измерениями в том же месяце, система выдаст ошибку. Для данных, меняющихся несколько раз в день, выбирайте «В пределах секунды» или подчинение регистратору.
Как добавить периодический реквизит справочнику
В современных типовых конфигурациях периодические реквизиты напрямую в справочнике не используются — вместо них применяются периодические регистры сведений, где измерением выступает ссылка на элемент справочника. Так устроены, например, «Кадровая история сотрудников» или «Цены номенклатуры».
Чтобы добавить такое хранение, создайте регистр сведений с периодичностью, добавьте измерение «Номенклатура» (или «Сотрудник», «Организация» — ссылку на нужный справочник) и ресурс «Цена» (или другое значение). Затем в модуле формы элемента справочника добавьте переход к регистру через команду, чтобы пользователь мог вводить значения с указанием даты.
Ввод значений выполняется в режиме «Предприятие»: откройте регистр (например, через карточку элемента — «Цены» или «История»), добавьте запись, укажите дату, с которой значение действует, и само значение. При обращении к данным программа автоматически берёт значение, актуальное на нужную дату.
Периодичность документов и нумерация
Отдельный смысл «периода» — периодичность нумерации документов. В свойствах документа в конфигураторе есть свойство «Периодичность»: «Непериодический», «В пределах дня», «В пределах месяца», «В пределах квартала», «В пределах года». Оно определяет, когда нумерация начинается заново.
Например, при периодичности «В пределах года» с 1 января номера документов начнутся с единицы. Если выбрать «Непериодический», нумерация будет сквозной за всё время работы. Изменение этого свойства в работающей базе может привести к дублированию номеров, поэтому менять его стоит только до начала ввода документов или после анализа существующей нумерации.
Какой вариант периодичности выбрать
Подходит для часто меняющихся данных: курсы валют, статусы, оперативные цены. Минус — быстрый рост объёма таблицы.
Для редко меняющихся значений: оклады, ставки, нормы. Компактное хранение, но только одна запись на период.
Когда каждое изменение оформляется документом: кадровые переводы, установка цен. Позволяет несколько изменений в день и даёт ссылку на документ-основание.
Работа с периодами в запросах и программном коде
При программной работе период передаётся в запрос как параметры «НачалоПериода» и «КонецПериода» для виртуальных таблиц регистров накопления, либо как параметр «Период» для срезов регистров сведений. Для среза последних на дату синтаксис выглядит так: РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) — запятая после параметра обязательна, если отбор не задан.
Для интервалов удобно использовать тип «СтандартныйПериод» — он содержит дату начала и дату окончания и автоматически предлагает пользователю стандартные варианты (месяц, квартал, год). В коде значение задаётся через конструктор: Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц) или через явные даты.
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, )");
Запрос.УстановитьПараметр("Период", КонецДня(ТекущаяДатаСеанса()));
Результат = Запрос.Выполнить().Выгрузить();Проверка результата и ограничения
После настройки периодичности регистра проверьте результат на тестовых данных: добавьте две записи с разными датами и убедитесь, что срез последних на промежуточную дату возвращает правильное значение. Для регистра, подчинённого регистратору, проверьте, что записи появляются при проведении документа и удаляются при отмене проведения.
Для отчётов контроль простой: сформируйте отчёт за заведомо известный период, по которому есть проводки или документы, и сверьте итоги с оборотно-сальдовой ведомостью или журналом. Если итоги не совпадают — почти всегда причина в границах периода: отчёт берёт начало дня первой даты и конец дня последней, либо наоборот обрезает границы.
Как проверить результат
Возвращается значение, действовавшее на указанный момент
Возвращается пустой результат или значение из будущего периода
Записи с разными периодами сохраняются без ошибок
Ошибка «запись с такими ключевыми полями существует» при корректных данных
Совпадают с данными журнала документов за тот же интервал
Итоги меньше или больше — проверить границы дат
Частые вопросы о периодах в 1С
Может ли обычный пользователь изменить периодичность регистра?
Нет. Периодичность — свойство объекта конфигурации, оно меняется только в конфигураторе с последующим обновлением конфигурации базы данных. Пользователю в режиме «Предприятие» доступны лишь ввод записей с датами и выбор периодов в отчётах.
Почему отчёт за период показывает не все документы?
Чаще всего граница периода обрезает данные: дата окончания берётся на начало дня, а документы проведены позже. Проверьте настройки периода, а также отборы по организации, складу или статусу документа — они тоже могут скрывать часть данных.
Чем срез последних отличается от обычной выборки регистра сведений?
Срез последних — виртуальная таблица, которая для каждой комбинации измерений возвращает одну запись, актуальную на указанную дату. Обычная выборка вернёт все записи за все время, и актуальное значение придётся искать вручную сортировкой по периоду.
Что делать, если при изменении периодичности возникла ошибка реструктуризации?
Откатитесь к резервной копии или выгрузите данные регистра в файл, измените периодичность, а затем загрузите данные обратно с корректным заполнением поля «Период». Выполняйте операцию на копии базы и только после проверки — на рабочей.
Как задать период «по умолчанию» при открытии отчёта?
В типовых отчётах период обычно запоминается из последних настроек пользователя. Если нужно программно — в модуле формы отчёта при создании установите параметр «Период» в нужный стандартный вариант, например текущий месяц, через объект СтандартныйПериод.
Можно ли хранить несколько значений в одном дне без документа?
Да, если выбрать периодичность «В пределах секунды» — записи будут различаться с точностью до секунды. Если изменений много и каждое должно иметь основание, лучше подчинить регистр регистратору и оформлять изменения документами.
Что важно запомнить
«Добавить период» в 1С означает разные действия: в отчёте — задать даты начала и окончания, в регистре сведений — установить периодичность в конфигураторе, в справочнике — использовать периодический регистр сведений. Любые изменения периодичности существующих объектов выполняйте только после резервного копирования и проверки на тестовой базе.