Помилки неунікальності записів в 1С

Часто помилки виникають при оновленні конфігурації, - особливо якщо оновлення "перескакує" через кілька релізів. Розглянемо причину появи і як виправити помилку 1С "Записи реєстру відомостей стали неунікальні".

зміст

  • 1 відображення помилки
  • 2 Програмні вимоги до регістрів
  • 3 зміна структури
  • 4 ручне виправлення
  • 5 пропущений реліз
  • 6 метод порівняння
  • 7 Автовидалення 1
  • 8 Автовидалення 2

відображення помилки

Подібна помилка може мати два ідентичних відображення від системи 1С:

Суть цієї помилки полягає в тому, що після чергового оновлення змінився склад вимірювань для одного з регістрів (або декількох).

Програмні вимоги до регістрів

Ми знаємо, що регістр (register, англ.) Відомостей формується для зберігання у вигляді записів (рядків). Кожна з них характеризується видами вимірювань (профілями) і ресурсів.

Вимірювання характеризують розрізи (типи), в яких зберігаються дані. А ресурси- безпосередньо містять їх значення.

Наприклад, register відомостей "Ціни товарів" має структуру, що складається з двох видів профілів ( "Товар", "Відци") і одного ресурсу ( "Ціна"):

Структура товарів в 1С

Таким чином, рядки регістру в базі даних будуть виглядати так:

Рядки регістра в реєстрі

Крім того, при створенні запису їй присвоюється унікальний ключ. Формування його системою відбувається автоматично.

Однаковими вважаються такі записи, ключі яких ідентичні.

ВАЖЛИВО. Отже - кожен register має один і тільки єдиний набір профілів. Рядки цього регістра повинні відповідати цьому набору.

зміна структури

Розглянемо ще один приклад.

В один час розробником був створений реєстр "ОтветственниеЛіцаПоСкладам" структурно складається з двох вимірювань ( "Склад" і "Приміщення") і одного ресурсу ( "Відповідальний").

В подальшому кимось було прийнято рішення про те, що така деталізація є зайвою. Це рішення відбилося в черговому релізі.

І тепер оновлений register має тільки єдиний профіль і ресурс:

Новий вид структури товарів

Структура його змінилася. Але рядки залишилися!

І в них зазначено, що для профілю "Приміщення" - є відповідальні (ресурси). Але що з ними робити при переході на новий реліз - сама програма без користувача таке завдання не вирішить.

Тому з'являється помилка 1С: "записи регістру відомостей стали неунікальні". Може бути така - є записи з однаковими вимірами.

ручне виправлення

Сенс цих повідомлень зводиться до того, що нова структура містить кілька рядків із зайвими вимірами і їх потрібно згорнути в одну:

Кілька записів з одним значенням

В цьому випадку потрібно видалити ті, які відповідають тепер уже непотрібним профілів.

Зазвичай при використанні типових конфігурацій таке завдання вирішується розробниками на програмному рівні. І згортання відбувається автоматично при оновленні.

пропущений реліз

Можливим вирішенням проблеми буде, якщо знову встановлену конфігурацію відкотити назад (шляхом відновлення архівної копії), а потім оновитися заново (вже без пропуску пропущених релізів).

метод порівняння

Найважче ситуація складається, коли оновлення відбувається з пропуском кількох релізів. Або попередню конфігурацію була доопрацьованій. Тут також виникає необхідність згортання рядків. Але складність полягає в пошуку загублених вимірювань і реквізитів.

Для вирішення такого завдання потрібно увійти в режим "Конфігурація" і виконати команду "Порівняти конфігурації":

порівняння конфігурацій

Після цього видалити знайдені за допомогою консолі запитів неунікальні рядки.

При невеликій їх кількості це нескладно зробити вручну.

Автовидалення 1

Для програмного видалення дуже великої кількості неунікальний рядків можна скористатися обробкою, запропонованої Євгенією Карук:

Програмне видалення дублів

  • Спочатку завантажити і відкрити обробку;
  • Відкрити register відомостей з неунікальні рядками;
  • Відзначити ті з вимірювань, які потрібно видалити в результаті поновлення;
  • Дати команду натисканням "Згорнути дублі".

Дублі рядків будуть знайдені обробкою і згорнуті в одну.

Після проведення обробки оновлення конфігурації буде проведено коректно.

Також можна використовувати обробку для перевірки наявність дублів без зміни даних (для тестування або перевірки):

Перевірка на наявність дублів

Автовидалення 2

Інша обробка для тієї ж мети запропонована іншим фахівцем у цій галузі - Павлом Чистовим (для мобільного варіанту не підтримується).

Ми розглянули причини появи і методи виправлення помилок, пов'язаних з порушеннями структури рядків. Тепер ви знаєте, що проявляються вони при накладанні однієї конфігурації на іншу.

Коментуйте наші публікації.Описувати свій досвід у вирішенні проблемних питань.