Часто помилки виникають при оновленні конфігурації, - особливо якщо оновлення «перескакує» через кілька релізів. Розглянемо причину появи і як виправити помилку 1С «Записи регістра відомостей стали неунікальні».
відображення помилки
Подібна помилка може мати два ідентичних відображення від системи 1С:
Суть цієї помилки полягає в тому, що після чергового оновлення змінився склад вимірювань для одного з регістрів (або декількох).
Програмні вимоги до регістрів
Ми знаємо, що регістр (register, англ.) Відомостей формується для зберігання у вигляді записів (рядків). Кожна з них характеризується видами вимірювань (профілями) і ресурсів.
Вимірювання характеризують розрізи (типи), в яких зберігаються дані. А ресурси- безпосередньо містять їх значення.
Наприклад, register відомостей «Ціни товарів» має структуру, що складається з двох видів профілів ( «Товар», «Відци») і одного ресурсу ( «Ціна»):
Структура товарів в 1С
Таким чином, рядки регістру в базі даних будуть виглядати так:
Рядки регістра в реєстрі
Крім того, при створенні запису їй присвоюється унікальний ключ. Формування його системою відбувається автоматично.
Однаковими вважаються такі записи, ключі яких ідентичні.
зміна структури
Розглянемо ще один приклад.
В один час розробником був створений реєстр «ОтветственниеЛіцаПоСкладам» структурно складається з двох вимірювань ( «Склад» і «Приміщення») і одного ресурсу ( «Відповідальний»).
В подальшому кимось було прийнято рішення про те, що така деталізація є зайвою. Це рішення відбилося в черговому релізі.
І тепер оновлений register має тільки єдиний профіль і ресурс:
Новий вид структури товарів
Структура його змінилася. Але рядки залишилися!
І в них зазначено, що для профілю «Приміщення» - є відповідальні (ресурси). Але що з ними робити при переході на новий реліз - сама програма без користувача таке завдання не вирішить.
Тому з'являється помилка 1С: «записи регістру відомостей стали неунікальні». Може бути така - є записи з однаковими вимірами.
ручне виправлення
Сенс цих повідомлень зводиться до того, що нова структура містить кілька рядків із зайвими вимірами і їх потрібно згорнути в одну:
Кілька записів з одним значенням
В цьому випадку потрібно видалити ті, які відповідають тепер уже непотрібним профілів.
Зазвичай при використанні типових конфігурацій таке завдання вирішується розробниками на програмному рівні. І згортання відбувається автоматично при оновленні.
пропущений реліз
Можливим вирішенням проблеми буде, якщо знову встановлену конфігурацію відкотити назад (шляхом відновлення архівної копії), а потім оновитися заново (вже без пропуску пропущених релізів).
метод порівняння
Найважче ситуація складається, коли оновлення відбувається з пропуском кількох релізів. Або попередню конфігурацію була доопрацьованій. Тут також виникає необхідність згортання рядків. Але складність полягає в пошуку загублених вимірювань і реквізитів.
Для вирішення такого завдання потрібно увійти в режим «Конфігурація» і виконати команду «Порівняти конфігурації»:
порівняння конфігурацій
Після цього видалити знайдені за допомогою консолі запитів неунікальні рядки.
При невеликій їх кількості це нескладно зробити вручну.
Автовидалення 1
Для програмного видалення дуже великої кількості неунікальний рядків можна скористатися обробкою, запропонованої Євгенією Карук:
Програмне видалення дублів
- Спочатку завантажити і відкрити обробку;
- Відкрити register відомостей з неунікальні рядками;
- Відзначити ті з вимірювань, які потрібно видалити в результаті поновлення;
- Дати команду натисканням «Згорнути дублі».
Дублі рядків будуть знайдені обробкою і згорнуті в одну.
Після проведення обробки оновлення конфігурації буде проведено коректно.
Також можна використовувати обробку для перевірки наявність дублів без зміни даних (для тестування або перевірки):
Перевірка на наявність дублів
Автовидалення 2
Інша обробка для тієї ж мети запропонована іншим фахівцем у цій галузі - Павлом Чистовим (для мобільного варіанту не підтримується).
Ми розглянули причини появи і методи виправлення помилок, пов'язаних з порушеннями структури рядків. Тепер ви знаєте, що проявляються вони при накладанні однієї конфігурації на іншу.
Коментуйте наші публікації. Описувати свій досвід у вирішенні проблемних питань.