Имя: Пароль:
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) вот извращенец )
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший