2. Неуникальные записи регистра сведений
1. Типы регистров сведений
Начнем с того, что регистр сведений – таблица в базе данных. Для поиска данных в таблице используются ключи. Ключи представляют собой уникальные значения во всей таблице. Для регистра сведений это так же справедливо. Более того, для регистра сведений ключом записи служит набор измерений (если регистр сведений непериодический), набор измерений и период (если периодический) и, наконец, набор измерений, период и регистратор (если регистр сведений подчинен регистратору). Таким образом, чтобы выполнялось условие про уникальность ключа регистра сведений, необходимо обеспечить уникальность совокупности значений набора указанных свойств регистра.
2. Неуникальные записи регистра сведений
Программные решения живут, т.е. постоянно развиваются посредством доработки, исправления, рефакторинга и т.д. В процессе разработки возникает необходимость пересмотреть архитектуру решения. Именно по мотивам обозначенных обстоятельств и возникает ошибка «Записи регистра сведений стали неуникальными». Смоделируем такую ситуацию. Так как независимо от типа регистра сведений причина ошибки лежит в плоскости неуникальности ключа записи регистра сведений, пример будет сделан на самом простом типе регистра сведений: непериодическом независимом регистре сведений в 1С. И, чтобы не пачкать основную конфигурацию на поддержке я сделаю это в расширении.
1. Создаем РС «Расш1_РегистрСведений_ДляПроверкиНеуникальныхЗаписей» (непериодический, независимый)
Допустим, что непериодический регистр сведений предназначен для отслеживания количества задач, выполненных пользователями с детализацией до 1 часа внутри дня. Состав даты «Дата и время» этому способствует.
Измерения:
· Пользователь (СправочникСсылка.Пользователи)
· Дата (Дата и время)
Ресурсы:
· Количество выполненных задач (Число(3,0), Неотрицательное)
И какое-то время мы наблюдаем за результатами работы пользователей.
Работа пользователей в непериодическом регистре сведений
Спустя время по результатам анализа нам кажется такая детализация избыточной. Мы решаем пересмотреть систему оценки работы пользователей путем агрегирования данных в границах дня. Такое решение сократит объем хранимых данных и, теперь, не испортит нашу аналитику.
Мы меняем свойство измерения «Дата» с «Дата и время» на «Дата». В результате этих действий и отбора записей регистра сведений мы и получаем предупреждение, что записи регистра сведений - неуникальные, так как дата, имеющая в составе только дату – это всегда дата на начало дня. Таким образом, у всех наших записей дата события становится одинаковой, 21.07.2021 0:00:00, а вместе с ней и совокупность значений набора измерений регистра.
Неуникальные записи регистра сведений
Кнопка «Принять» становится неактивной. Обновление не удалось.
На данном примере видно, что ошибка «Записи регистра сведений стали неуникальными» в 1С возникает при упразднении какого-то измерения, либо, как в моем примере, при изменении типа значения. Чтобы обойти обозначенную ситуацию, необходимо обработать существующие записи независимого регистра сведений так, чтобы в преддверии внесения изменений в его структуру записи стали уникальными в контексте его новой структуры.
Специалист компании «Кодерлайн»
Сергей Пушкин