При переходе на новые релизы программных продуктов 1С:Розница 3.0 или 1С:УНФ 3.0 пользователи и технические специалисты часто сталкиваются с критической ошибкой: «ОперацииПроверкиКМ. Имеются записи с одинаковыми измерениями». Эта ситуация блокирует процесс обновления информационной базы, так как платформа не может выполнить реструктуризацию таблиц из-за нарушения уникальности данных. В этой статье мы подробно разберем причины возникновения этой проблемы и рассмотрим пошаговые методы её решения.
Прежде чем приступать к исправлению, проанализируем ситуацию. Ошибка возникает в регистре сведений ОперацииПроверкиКМ. Этот регистр предназначен для хранения технических данных о результатах онлайн-проверок кодов маркировки (КМ) в системе «Честный ЗНАК». В новых версиях конфигураций разработчики часто меняют состав измерений этого регистра (например, добавляют новые поля для более детальной идентификации проверок) или изменяют правила уникальности индекса.
Если в вашей базе накоплены записи, которые по старым правилам считались уникальными, а по новым — становятся дублями, система выдает ошибку. Основная проблема заключается в том, что платформа пытается наложить новый уникальный индекс на таблицу, в которой уже есть повторяющиеся комбинации значений в полях (измерениях).
Рассмотрим, как локализовать проблему через средства разработки. Первым делом нам необходимо понять, что именно изменилось в регистре. Для этого выполним следующие действия:
ОперацииПроверкиКМ.Обычно ключевыми измерениями, по которым строится уникальность, являются: Организация, ДокументПроверки, Номенклатура и ШтрихкодУпаковки (или КИЗ). Если записи в базе имеют одинаковые значения во всех этих полях, они станут дублями после обновления.
Разберем, как найти конкретные проблемные записи в пользовательском режиме. Для этого нам понадобится «Консоль запросов». Напишем запрос, который сгруппирует данные и выведет только те строки, которые повторяются.
Посмотрим на пример текста запроса:
ВЫБРАТЬ
Организация,
ДокументПроверки,
Номенклатура,
ШтрихкодУпаковки,
КОЛИЧЕСТВО(*) КАК КоличествоДублей
ИЗ
РегистрСведений.ОперацииПроверкиКМ КАК ОперацииПроверкиКМ
СГРУППИРОВАТЬ ПО
Организация,
ДокументПроверки,
Номенклатура,
ШтрихкодУпаковки
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) > 1
После выполнения этого запроса мы получим список комбинаций измерений, которые вызывают ошибку. Эти записи необходимо либо удалить вручную через обработку «Редактирование состава регистров», либо очистить программно.
Поскольку ОперацииПроверкиКМ является вспомогательным регистром, данные в котором носят временный или справочный характер (результаты проверок КМ можно запросить повторно при открытии документа), самым быстрым и эффективным способом решения проблемы является полная очистка этого регистра перед обновлением.
Важно: Перед выполнением этой операции обязательно сделайте резервную копию информационной базы!
Для очистки регистра можно создать внешнюю обработку и выполнить следующий код на встроенном языке 1С:
НаборЗаписей = РегистрыСведений.ОперацииПроверкиКМ.СоздатьНаборЗаписей();
// Мы не устанавливаем никаких отборов, чтобы очистить весь регистр
НаборЗаписей.Записать(Истина);
Метод Записать(Истина) с пустым набором данных полностью удаляет все записи из таблицы регистра. После этого обновление конфигурации должно пройти без ошибок. При последующей работе с документами маркировки система автоматически создаст новые, корректные записи в этом регистре.
Если вы не хотите прибегать к написанию кода, можно воспользоваться стандартным механизмом платформы. Рассмотрим алгоритм действий:
Проанализируем результат: платформа попытается самостоятельно найти записи с одинаковыми ключами и устранить их. Однако этот метод не всегда эффективен для регистров сведений, если ошибка возникает именно в процессе реструктуризации при обновлении метаданных.
Мы выяснили, что ошибка «Имеются записи с одинаковыми измерениями» в ОперацииПроверкиКМ — это следствие изменения структуры данных в новых версиях 1С:Розница 3.0. Самым надежным решением является очистка регистра через СоздатьНаборЗаписей(), так как эти данные не влияют на финансовые результаты или остатки товаров, а лишь фиксируют историю технических проверок кодов маркировки. После очистки регистра и успешного завершения обновления система продолжит работу в штатном режиме.