Имя: Пароль:
1C
1С v8
Ошибка SQL: Попытка вставки неуникального значения в уникальный индекс ☑
0 УПП
 
09.12.11
✎
11:22
Парни, нужна помощь, в общем такая вот ошибка при записи документа:

Ошибка при вызове метода контекста (Записать): Попытка вставки неуникального значения в уникальный индекс:
Microsoft OLE DB Provider for SQL Server: Cannot insert duplicate key row in object 'dbo._AccRgAT31272' with unique index '_AccRg31272_ByPeriod_TRRRRRRN'. The duplicate key value is (Oct  1 2011 12:00AM, 0xb78b44e770856be44f72929f83d798ec, 0xa5c250505450303011da76ca1e1af82a, 0x08, 0x000000aa, 0x92530013724ce51f11dc1983fdfdd899, 0x08, 0x000000b7, 0xa164001ec9eba4bc11dea12447b43801, <NULL>, <NULL>, <NULL>, <NULL>, 0).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1


Как пытался исправить:
1. Выгрузка загрузка базы (*.dt) не помогает
2. Выгрузка загрузка базы (*.dt), с установкой новой смещении дат не помогает так же
3. Делал тестирование и исправление (без проверки ссылочных данных), тоже не помогло

Что еще можно попробовать ?
1 shamannk
 
09.12.11
✎
11:23
выгрузи создай новую базу скл и залей туда dt, мне как то помогло
2 rs_trade
 
09.12.11
✎
11:23
(0) жаль пояс богородицы уехал. а то можно было бы попробовать ему поклониться.
3 УПП
 
09.12.11
✎
11:25
(1) Это я уже делал.
4 УПП
 
09.12.11
✎
11:26
(2) :))) Ну давайте без подъебок :) Ну зачем детский сад устраивать, вроде взрослые люди.
5 УПП
 
09.12.11
✎
11:26
+0 Как пытался исправить:
1. Выгрузка загрузка базы (*.dt) не помогает
2. Выгрузка загрузка базы (*.dt), с установкой новой смещении дат не помогает так же

-----------
Естественно создавалась новая база SQL для этих пунктов.
6 rs_trade
 
09.12.11
✎
11:27
Ищи дубли, причину их появления, удали дубли. Ищи по форуму. Недавно только ветка была.
7 Kom-off
 
09.12.11
✎
11:27
1. Проанализировать данные в регистре накопления _AccRgAT31272 - имя которого в конфигураторе можно получить функцией ПолучитьСтруктуруХраненияБазыДанных().
2. Если найденны некорректные данные, то исправить их возможными способами.
3. Проиндексировать таблицы базы данных на уровне SQL. Кстати, можно попробовать первым делом.
8 shamannk
 
09.12.11
✎
11:28
(5) У гилева поисче что то было у него по этому поводу.
9 rs_trade
 
09.12.11
✎
11:31
10 УПП
 
09.12.11
✎
11:42
(7) да я как раз первым же делом реиндексацию сделал, не помогла.
11 УПП
 
09.12.11
✎
12:05
_AccRgAT31272 это Хозрасчетный регистр (Итоги по счетам с субконото 3) как раз у этой таблице единственный индекс: _AccRg31272_ByPeriod_TRRRRRRN и на него ругается
12 Kom-off
 
09.12.11
✎
12:10
(11) Ну, посмотри, там в ошибке в (0) есть несколько УиДов, точнее их представлений в SQL. На Инфостарте есть статейка недавняя про преобразование их в УИД-ы 1С. Один из них, наверняка, УИД документа регистратора. Вот с его поиска и начни.
13 УПП
 
09.12.11
✎
12:12
(12) Спасибо за подсказку, сейчас поищу статейку и докопаюсь до кривых регистраторов.
14 Kom-off
 
09.12.11
✎
12:12
(13) "Ну, а дальше - дело техники" (с) Бриллиантовая рука. :-)
15 sda553
 
09.12.11
✎
12:12
(0) Я знаю эту ошибку.
Простыми методами (без бэкапа) ее не так то просто победить.
Причина скорее всего в том, что недавно поменяли количество субконто.

Теперь в таблице бухгалтерии субконто есть некие записи которые по плану счетов у этих счетов быть не должно. Или наоборот, вместо необходимых значений субконто по плану счетов положенного, в таблице null
16 sda553
 
09.12.11
✎
12:16
(15) Процедурка починки очень комплексная. Пишется запрос который сравнивает текущие значения субконто с разрешенными видами субконто в плане счетов. Отбираются те записи, которые не сходятся, т.е. лишнее значение субконто или не того вида или нехватающее субконто (должно быть взаимное соответствие и в ту и в другую сторону)

Потом взависимости от вида этих строк решаем что с ней делать.
Например если в значении субконто не хватает какого то вида субконто, то добавляем его руками insert если другого вида, то Update ну или delete если это субконто не должно быть
17 YaYca
 
03.01.12
✎
17:38
(16)
Похоже, Дед Мороз в качестве подарка подбросил и в нашу базу эти грабли. Проблема вылазит при попытке добавить субконто.
sda553, есть ли возможность поделиться наработками?
18 H A D G E H O G s
 
03.01.12
✎
17:55
(16)
1) Отключить итоги у Хозрасчетного
2) Исправить записи основных таблиц прям из 1С, исправив значения Субконт
3) Включить итоги у Хозрасчетного

Было и у нас подобное.
19 Mikhail Volkov
 
03.01.12
✎
18:36
(0) Эта ошибка чисто SQL. Поэтому, я обычно выгружаю в файловый вариант, перепровожу документы (восстанавливаю последовательность или конкретно тот тип документов, на которых эта ошибка замечена). ТиИ если время есть. Потом обратно в SQL.
20 H A D G E H O G s
 
03.01.12
✎
18:40
(19) Бугага. В рот мне ноги!
21 IceSer1
 
03.01.12
✎
18:43
(19) вот извращенец )
Ошибка? Это не ошибка, это системная функция.