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

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

Периодичность по позиции регистратора в 1С: что это такое

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

Периодичность «по позиции регистратора» — это свойство периодического регистра сведений в 1С, при котором уникальность записи определяется не датой, а конкретным документом-регистратором, создавшим эту запись. Проще говоря, платформа запоминает не «что было на 10:00 15 марта», а «что установил документ Приказ № 17 от 15.03». За один и тот же момент времени может существовать несколько записей, если их провели разные документы.

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

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

Какие виды периодичности существуют в регистрах сведений

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

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

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

Сравнение вариантов периодичности

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

Подходит для независимых данных: курсы валют, настройки, графики. Уникальность по периоду, записи можно вводить вручную. Ограничение — одна запись на период.

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

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

Как платформа определяет «последнюю» запись при срезе

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

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

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

Когда выбирать периодичность по позиции регистратора

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

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

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

Маршрут решения

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

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

Настройка регистра в конфигураторе: порядок действий

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

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

Затем укажите документы, которые будут выступать регистраторами: в свойствах документа на вкладке «Движения» отметьте созданный регистр и напишите код формирования движений в обработке проведения. Без этого документ не создаст записей, и регистр останется пустым.

Порядок настройки регистра
  1. 1
    Создайте регистр сведений, установите режим «Подчинение регистратору»
  2. 2
    В свойстве «Периодичность» выберите «По позиции регистратора»
  3. 3
    Добавьте измерения и ресурсы с корректными типами
  4. 4
    В документе-регистраторе отметьте регистр на вкладке «Движения»
  5. 5
    Напишите формирование движений в обработке проведения
  6. 6
    Проведите тестовый документ и проверьте записи через консоль запросов или срез последних

Особенности запросов и виртуальных таблиц

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

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

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

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

Типичные ошибки и ограничения

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

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

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

Типичные ошибки
01
Создание двух документов с одинаковой датой и временем — срез выбирает запись по ссылке, результат выглядит случайным
02
Попытка ввести записи вручную в подчинённый регистр — платформа этого не позволяет, нужен документ-регистратор
03
Сортировка собственного запроса только по полю «Период» — при совпадающих датах порядок записей непредсказуем
04
Изменение периодичности на рабочей базе без конвертации данных — риск потери или искажения истории
05
Фильтрация среза последних в секции ГДЕ вместо параметров виртуальной таблицы — резкое падение скорости запроса

Проверка корректности работы регистра

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

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

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

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

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

Возвращаются данные второго документа

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

Возвращаются данные первого документа или пустой результат

Отмена проведения документа
Норма

Записи документа удалены, срез показывает предыдущее значение

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

Записи остались в регистре

Два документа с одинаковой датой и временем
Норма

Срез выбирает запись по ссылке — поведение стабильно и воспроизводимо

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

Результат меняется от запуска к запуску

Попытка ручного ввода записи
Норма

Платформа блокирует ввод — регистр подчинён регистратору

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

Ручной ввод доступен — значит, режим подчинения настроен неверно

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

Можно ли в регистре «по позиции регистратора» сделать две записи одним документом на одну дату?

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

Чем «по позиции регистратора» отличается от «в пределах секунды»?

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

Почему срез последних вернул не тот документ, который я вводил последним?

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

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

Да. Передайте в параметр виртуальной таблицы момент времени, соответствующий началу дня (00:00:00), а не просто дату. Если передать дату без времени, срез будет построен на конец дня и включит все документы этого дня.

Как перейти с периодичности «в пределах дня» на «по позиции регистратора»?

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

Влияет ли периодичность на скорость отчетов?

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

Итог

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

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