Duplicate Remover — быстрый и эффективный способ найти дубликаты в Excel
Теперь, когда вы знаете, как использовать формулы для поиска повторяющихся значений в Excel, позвольте мне продемонстрировать вам еще один быстрый, эффективный и без всяких формул способ: инструмент Duplicate Remover для Excel.
Этот универсальный инструмент может искать повторяющиеся или уникальные значения в одном столбце или же сравнивать два столбца. Он может находить, выбирать и выделять повторяющиеся записи или целые повторяющиеся строки, удалять найденные дубли, копировать или перемещать их на другой лист. Я думаю, что пример практического использования может заменить очень много слов, так что давайте перейдем к нему.
Как найти повторяющиеся строки в Excel за 2 быстрых шага
Сначала посмотрим в работе наиболее простой инструмент — быстрый поиск дубликатов Quick Dedupe. Используем уже знакомую нам таблицу, в которой мы выше искали дубликаты при помощи формул:
Как видите, в таблице несколько столбцов. Чтобы найти повторяющиеся записи в этих трех столбцах, просто выполните следующие действия:
- Выберите любую ячейку в таблице и нажмите кнопку Quick Dedupe на ленте Excel. После установки пакета Ultimate Suite для Excel вы найдете её на вкладке Ablebits Data в группе Dedupe. Это наиболее простой инструмент для поиска дубликатов.
- Интеллектуальная надстройка возьмет всю таблицу и попросит вас указать следующие две вещи:
- Выберите столбцы для проверки дубликатов (в данном примере это все 3 столбца – категория, товар и заказчик).
- Выберите действие, которое нужно выполнить с дубликатами. Поскольку наша цель — выявить повторяющиеся строки, я выбрал «Выделить цветом».
Помимо выделения цветом, вам доступен ряд других опций:
- Удалить дубликаты
- Выбрать дубликаты
- Указать их в столбце статуса
- Копировать дубликаты на новый лист
- Переместить на новый лист
Нажмите кнопку ОК и подождите несколько секунд. Готово! И никаких формул .
Как вы можете видеть на скриншоте ниже, все строки с одинаковыми значениями в первых 3 столбцах были обнаружены (первые вхождения не идентифицируются как дубликаты).
Если вам нужны дополнительные возможности для работы с дубликатами и уникальными значениями, используйте мастер удаления дубликатов Duplicate Remover, который может найти дубликаты с первыми вхождениями или без них, а также уникальные значения. Подробные инструкции приведены ниже.
Мастер удаления дубликатов — больше возможностей для поиска дубликатов в Excel.
В зависимости от данных, с которыми вы работаете, вы можете не захотеть рассматривать первые экземпляры идентичных записей как дубликаты. Одно из возможных решений — использовать разные формулы для каждого сценария, как мы обсуждали в этой статье выше. Если же вы ищете быстрый, точный метод без формул, попробуйте мастер удаления дубликатов — Duplicate Remover. Несмотря на свое название, он не только умеет удалять дубликаты, но и производит с ними другие полезные действия, о чём мы далее поговорим подробнее. Также умеет находить уникальные значения.
- Выберите любую ячейку в таблице и нажмите кнопку Duplicate Remover на вкладке Ablebits Data.
- Вам предложены 4 варианта проверки дубликатов в вашем листе Excel:
- Дубликаты без первых вхождений повторяющихся записей.
- Дубликаты с 1-м вхождением.
- Уникальные записи.
- Уникальные значения и 1-е повторяющиеся вхождения.
В этом примере выберем второй вариант, т.е. Дубликаты + 1-е вхождения:
- Теперь выберите столбцы, в которых вы хотите проверить дубликаты. Как и в предыдущем примере, мы возьмём первые 3 столбца:
- Наконец, выберите действие, которое вы хотите выполнить с дубликатами. Как и в случае с инструментом быстрого поиска дубликатов, мастер Duplicate Remover может идентифицировать, выбирать, выделять, удалять, копировать или перемещать повторяющиеся данные.
Поскольку цель этого примера – продемонстрировать различные способы определения дубликатов в Excel, давайте отметим параметр «Выделить цветом» (Highlight with color) и нажмите Готово.Мастеру Duplicate Remover требуется всего лишь несколько секунд, чтобы проверить вашу таблицу и показать результат:
Как видите, результат аналогичен предыдущему. Но здесь мы выделили дубликаты, включая и первое появление повторяющихся записей.
Никаких формул, никакого стресса, никаких ошибок — всегда быстрые и безупречные результаты
Итак, мы с вам научились различными способами обнаруживать повторяющиеся записи в таблице Excel. В следующих статьях разберем, что мы с этим можем полезного сделать.
Подсчет повторений с использованием цикла и словаря
Если нам необходимо узнать количество повторений элементов, то для решения этой задачи мы можем использовать цикл и словарь. Этот метод основан на идее создания словаря, где ключами являются элементы списка, а значениями — количество их повторений.
Вот шаги, которые мы будем следовать:
- Создадим пустой словарь, который будет использоваться для подсчета повторений.
- Пройдемся по каждому элементу в списке с помощью цикла.
- Для каждого элемента проверим, существует ли он уже в словаре в качестве ключа.
- Если ключ уже существует, увеличим соответствующее значение на 1.
- Если ключ не существует, добавим его в словарь со значением 1.
- По завершении цикла, у нас будет словарь, содержащий количество повторений каждого элемента списка.
- Мы можем проанализировать словарь и вывести повторяющиеся элементы или их количество, в зависимости от конкретной задачи.
Давайте рассмотрим пример кода, который демонстрирует этот подход:
На выводе получим:
В этом примере мы определяем функцию , которая принимает список в качестве аргумента. Внутри функции мы создаем пустой словарь , а затем проходимся по каждому элементу списка. Если элемент уже присутствует в словаре, мы увеличиваем его значение на 1. Если элемент не найден, мы добавляем его в словарь со значением 1. В конце мы возвращаем словарь , который содержит количество повторений каждого элемента.
Затем мы вызываем функцию для списка и сохраняем результат в переменную . Далее мы проходимся по элементам словаря и выводим только те элементы, которые повторяются более одного раза.
Такой подход с использованием цикла и словаря позволяет нам эффективно подсчитывать повторяющиеся элементы в списке и получать информацию о них. В данном примере мы выводим только те элементы, которые повторяются более одного раза, но вы можете настроить вывод в соответствии с вашими потребностями.
Этот метод особенно полезен, когда нам нужно получить не только количество повторений, но и другую информацию, связанную с повторяющимися элементами. Мы можем легко модифицировать код, чтобы выводить все повторяющиеся элементы или их индексы, а также выполнять другие операции с ними.
Применение цикла и словаря для подсчета повторяющихся элементов в списке является гибким и мощным подходом, который можно применять в различных ситуациях. Он позволяет эффективно обрабатывать списки любого размера и обеспечивает удобный доступ к информации о повторяющихся элементах.
1С: Предприятие, восстановление индексов СУБД
Занимаюсь разработкой конфигураций на основе платформы 1С: Предприятие. При разворачивании копии базы сформированной средствами 1С: Предприятие регулярно появлялась ошибка:
Так как копии разворачивались только в целях внесения изменений в конфигурацию и тестирования, этой ошибке не предавали особого значения, пока не понадобилось добавить предопределенный счет. При обновлении конфигурации происходила реструктуризация регистра бухгалтерии и вываливалась данная не приглядная ошибка. Дальнейшее обновление прекращалось. Гугление данного вопроса результатов не дало. пришлось разбираться самим.
Выяснение имени таблицы 1С связанной с объектом определяется функцией ПолучитьСтруктуруХраненияБазыДанных, там же можно поглядеть и состав индексов.
Как оказалось данные индексы в таблице SQL «_AccRg2024» отсутствовали физически. При дальнейшем анализе данных уже средствами SQL выяснилось, что не уникальными были номера записей в разрезе Периода — , регистратора — и номер записи , из за чего и не происходила реструктуризация таблицы. Кто и как умудрился удалить эти индексы история умалчивает, данный факт восстановлению не подлежит.
Вылечилась данная ситуация следующим запросом:
Изначально определяются неуникальные записи, выбираются регистраторы и в цикле происходит пере нумерация строк.
После этого, уже средствами 1С, выполнилось тестирование базы с режимом «Реструктуризация таблиц информационной базы», данная процедура пересоздала индексы в таблице, и дальнейшие манипуляции, при работе с метаданными конфигурации, стали происходить без каких либо ошибок.
Три варианта идентификации объектов при получении
Прикладная логика, определяющая порядок автоматического сопоставления объектов при получении, содержится в правилах конвертации объектов (ПКО), предназначенных для получения данных.
Все компоненты (правила обработки данных, правила конвертации объектов и т.д.), определяющие прикладную логику обработки данных в процессе их получения, либо отправки (подробнее в статье Методика работы с конфигурацией «Конвертация данных 3.0») формируют так называемый менеджер обмена. Код менеджера обмена разрабатывается в общем модуле (подробное описание см. в документации по БСП, в разделе Обмен через универсальный формат). Модуль создается автоматически с помощью КД3.0 на основе настроенных правил обмена либо вручную в конфигураторе (см. пример — общий модуль _ДемоМенеджерОбменаЧерезУниверсальныйФормат демо-конфигурации БСП).
Вариант автоматического сопоставления (идентификации) объектов при получении задается с помощью свойства ВариантИдентификации ПКО и может принимать одно из трех значений:
- ПоУникальномуИдентификатору — идентификация по GUID,
- СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска — идентификация по GUID и полям поиска,
- ПоПолямПоиска — идентификация по полям поиска,
Еще одним свойством, определяющим логику сопоставления, является массив полей поиска, определяемый в свойстве ПоляПоиска ПКО.
Рисунок 3. Настройки идентификации в модуле менеджера и в КД3.0.
В таблице 1 представлено описание использования данных настроек при автоматическом сопоставлении на разных этапах получения данных:
Вариант |
Этап анализа данных (при загрузке через помощник синхронизации данных) |
Ручное сопоставление (при загрузке через помощник синхронизации данных) |
Загрузка данных |
По GUID |
Запись соответствий в РПИ: делается, если соответствие нашлось при выполнении п.3. |
Сопоставлять можно со всеми объектами соответствующего типа, для которых нет соответствий в РПИ.
Запись соответствий в РПИ: делается по результатам сопоставления. |
Запись соответствий в РПИ: делается для либо с исходным GUID, либо с вновь сгенерированным, п. 1 не дал результата но объект с таким GUID уже есть в РПИ. |
По GUID и полям поиска |
Аналогично варианту «По GUID». |
Аналогично варианту «По GUID». |
Запись соответствий в РПИ: см. выше. |
По полям поиска |
См. колонку «Загрузка данных» |
Функция ручного сопоставления недоступна. |
Запись соответствий в РПИ: не делаются. |
Таблица 1. Правила работы настроек идентификации.
Алгоритм поиска по полям
Происходит последовательное применение вариантов поиска, заданных в свойстве ПоляПоиска ПКО, используемого при загрузке объекта.
Ограничение.При сопоставлении на этапе анализа данных применяется только 1-й вариант поиска.
Переход к следующему варианту осуществляется в двух случаях:
- У загружаемого объекта не заполнено какое-либо из полей, которое указано в варианте поиска.
- Вариант поиска не дал результата.
Если в загружаемом объекте есть информация об исходном GUID и вариант идентификации для объекта «По GUID» или «По GUID и полям поиска», то поиск выполняется среди всех объектов заданного типа, кроме тех, для которых в РПИ уже установлены соответствия.
В остальных случаях поиск осуществляется среди всех объектов информационной базы соответствующего типа.
Особенность.При сопоставлении на этапе анализа данных у загружаемых объектов не проверяется заполнение полей, участвующих в поиске.
Особенность.На этапе анализа данных соответствие будет установлено только в том случае, когда для одного объекта отправителя был найден один объект получателя.На этапе загрузки данных соответствие будет установлено и в том случае, когда для одного объекта отправителя нашлось несколько объектов получателя. В такой ситуации соответствие будет установлено с одним из них.
Особенность.На этапе загрузки данных вариант поиска Номер + Дата для документов работает следующим образом: номер искомого документа проверяется на точное соответствие, дата определяет интервал, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.На этапе анализа данных этот вариант поиска будет работать как обычно: оба поля будут проверяться на точное соответствие.
Роль регистра сведений в системе 1С
В регистре сведений могут храниться записи, содержащие различные характеристики и значения. Это могут быть данные о товарах, сотрудниках, клиентах или любых других объектах и событиях, которые необходимо отслеживать и анализировать.
Особенностью регистра сведений является его гибкость и настраиваемость. Пользователь может определить необходимые для хранения данные, а также выбрать подходящий способ сортировки, фильтрации и представления информации.
Регистры сведений различаются по своей структуре и функциональности. Они могут быть однородными, то есть содержать записи с одинаковыми полями и характеристиками. Или же могут быть составными, где каждая запись может иметь свою собственную структуру и набор полей.
Регистры сведений хранятся в отдельных файлах на сервере 1С. Это позволяет обеспечить надежность и безопасность данных, а также обеспечивает быстрый доступ и обработку информации.
Важно поддерживать уникальность записей в регистре сведений. Дубликаты данных могут привести к некорректной работе системы 1С и ошибкам в анализе информации
Поэтому необходимые методы и механизмы должны быть использованы для обеспечения уникальности записей.
Таким образом, регистр сведений является неотъемлемой частью системы 1С, позволяющей хранить, управлять и анализировать данные о различных событиях и объектах
Важно обеспечивать уникальность записей в регистре сведений, чтобы избежать проблем с дублированием данных
Особенности работы с регистром сведений
Когда работаем с регистром сведений, мы можем использовать различные измерения, которые дополняют данные и позволяют проводить анализ и сортировку информации. Измерения можно представить как различные атрибуты или характеристики объекта, по которым мы хотим группировать и анализировать данные.
Каждая запись в регистре сведений содержит информацию об объекте или явлении. Эта информация может быть представлена в виде полей, которые содержат конкретные значения и описания. При работе с регистром сведений мы можем добавлять, изменять и удалять записи, что позволяет нам обновлять и поддерживать актуальность данных.
Одной из важных особенностей работы с регистром сведений является необходимость обеспечения уникальности записей. Если в регистре сведений есть неуникальные записи, это может привести к некорректным результатам и ошибкам при анализе информации
Поэтому важно следить за тем, чтобы все записи были уникальными и не дублировались
Для обеспечения уникальности записей в регистре сведений можно использовать различные методы. Например, можно добавить проверки при добавлении новых записей, чтобы исключить возможность дублирования данных. Также можно использовать специальные инструменты и механизмы, предоставляемые системой 1С, для поддержания уникальности данных.
Записи регистра сведений: проблема неуникальных данных в 1С
Однако, среди записей регистра сведений может возникнуть проблема неуникальности данных. Это означает, что в одном регистре могут существовать несколько записей с одинаковыми значениями ключевых полей. Такая ситуация может привести к некорректным результатам при обработке данных и усложнить процессы анализа и поиска информации.
Поддержание уникальности записей в регистре сведений является важным аспектом системы 1С. Благодаря уникальным значениям ключевых полей, возможно более эффективно использовать функции поиска и фильтрации данных, а также избегать дублирования информации.
Для обеспечения уникальности записей в регистре сведений можно использовать различные методы. Во-первых, необходимо правильно определить ключевые поля регистра, которые должны быть уникальными для каждой записи. Во-вторых, можно использовать механизмы проверки уникальности при добавлении или изменении записей с помощью специальных функций и проверок в системе 1С.
В итоге, поддержание уникальности записей регистра сведений является важным фактором для эффективной работы системы 1С. Это позволяет избежать проблем, связанных с дублированием данных, и обеспечить точность и достоверность информации при обработке и анализе данных.
Находим одинаковые ячейки при помощи встроенных фильтров Excel.
Теперь рассмотрим, как можно обойтись без формул при поиске дубликатов в таблице. Быть может, кому-то этот метод покажется более удобным, нежели написание выражений Excel.
Организовав свои данные в виде таблицы, вы можете применять к ним различные фильтры. Фильтр в таблице вы можете установить по одному либо по нескольким столбцам. Давайте рассмотрим на примере.
В первую очередь советую отформатировать наши данные как «умную» таблицу. Напомню: Меню Главная – Форматировать как таблицу.
После этого в строке заголовка появляются значки фильтра. Если нажать один из них, откроется выпадающее меню фильтра, которое содержит всю информацию по данному столбцу. Выберите любой элемент из этого списка, и Excel отобразит данные в соответствии с этим выбором.
Вы можете убрать галочку с пункта «Выделить все», а затем отметить один или несколько нужных элементов. Excel покажет только те строки, которые содержат выбранные значения. Так можно обнаружить дубликаты, если они есть. И все готово для их быстрого удаления.
Но при этом вы видите дубли только по отфильтрованному. Если данных много, то искать таким способом последовательного перебора будет несколько утомительно. Ведь слишком много раз нужно будет устанавливать и менять фильтр.
Поиск и удаление повторений
-
(Conditional Formatting >выберите уникальным или повторяющимся
таблице.Перед удалением повторяющиеся вас актуальными справочнымиВ некоторых случаях повторяющиеся вкладке «Параметры» из
-
одинаковые значения чисел отметить, я обычно идем в меню отображались только дублирующиеся или каким-либо другим Существуют пути получше.. Для этого наведите находятся на одном сравнить 2 столбца,
-
New Rule).уникальные значениям невозможно.На вкладке значения, рекомендуется установить материалами на вашем данные могут быть выпадающего списка «Тип количества в столбце
Удаление повторяющихся значений
в пустой столбец Формат — Условное значения, и выделите способом…Если Ваши столбцы не указатель мыши на листе найти повторяющиеся значения,Нажмите на
-
илиБыстрое форматированиеданные
для первой попытке языке. Эта страница полезны, но иногда данных:» выберите опцию B. Формулу следует ставлю что-нибудь, единицу
-
форматирование. Выбираем из эти ячейки. КликнитеВ этом случае отфильтруйте имеют заголовков, то правый нижний уголВариант В: столбцы находятся а затем совершитьИспользовать формулу для определенияповторяющиесяВыполните следующие действия.
нажмите кнопку выполнить фильтрацию по переведена автоматически, поэтому они усложняют понимание «Список».
протянуть маркером (скопировать) например и продлеваю. выпадающего списка вариант по ним правой дубликаты, как показано
-
их необходимо добавить. ячейки на разных листах
support.office.com>
Внутренние идентификаторы объектов
В идеальном случае данные синхронизируемых приложений могли бы сопоставляться по уникальным внутренним идентификаторам объектов (GUID). Но для этого необходимо, чтобы добавление данных, подлежащих синхронизации, осуществлялся только в одном приложении, а в другом эти данные появлялись исключительно в результате синхронизации. В этом случае GUID в двух приложениях у одинаковых объектов будут одинаковыми, и по ним можно будет однозначно сопоставить объекты.
На практике соблюдать данное требование не всегда возможно, особенно в случае настройки синхронизации между приложениями, работа в которых велась независимо. Это связано с тем, что у двух одинаковых объектов, созданных параллельно в каждом приложении, будет два разных GUID.
В некоторых случаях данные не могут быть сопоставлены по GUID по причине его отсутствия (особые случаи, которые не рассматриваются в данной статье).
Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2
Обработка позволяет перенести из УПП в ERP / 1С:УТ 11 / КА 2 всю возможную информацию. Переносятся документы, а также начальные остатки и справочная информация. Типовая обработка от фирмы 1С не позволяет сохранить документы за период работы. Кроме того, наши алгоритмы выгрузки начальных остатков тоже имеют больше функционала и тщательно проверялись на реальных проектах перехода с УПП на ERP.
При приобретении обработки вы будете 1 месяц получать ее обновления, далее можно приобрести подписку на обновления. Конфигурации 1С постоянно меняются, выходят новые релизы. Имея подписку на обновления, вы всегда можете быть уверены, что правила конвертации данных будут работать на ваших базах 1С.
50722 руб.
341
Ошибки, которые нужно избегать при настройке уникальных индексов
Настройка уникальных индексов является важным шагом при разработке и поддержке баз данных в 1С. Неправильно настроенные индексы могут привести к дублированию ключей и ошибкам в работе системы.
Ниже приведены некоторые ошибки, которые нужно избегать при настройке уникальных индексов в 1С:
- Дублирование ключевых полей: При создании уникального индекса необходимо включать только те поля, которые действительно являются ключевыми и гарантируют уникальность записи. Дублирование полей может привести к дублированию ключей и некорректной работе системы.
- Неправильный порядок полей в индексе: Порядок полей в уникальном индексе должен соответствовать порядку полей в ключе сущности. Перестановка или изменение порядка полей может привести к созданию нового индекса, отличного от ожидаемого, и потере уникальности ключей.
- Использование неправильных типов данных: При настройке уникального индекса необходимо учитывать типы данных полей, которые включаются в индекс. Неправильный выбор типа данных может привести к некорректному сравнению значений и ошибкам в работе системы.
- Неправильное определение индекса: Индекс должен быть определен на тех полях, которые наиболее часто используются при поиске, фильтрации и объединении данных. Неправильное определение индекса может привести к замедлению работы системы и неправильным результатам запросов.
- Добавление ненужных полей в индекс: Включение в индекс ненужных полей может привести к его увеличению в размере и замедлению работы системы. Необходимо включать в индекс только те поля, которые действительно являются ключевыми и необходимы для обеспечения уникальности записей.
Избегая указанных выше ошибок при настройке уникальных индексов, вы сможете обеспечить корректную работу базы данных в 1С и предотвратить возникновение ошибок связанных с дублированием ключей.
Вариант №2: Удаление дублей записей
Можно попытаться найти дубли записей и что-то с ними сделать. В нашем случае для поиска дублей записей в таблице “_AccRgAT1819” можно воспользоваться таким скриптом:
SELECT COUNT(*)RowCount, _Fld774, _AccountRRef, _Period, _Fld787RRef, _Value1_TYPE, _Value1_RTRef, _Value1_RRRef, _Fld788RRef, _Fld789RRef, _Splitter FROMdbo._AccRgAT1819 GROUPBY _Fld774, _AccountRRef, _Period, _Fld787RRef, _Value1_TYPE, _Value1_RTRef, _Value1_RRRef, _Fld788RRef, _Fld789RRef, _Splitter HAVINGCOUNT(*)>1
В каждом случае скрипт выглядит по своему, но общий шаблон такой.
SELECT COUNT(*)RowCount, 'Список измерений. Можно посмотреть в основном кластерном индексе'ASИзмерения FROMdbo._AccRgAT1819 GROUPBY 'Список измерений. Можно посмотреть в основном кластерном индексе' HAVINGCOUNT(*)>1
После того как дубли записей будут найдены можно выполнить одно из следующих действий над ними:
- Удалить из базы, если они действительно не нужны. Стоит учесть, что нужно будет удалить не только из одной таблицы, но и из всех связанных таблиц регистра (таблиц итогов несколько, нужно это понимать).
- Исправить данные как нужно с учетом также нескольких таблиц итогов.
- “Схлопнуть” данные по измерениям (полям кластерного индекса), тем самым убрав дубли.
Готовых скриптов тут не будет, т.к. каждый случай требует своего подхода. Самое главное, чтобы все действия выполнял человек, компетентный в SQL-синтаксисе запросов. Сразу скажу, что в нашем примере дублей строк не было, то есть этот способ нам не подходит. Опыт показывает, что обычно дубли строк в таблице отсутствуют.
Зато этим подходом можно найти случаи, когда дублей по полям индекса нет, но есть много дублей без учета поля-разделителя “_Splitter”, который используется при включенном разделении итогов. Платформа 1С иногда может вставить в таблицу итогов повторяющуюся запись с таким же значением разделителя. Ниже расскажу о возможных причинах такого поведения и как это обходить.
Простой пример
Есть независимый непериодический регистр сведений “ДанныеДоговоровКонтрагентов” с такой структурой.
Если попытаться записать в него данные с повторяющимися значениями контрагента и договора, то мы поймаем такую ошибку.
То есть платформа контролирует уникальность самостоятельно, в отличии от записи объектов (документов, справочников и т.д.) с одинаковой ссылкой. Это можно определить просто взглянув на сообщение об ошибке, там нет никаких признаков, что исключение появилось на уровне СУБД. Но рано радоваться, возьмем сложный пример — регистр бухгалтерии.
Что же с данными моими стало
Думаю, с этим многие могли сталкиваться — при попытке провести документ прошлого периода возникает ошибка на таблицах регистра бухгалтерии примерно такого вида.
История возникновения у каждого своя, но типичные случаи все же:
- Нужно изменить записи бухгалтерского регистра в прошлом периоде
- Нужно дозагрузить данные в текущий или прошлый период
- Нет никакой предыстории, просто при вводе новой операции вот такая ошибка :).
Прежде чем говорить о решении отметим, что регистр состоит из следующих таблиц.
Метаданные | Назначение | Имя таблицы SQL |
---|---|---|
РегистрБухгалтерии.Хозрасчетный | Основная | _AccRg786 |
РегистрБухгалтерии.Хозрасчетный | ИтогиПоСчетам | _AccRgAT0800 |
РегистрБухгалтерии.Хозрасчетный | ИтогиПоСчетамССубконто1 | _AccRgAT1819 |
РегистрБухгалтерии.Хозрасчетный | ИтогиПоСчетамССубконто2 | _AccRgAT2820 |
РегистрБухгалтерии.Хозрасчетный | ИтогиПоСчетамССубконто3 | _AccRgAT3821 |
РегистрБухгалтерии.Хозрасчетный | ИтогиМеждуСчетами | _AccRgCT822 |
РегистрБухгалтерии.Хозрасчетный | ЗначенияСубконто | _AccRgED823 |
РегистрБухгалтерии.Хозрасчетный | НастройкиХраненияИтоговРегистраБухгалтерии | _AccRgOpt825 |
Ошибка вставки не уникального значения была на таблице “_AccRgAT1819”, а эта таблица итогов по счетам с субконто 1. Пока это ничего не дает, рассмотрим варианты решения.
Если проблема у Вас горит и хочется попробовать сразу исправить ее рецептами ниже, то сразу говорю: “Ответственность за все действия лежит только на Вас! Делайте бэкап базы! А если не уверены в своих силах, то пригласите компетентного специалиста.
Публичные идентификаторы объектов
Для успешного сопоставления объектов с разными GUID должно быть место для хранения информация об их соответствии. Таким местом является регистр сведений Публичные идентификаторы синхронизируемых объектов (далее РПИ). Структура регистра представлена в таблице:
Измерения |
Тип |
Назначение |
Узел информационной базы | ПланОбменаСсылка | Ссылка на узел плана обмена (настройку обмена), для которой хранится соответствие. |
Ссылка |
СправочникСсылка,ПланВидовХарактеристикСсылка,ДокументСсылка | Ссылка на объект текущего приложения. |
Идентификатор | Строка (36) | GUID объекта, полученного от приложения-корреспондента. |
При получении данных записи в регистре могут появляться на нескольких этапах (см. рисунок 1). Подробное описание самих алгоритмов сопоставления см. .
Рисунок 1. Этапы, на которых могут быть сделаны записи в РПИ
Этапы, помеченные пунктиром, опциональные: при выполнении сеанса обмена в автоматическом режиме отсутствуют этапы 1 и 2, при выполнении в интерактивном режиме этап 2 может быть пропущен пользователем.
Записи в РПИ создаются и на стороне отправителя при подтверждении получения данных корреспондентом через механизм квитирования. В поле Идентификатор в таких записях устанавливается исходный идентификатор объекта. Регистрация таких записей необходима для того, чтобы при получении других данных от корреспондента можно было понимать, что данный объект должен быть исключен из процедуры поиска по полям и по уникальному идентификатору.
В процессе обмена данные РПИ обеспечивают следующую функциональность:
- Сопоставление объектов при получении данных (см. рисунок 2-а).
- Обработка получаемых данных (замена ссылок) с целью обеспечения ссылочной целостности (см. рисунок 2-b).
- Обработка отправляемых данных (замена ссылок) для исключения повторного сопоставления на стороне приложения-корреспондента уже сопоставленных данных (см. рисунок 2-b).
Рисунок 2. Использование данных РПИ при получении и при отправке данных.
Вариант №3: Отключаем уникальность индекса
Это 100% рабочий вариант, но только в качестве временного решения. Просто берем о перестраиваем индекс с отключением уникальности.
После этого никаких проблем не будет при записи проблемного документа. Почему это временное решение?
- При реструктуризации платформа восстановит уникальность индекса, что приведет к той же ошибке, которую мы пытались обойти.
- Индекс будет работать менее эффективно после отключения уникальности.
- Если не разобраться почему появляются дубли записей в итогах, то можно столкнуться с еще более интересными последствиями в будущем.
Но как временное решение способ идеальный. Можно отключить уникальность, а потом с помощью способов 1 или 2 исправить итоги. Или поискать причину дублей, просто проанализировав записи в итогах.