Механизм интервальных регистров в 1С:ЗУП 3.1. Что это такое и «с чем его едят»?

12.03.26

Разработка - Механизмы типовых конфигураций

Интервальные регистры в 1С:ЗУП 3.1 заменяют тяжелые срезы последних, ускоряя отчеты по кадровым данным через интервалы ДатаНачала–ДатаОкончания. Разбираем отличия, примеры кода, плюсы и способы синхронизации.

Рассказывает моя коллега Екатерина, разработчик 1С в нашей команде:

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

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

Содержание:

1. Что не так с регистрами сведений из предыдущих версий ЗУП.

2. В чем отличия интервального регистра.

3. Как это выглядит в регистре

4. Как может быть использовано в коде.

5. В чем плюсы использования интервальных регистров.

6. Что делать, если данные «разъехались».

7. Заключение

 

1. Что не так с регистрами сведений из предыдущих версий ЗУП

В версии 2.5 и ранних редакциях 3.0 информация (например, об окладе или подразделении) хранилась в периодических регистрах сведений. Чтобы узнать состояние сотрудника на конкретную дату, необходимо было получить СрезПоследних.

Это и есть та большая «ложка дегтя» использования регистров сведений, а точнее, их виртуальных таблиц. Запросы с их использованием были тяжелыми. В случаях, когда необходимо было получить состояния сотрудников на каждый день из периода, особенно для большого числа сотрудников одновременно, нагрузка на СУБД была очень значительной.

 

2. В чем отличия интервального регистра

Интервальный регистр — это в некотором роде дубль обычного периодического регистра. Почти у каждого важного регистра есть интервальный двойник:

 

 

Ключевые отличия в структуре: в обычном регистре есть стандартный реквизит Период. В интервальном регистре, который является непериодическим, реквизита Период нет, зато добавляются измерения ДатаНачала (фактическое начало действия записи) и ДатаОкончания (дата, по которую действует это состояние или 31.12.3999, если состояние открыто).

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

Это ведомые регистры: изменения в основном реестре (например, кадровые переводы) генерируют интервалы, учитывая суточный учет и возможные вытеснения документов. При нескольких изменениях на одну дату механизм вытеснений определяет «победителя» по порядку в сутках, формируя точные интервалы с временем, не всегда 00:00 или 23:59.

 

3. Как это выглядит в регистре

Рассмотрим пример. Сотрудник был принят на работу с одним окладом, а через некоторое время оклад был изменен.

В регистре сведений ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников записи выглядят так:

 

 

В интервальном регистре ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный – так:

 

 

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

ГДЕ
	&НужнаяДата МЕЖДУ ИнтервальныйРС.ДатаНачала И ИнтервальныйРС.ДатаОкончания

 

4. Как может быть использовано в коде

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

ВЫБРАТЬ
	ИнтервальныйРС.Сотрудник КАК Сотрудник,
	ИнтервальныйРС.Подразделение КАК Подразделение,
	ИнтервальныйРС.Должность КАК Должность,
	ИнтервальныйРС.ДатаНачала КАК ДатаНачала,
	ИнтервальныйРС.ДатаОкончания КАК ДатаОкончания
ИЗ
	РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК ИнтервальныйРС
ГДЕ
	ИнтервальныйРС.Сотрудник = &Сотрудник
	И ИнтервальныйРС.ДатаНачала <= &КонецПериода
	И ИнтервальныйРС.ДатаОкончания >= &НачалоПериода

Предварительно параметр &КонецПериода необходимо привести к концу дня, так как ДатаНачала может иметь не нулевое значение секунд.

Этот запрос вернет все кадровые изменения, которые затронули выбранный период.

 

 

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

 

5. В чем плюсы использования интервальных регистров

  • значительное увеличение скорости формирования отчетов, так как данные выбираются прямым соединением таблиц;
  • упрощение соединений: теперь можно одним запросом соединить таблицу рабочего времени и таблицу интервальных регистров по условию перекрытия периодов;
  • исключение неописанных периодов: механизм гарантирует, что внутри цепочки событий не будет «пробелов», если это не предусмотрено логикой.

 

6. Что делать, если данные «разъехались».

Иногда из-за сбоев или некорректных доработок данные в основном и интервальном регистрах начинают различаться. В «ЗУП 3.1» предусмотрены механизмы защиты:

  • автоматическое обновление: при проведении регистратора интервалы для конкретного сотрудника пересчитываются;
  • общий пересчет: в разделе Администрирование -> Перезаполнение интервальных регистров есть возможность запустить обновление интервальных регистров;
  • программный метод: для разработчика доступен вызов метода

ЗарплатаКадрыПериодическиеРегистры.ОбновитьДвиженияИнтервальногоРегистра (…)

// Обновляет движения интервального регистра сведений
//		КадроваяИсторияСотрудников
//
// Параметры:
//	ИмяРегистра - Строка - Имя регистра сведений, имеющего интервальную версию.
//	МенеджерВременныхТаблиц - МенеджерВременныхТаблиц
Процедура ОбновитьДвиженияИнтервальногоРегистра(ИмяРегистра, МенеджерВременныхТаблиц) Экспорт
	
	ПараметрыПостроения = ПараметрыПостроенияИнтервальногоРегистра();
	ПараметрыПостроения.ПолноеПереформирование = Истина;
	ПараметрыПостроения.РежимЗагрузки = Истина;
	ПараметрыПостроения.ФильтрВВидеВТ = Истина;
	ПараметрыПостроения.ТаблицаФильтра = МенеджерВременныхТаблиц;
	ИнтервальныеРегистрыБЗК.СформироватьДвиженияИнтервальногоРегистра(ИмяРегистра, ПараметрыПостроения);
	
КонецПроцедуры

 

Заключение

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

интервальные регистры 1С ЗУП 3.1 регистры сведений срез последних ДатаНачала ДатаОкончания

См. также

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Как в ЗУП работает механизм расстановки времени в регистрах сведений с помощью подписки на события?Рассматривается логика сдвигов для разных типов документов (прием, увольнение, отпуск) и дается инструкция по подключению нового регистра к этому механизму.

03.03.2026    442    YA_1100893639    1    

7

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

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

11.08.2025    6106    user1988284    0    

19

Механизмы типовых конфигураций Программист 1С:Предприятие 8 Бесплатно (free)

Каждый, кто работал с кадровыми отчетами в ЗУП, ERP или УХ, сталкивался с механизмом представлений – странным кодом запроса, где поля отображаются пустыми ссылками, а в названии временной таблицы есть слово «Представление». В статье разберем, что такое представления и как ими пользоваться. Больше не нужно ломать голову над тем, откуда и как правильно получать данные. Механизм представлений сделает это за вас.

08.07.2025    12373    user2012581    55    

59

Механизмы типовых конфигураций Программист Стажер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Бесплатно (free)

В типовых решениях типа УТ, КА, ERP при вводе строк в поля ввода осуществляется поиск по первым символам. С помощью небольшой доработки (делается через расширение) можно организовать поиск по вхождению.

02.06.2025    2855    lkey    2    

6

Работа с интерфейсом БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист 1С:Предприятие 8 1C:ERP Бесплатно (free)

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

12.05.2025    6652    AlexeyPROSTO_1C    3    

19
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Dimel 12.03.26 20:40 Сейчас в теме
(0) Очень поверхностный анализ с кучей вредных советов... Во первых, ни слова не написано о способе формирования интервальных регистров (со стеком и без). Во вторых, обращение к ним напрямую - это ошибка, для этого существует программный интерфейс в "ЗарплатаКадрыПериодическиеРегистры" (существуют так называемые "Возвратные события" и их тоже надо учитывать при формировании запроса к интервальному регистру). В третьих для обновления интервальных регистров существует обработка на ИТС, а начиная с ЗУП 3.1.35 эта обработка встроена в программу.
Для отправки сообщения требуется регистрация/авторизация