Ошибка: Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server. При переходе с Бух ПРОФ на КОРП и не только

16.06.17

Задачи пользователя - Корректировка данных

Пример текста ошибки: Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server Native Client 11.0: Выполнение инструкции CREATE UNIQUE INDEX прервано, поскольку обнаружен повторяющийся ключ для объекта с именем "dbo._InfoRg22530" и индекса с именем "_InfoRg22530_ByPeriod". Повторяющееся значение ключа: (0, 3900-01-01 00:00:00, 0x9100fa815581b9604de110ca98afc344, 0x00000000000000000000000000000000). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Убрать NULL в субконто РегистрацияВНалоговомОргане для Бухгалтерии 3.0 КОРП
.epf 11,39Kb
257
257 Скачать (1 SM) Купить за 1 850 руб.

Ошибка возникает, если в базе есть у каких-то объектов, реквизитов, субконто  - значение NULL, а у них такого значения быть не может. И появляется такая ошибка только в SQL базах. Т.е. если такую базу выгрузить в файловую, то там уже этой ошибки не будет. Т.к. у файловой базы свои таблицы (всего 4 шт.), а у SQL свои. И SQL база критично реагирует на такие значения в своих таблицах.

Эта проблема не решается никакими тестированиями (ни внешним, ни внутренним) ни в каких вариантах баз (SQL или файловая) и даже Процедурой _1sp_DBReindex в менеджере SQL, которая вроде как должна проводить реструктуризацию таблиц в SQL.

Разберём решение проблемы на примере перехода с Бухгалтерии 3.0 ПРОФ на КОРП. После перехода у счёта 68.01 появляется новое субконто РегистрацияВНалоговомОргане. И тогда, в базах на SQL, все создание в ПРОФ версии документы которые используют этот счёт, не будут перепроводится. Будет выходить выше показанная ошибка. Т.к. это новое субконто у старых документов, в проводках, запишется со значением NULL (хотя должно быть Пустое значение, ну или как-нибудь налоговый орган).

Чтобы устранить эту ошибку, нужно убрать значения NULL там, где их не должно быть. В данном случае в документах, где используется субконто РегистрацияВНалоговомОргане. Сделать это можно, написав обработку, которая заменит NULL на Пустое значение (готовую обработку можно скачать из этой статьи). Делать обработкой, т.к. попытка изменить значение этого субконто в проводках документа вручную, приводит к всё той же ошибке.

Обработку для замены NULL'ов во всех субконтах РегистрацияВНалоговомОргане можно скачать из этой статьи, внизу.

.НО так заменить NULL в SQL базе не получится, во время выполнения обработки будет выдана та же самая ошибка. Поэтому необходимо сделать так:

1. Выгрузить уже рабочую, переведённую на КОРП версию, SQL базу в dt’шник (в конфигураторе Администрирование – Выгрузить базу – выберите куда выгрузить базу в виде файла *.dt)

2. Загрузить dt’шник в файловую базу (в ненужной или заранее подготовленной, чистой, файловой базе, в конфигураторе Администрирование – Загрузить базу – выбрать выгруженный ранее dt’шник)

3. Выполнить обработку в файловой базе (там ошибки не будет и все NULL’ы корректно заменяться) (как выполнить обработку описано ниже)

4. Выполнить внешнее и внутреннее тестирование базы. Это обязательно нужно сделать иначе при загрузке базы обратно в SQL будет выходить та же ошибка. (как выполнить эти тестирования можно посмотреть тут: http://kb.stspp.ru/software/inner_and_outer_1c_testing)

5. Теперь наоборот выгрузить dt’шник из файловой базы и загрузить его в SQL базу. Теперь при проведении обработанных документов ошибки выходить не будет.

Обработка из этой статьи находит все документы, за указанный период, у которых в проводках фигурирует субконтно РегистрацияВНалоговомОргане (которое появляется в КОРП версии), у которого значение NULL. И заменяет это значение на Пустое значение.

В обработке необходимо указать период, за который необходимо обработать документы (можно за весь период в котором ведётся учёт в базе) и нажать «Заполнить табличную часть». После чего можно галками пометить какие документы обработать (можно выбрать все) и нажать кнопку «Выполнить обработку».

Соответственно если у кого-то такая же ошибка, но НЕ после перехода на КОРП, а на пример после обмена, загрузки каких-то данных, выполнения каких-то обработок и т.д. То необходимо выявить, где присвоилось значение NULL в конкретном документе/справочнике и подобным способом убрать этот NULL но уже своей обработкой, но в том порядке, как описано выше. Помните, что NULL может быть, как в проводках документа, в т.ч. не только бухгалтерских, так и где-нибудь на форме документа/справочника, в каком-нибудь реквизите, но в таком случае он наверно даже не откроется.

Также если это ошибка появилась у вас при проведении документа, после того как вы перевели файловую базу Бух КОРП на SQL (а база когда-то изначально была ПРОФ), то значит у тех документов что были созданы в ПРОФ версии, сейчас также в субконто РегистрацияВНалоговомОргане значение NULL и SQL база такое не приемлет. И при загрузке базы в SQL будет выходить такая ошибка. Тут на самом деле в файловой базе значений NULL по факту не будет, но SQL в свои таблицы загрузит именно такие значения. Поэтому тут надо заставить базу SQL создать эти NULL'ы и потом в файловой базе их исправить. Но как это сделать, уже не подскажу.

Попытка вставки неуникального значения в уникальный индекс SQL ПРОФ КОРП NULL Выполнение инструкции CREATE UNIQUE INDEX прервано поскольку обнаружен повторяющийся

См. также

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    32666    106    152    

73

SALE! 20%

Корректировка данных Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

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

3600 2880 руб.

10.02.2017    110496    662    174    

702

Закрытие периода Корректировка данных Бухгалтер Пользователь Платформа 1С v8.3 Оперативный учет 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

4800 руб.

27.10.2021    23918    241    35    

78

Корректировка данных Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет НДС Платные (руб)

Обработка предназначена для корректировки входящего НДС при смене системы налогообложения индивидуального предпринимателя с УСН на ОСНО в 1С:Бухгалтерия предприятия 3.0

4000 руб.

18.07.2024    688    1    0    

1

Корректировка данных Зарплата Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Внешняя обработка предназначена для исправления самых различных ошибок, возникших по самым разным причинам. Общее проявление этих ошибок видно в различии данных между: проводками и различными отчетами по НДФЛ, заполнении ведомостей на выдачу зарплаты, неверным расчетом НДФЛ при начислении ЗП и т.д.

3600 руб.

09.02.2024    1680    11    5    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. keyn5565` 18 16.06.17 15:06 Сейчас в теме
Все это очень легко исправить через SQL Server Management Studio
Просто находим таблицу на которую ругается 1С, и удаляем индекс
Pacmanius; user940353; sstas007; WellMaster; +4 Ответить
2. max_st 323 19.06.17 12:49 Сейчас в теме
(1)
Все это очень легко исправить через SQL Server Management Studio
Просто находим таблицу на которую ругается 1С, и удаляем индекс


После реструктуризации таблицы регистра опять получим такую же ошибку.
Аналогичную проблему получил при включении среза последних для таблицы регистра сведений. Реквизит регистра сведений был индексируемым, после создания физической таблицы среза последних платформа создала индекс для этого реквизита в таблице среза последних, но при вставке данных в таблицу получаем сообщение об ошибке о не уникальном значении.
Индекс можно удалить в SSMS, но после реструктуризации этой таблицы индекс снова будет создан и при вставке значений в таблицу получим ошибку.
В итоге, индекс для реквизита пришлось отключить в платформе (аналогичный индекс можно уже создать вручную).
3. mikki_1C 14.05.18 17:09 Сейчас в теме
А если база больше 150 Гб ? каким образом вы ее в файловую выгрузите?

Обнаружили аналогичную ошибку. При обновлении бухгалтерии на 3.0.60.44 релиз создал операции создающими ошибку описанную в статье.
4. МихаилМ 14.05.18 20:09 Сейчас в теме
(3) на копии отключайте индекс , обновляйте, анализируйте причину дублирования , что бы не повторялось.
удаляете или сворачиваете "лишние" данные в таблицах, престраиваете индекс. воспроизводите на рабочей базе.
5. МихаилМ 14.05.18 21:29 Сейчас в теме
+(3) создание индекса 1с отключите с помощью ddl триггера
11. МихаилМ 28.05.18 10:04 Сейчас в теме
6. mikki_1C 15.05.18 09:57 Сейчас в теме
сделал попроще... поставил в SQL пропуск повторных значений -> обновил -> провел манипуляции -> убрал в SQL пропуск пустых значений...

Дело тут в другом

У меня несколько баз с разным объемом до 200 Гб
3 базы полностью штатные и ведутся не более 3-х лет. (чистая поддержка)
Почему я должен на платной поддержке и купленной программе получать такие болты при обновлении?
Почему я должен искать неуникальные записи и проводить с ними какие либо действия?
Техподдержка в 1С похожа на твердолобых бюрократов, а не на техподдержку своего продукта...
В 3-й раз убеждаюсь что от техподдержки компании Нуралиева - толку ноль - он может ее распустить и пополнить свой карман...
Вместо того, чтобы создать нормальный инструмент по избитой теме "неуникальное значение в уникальный индекс" пользователи раз от разу огребают на ровном месте.
В моем случае, неуникальное значение было создано предыдущим обновлением 1С, а последствия дурного обновления были замечены через месяц.
Почему пользователь должен исправлять ошибки программистов 1С - т.к. техподдержка в 1С убогая и неработоспособная?
juker; user1424302; Raskad; Tarlich; user824670; О.Ж; An585; Zelenaya1; SuhoffGV; Vin1s; +10 1 Ответить
16. ZergKRSK 130 23.09.19 07:58 Сейчас в теме
(6)
сделал попроще... поставил в SQL пропуск повторных значений -> обновил -> провел манипуляции -> убрал в SQL пропуск пустых значений...

Где в скл устанавливается пропуск повторных значений? База у меня огромная, все остальные способы не подходят. Заранее спасибо.
7. Dimma 9 18.05.18 09:49 Сейчас в теме
Решение проблемы гораздо проще:
1.Выключить использование итогов. В режиме Предприятия перейти: Администрирование - Обслуживание - Регламентные операции - Управление итогами и агрегатами, нажать ссылку Полные возможности, найти в списке "Журнал проводок (бухгалтерский и налоговый учет) (регистр бухгалтерии)" и установить на него курсор, в командной панели выбрать команду "Итоги - Выключить использование итогов".
2. Перезаписать интерактивно документы с ошибками.
3. Включить использование итогов (см. п. 1, только выполнить команду "Итоги - Включить использование итогов").
lenchik_chik; 300_po_vstrechke; Onaisoft; nord; polyplastic; user1628996; vwsav; Rom_0976; Raskad; usatov-nikolay; Летяга; george_tag; FoxDW; Waleinfo; lutsiy2; user1070438; user1621956; 6385232; antonius888; alekseineputin; ежист; 31ric; Shida; SmilingRe; vasya_vasechkin; tanat74; rouses; purgin; Ctrl P; Klyacksa; volchica; SeTIrk; dronrevx; Talim; shira84; Alexoniq; ivanleb; MarMargo; user1076183; stdstd; Csar; nachrichter; rossin; Users-1c; Lacoste4life; krolya; user819530; Virsy; TimoninD; Vin1s; Neuroproton; EASports; JohnyDeath; korales; Софт-Релиз; kozachenkoiv; soi; Ole4ik; megaster; Fenin; user1232315; WellMaster; DennyPhilord; Улыбайка; s0u1; vvmr; alon; wing; karaw; evergrim; blackjack666; jusin; АннаШ; Vilkinson; dage; mihco; kukuku2000; kaspar_; eugeny_g; gala2009; dr_dom; +81 Ответить
14. aselik 23 08.08.18 15:16 Сейчас в теме
(7) Отключение итогов помогло, за что большое спасибо! И своя обработка, которая заменила NULL непосредственно в проводках, потому что проводить документы не хотелось.
15. gala2009 31 16.10.18 12:22 Сейчас в теме
17. karaw 128 19.12.19 12:30 Сейчас в теме
(7) Реально помогло. Спасибо!
18. Улыбайка 7 25.06.20 11:43 Сейчас в теме
(7) + помогло, ошибка возникало на документе Операция, после свертки базы
Waleinfo; О.Ж; MarMargo; +3 Ответить
20. korales 15.03.21 13:25 Сейчас в теме
(7) Странно что такая ошибка вылезла в 2021 году, но ваше решение очень помогло, большое спасибо
21. Neuroproton 33 05.04.21 07:17 Сейчас в теме
(7) огромное спасибо, даже через три года актуально
22. Дон Кихот 19.05.21 19:01 Сейчас в теме
(21)В описании решения из сообщения(7) второй пункт предлагает перезаписать интерактивно документы с ошибками.
А как их найти? Правильно я понимаю что нужно найти во всех регистрах накопления записи, где есть значение NULL? Регистраторы этих записей и будут этими документами?
23. Neuroproton 33 07.06.21 13:34 Сейчас в теме
(22) у меня проблема в другую сторону была, я знал какие конкретно документы не проводятся, ими были вводы остатков
29. stdstd 55 11.01.22 16:12 Сейчас в теме
(7) + помогло это решение в 2022 году
Skyeng; О.Ж; +2 Ответить
31. MarMargo 15.02.22 11:06 Сейчас в теме
(7) спасибо!
шел 2022 год, а эта ошибка после свертки всё еще живёт(
blackjack666; Skyeng; О.Ж; +3 Ответить
34. dronrevx 39 19.03.22 14:24 Сейчас в теме
(7) То что нужно, помогло спасибо!
36. olga-iv-z 25.03.22 13:15 Сейчас в теме
(7) Отключение итогов помогло. Ошибка в документе ввода остатков. Спасибо
40. YozZzhik 31.08.22 10:52 Сейчас в теме
(7) Август 2022 год, Выключаю итоги, перепровожу документы, вываливается ошибка - Использование итогов запрещено и документ не проводится) Видимо 1С наконец поправили что-то... и это что-то заблокировало решение проблемы)))
44. Waleinfo 17.02.23 15:47 Сейчас в теме
(7) + помогло, ошибка возникала на документе "Операция ввода остатков", после свертки базы
46. Raskad 10 03.05.23 14:00 Сейчас в теме
(7)Подтверждаю. Помогло. Ошибка срабатывала именно на замене NULL в документах "ОперацияБух". После выключения итогов и запуска своей обработки смог убрать NULL.
47. lenchik_chik 02.08.24 18:45 Сейчас в теме
8. ValeriyZ 19 28.05.18 00:59 Сейчас в теме
Словил эту проблему при переходе на корп. В sql не загрузился dt. Обработка ни одного документа не нашла.
9. МихаилМ 28.05.18 07:50 Сейчас в теме
(8) публикация помогла ?
10. ValeriyZ 19 28.05.18 08:24 Сейчас в теме
(9) Нет. "Заполнить документы" не нашла ни одного документа, соответственно исправлять ей было нечего
12. dr_dom 62 03.07.18 17:20 Сейчас в теме
(8) 7 пробовали, помогло?
13. ValeriyZ 19 03.07.18 18:05 Сейчас в теме
(12) Мне неизвестны документы с ошибками, чтобы перепровести их интерактивно, соответственно искалась обработка, которая сделает это за меня. Времени на решение проблемы много не предоставили, клиента устроил вариант с файловой базой.
19. Sangre1999 50 06.07.20 23:06 Сейчас в теме
Решили аналогичную проблему созданием и разверткой бэкапа PostreSQL. Таблицы пересоздались с другими именами и без ошибок
24. mast67 09.08.21 05:39 Сейчас в теме
Обсуждение помогло справиться с похожей проблемой силами конфигуратора.
Пункт меню "Тестирование и исправление информационной базы".
Сначала делаем "Реструктуризация таблиц информационной базы".
Потом "Проверка логической целостности информационной базы", которая удалит ошибочные записи.

Проверял на файловом варианте.
На серверном тоже. На серверном, правда на первом пункте выскочила ошибка, но другая.
Но при выполнении 2-го пункта - все сбойные записи тоже были удалены.

После удаления ошибочных записей - не дожидался конца тестирования, снимал задачу.
Делал выгрузку в dt-файл.
И загрузку в чистую базу, чтобы уменьшить размер базы. А то база сильно распухает от этих манипуляций.

Работаем дальше.
user1481387; chmaxim.reg; fokses; SrPomidoro; +4 Ответить
30. fokses 08.02.22 17:24 Сейчас в теме
(24)
Сначала делаем "Реструктуризация таблиц информационной базы".
Потом "Проверка логической целостности информационной базы", которая удалит ошибочные записи.


Помогло, спасибо. Была аналогичная проблема на небольшой базе. Во время проверки логической целостности сообщений об удалении записей не было, однако, база успешно загрузилась после этого
38. Котяня 130 05.04.22 16:55 Сейчас в теме
(24) Огромное спасибо.
Ваш алгоритм помог.
База клиент-серверная, никаких сверток не было, просто регулярно перебои с питанием у серверной машины, вследствие чего завелась куча ошибок, зависающих сеансов и прочего мусора.
Сделала реструктуризацию, потом проверку логической целостности, потом общее тестирование.
25. AOPGOdin 06.10.21 17:33 Сейчас в теме
Не помогла обработка(
26. Csar 23.12.21 00:17 Сейчас в теме
(25) тебе надо найти записи с NULL вместо нужного субконто в виде пустой ссылки и не обработкой заполнять, а просто выполнить операции в (7).
У самого база более 300Гб и все получилось по инструкции (7).
27. Csar 23.12.21 00:20 Сейчас в теме
У 1С косячит свертка базы и мое письмо с прикрепленной типовой демо базой и демонстрацией ошибки значения NULL они не смогли/ не захотели понять, хоть и было расписано так, что студент-гуманитарий поймет. В итоге находимые корявые остатки исправлял вручную просто перепроведя ОперациюБух, либо предварительно переоткрыв в строке Операции ячейку с пустым/незаполненным субконто, а затеерезаписав ОперациюБух.
28. kerimkul 52 30.12.21 07:20 Сейчас в теме
В БГУ 2 отжим итогов как-то не помог, зато помогло удаление проводок =)
32. nksk 13.03.22 14:11 Сейчас в теме
(7) Как выполнить пункт 2
33. Dimma 9 14.03.22 10:34 Сейчас в теме
(32) перепровести документы
35. aksuniongroupcom 25.03.22 09:10 Сейчас в теме
(7) Большое спасибо! Помогло в 1С Бухгалтерия ред.3., ошибка была после свертки базы.
37. Andruykha 179 04.04.22 16:10 Сейчас в теме
Обработка не помогла, но помогло след решение https://infostart.ru/1c/articles/1495366/
39. mar.003 28.04.22 17:42 Сейчас в теме
(7) + Спасибо!
Док ввода остатков свёрткой (как ни странно)
41. stels911 15.09.22 13:49 Сейчас в теме
Была такая ошибка при закрытии месяца. Пересчет итогов не дал результатов. Вычисляли документ на котором спотыкалось закрытие месяца через остановку по ошибке к конфиге. Документ был Поступление безналичных ДС. Распровели и провели заново документ и ошибка ушла.
"Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 11.0: Не удается вставить повторяющуюся строку ключа в объект "dbo._AccumRg67639" с уникальным индексом "_AccumRg67639_1". Повторяющееся значение ключа: (0, 4022-06-09 23:59:59, 0x000104a5, 0x816e005056b2f0f011ecbfacfc4d07b2, 5)."
42. SuperEmboser 13 30.01.23 17:42 Сейчас в теме
Хотел бы также поделится своим опытом. Была схожая проблема, гугл привел в эту тему. Может кому то поможет. При загрузке дт файла в серверную базу на постгри получил текст ниже. Конфа на полной поддержке

Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Нарушено условие уникальности данных.

Попытка вставки неуникального значения в уникальный индекс:
23505: ERROR: could not create unique index "_scheduledjobs40648_1"

Расследование показало наличие задвоенных записей в указанной таблице, снял с поддержки удалил регламентное задание из конфигурации которое было задвоено, применил, после загрузил конфигурацию поставщика поверх всего опять применил- ошибка ушла, в постгри развернулась успешно
43. user1621956 03.02.23 13:26 Сейчас в теме
45. serge_msk 151 02.03.23 21:31 Сейчас в теме
(42)
_scheduledjobs40648_1


Аналогичная проблема. При обновлении базы, а также при загрузке из dt файла возникает ошибка задвоения индекса Регламентного задания:

Попытка вставки неуникального значения в уникальный индекс:
23505: ERROR: could not create unique index "_scheduledjobs33488_1ng"
DETAIL: Key (_id)=(\xb2889ace9950ad0848f290081651ba46) is duplicated.

В процессе обновления информационной базы произошла критическая ошибка
по причине:
Нарушено условие уникальности данных.


Выяснил, что это было регламентное задание "Обновление индекса ППД".

Решение:

1. Включаем изменение конфигурации, снимаем с поддержки.
2. Удаляем проблемное регламентное задание из конфигурации ( если не можете выяснить, то можно удалить все регламентные задания)
3. Сравниваем + объединяем с конфигурацией поставщика, но не ставим на поддержку. При этом удалённые задания восстанавливаются из конфигурации поставщика.
4. Загружаем конфигурацию поставщика.

Результат: база на поддержке, проблемные объекты конфигурации заменены на правильные, ошибка пропала.
Оставьте свое сообщение