Имя: Пароль:
1C
1С v8
Неуникальность записей в регистре сведений. Чем лечить?
,
0 SatansClaws
 
03.06.13
06:46
Из файловой базы выгружаю ДТшник.
При попытке загрузить его в скулевую базу валится с ошибкой неуникальности значений в таблице регистра сведений.

Делаю "проверку логической целостности" (тестирование + исправление) - выдает
"    В таблице InfoRg6503 обнаружены неуникальные записи со значениями полей:
       Fld6504 = NULL
       Fld6505 = NULL
   Неуникальность записей устранена"
Причем, по факту - не устраняет (повторное ТИИ выдает ровно то же самое).
Плюс к ошибке неуникальности выдает "Неверный тип хранимого значения. Сохранено пустое значение допустимого типа." - это типо нуллы пытаются замениться на пустые ссылки. Аналогично, безуспешно.

Пробовал удалить через форму списка. Типо удаляет. Жму Home - запись на месте (это не говоря про глюки в первичном отображении).
Пробовал создать НаборЗаписей, сделать отбор по НУЛЛ-ам в этих полях, очистить-записать - тоже фиг.

chdbfl ошибок никаких не находит (да и не должен, по большому счету).

Чем лечить?

ЗЫ структура регистра сведений примитивна: не подчинен регистратору, непериодический, 2 реквизита (ссылка на документ и ссылка на справочник одного из видов)
1 echo77
 
03.06.13
06:54
А отбор по NILLам что-нибудь отбирает? O_O
2 Defender aka LINN
 
03.06.13
06:57
Выгрузи регистр в файл (без дублей), запиши пустой набор без отбора и загрузи обратно
3 el-gamberro
 
03.06.13
07:11
delete from _InfoRg6503
where _Fld6504 is NULL
      and _Fld6505 is NULL
4 Пеппи
 
03.06.13
07:13
Эта таблица случайно не РБ ?
5 Славен
 
03.06.13
07:17
(4)регистр сведений :)
6 SatansClaws
 
03.06.13
07:18
(3) была бы база скулевая - вопросов бы не задавал
ЗЫ ну и НУЛЛ в понятии 1С и НУЛЛ в понятии скуля - немного разные вещи.

1С считает НУЛЛом что-то типа 0x000000000000000000000000000000000000
7 SatansClaws
 
03.06.13
07:20
(2) Ну, да - похоже так и придется
если даже так не поможет - тогда останется только покоцать в метаданных и создать его заново.
8 SatansClaws
 
03.06.13
07:25
(1) Судя по поведению - нет.
Обор по нуллам - это я уже извращался.
Сначал, как умный, написал запрос (селект фром групбай хэвинг каунт(*) > 1 ) и шел по выборке.

Потом узнал, что дубли только по пустым значениям - извращался уже без прикрас.
9 SatansClaws
 
03.06.13
07:30
(2) Глупый вопрос в догонку:

выгружать в файл самому (типо, сохранять гуиды ссылок), или есть более кошерные способы?

ЗЫ написать мини-правила обмена не более кошерный, ибо по трудозатратам для меня выйдет столько же
10 Cyberhawk
 
03.06.13
07:54
(9) ВыгрузкаЗагрузкаXML82
11 Cyberhawk
 
03.06.13
07:56
(обработка идет вместе с конфигурацией "Конвертация данных")
12 Defender aka LINN
 
03.06.13
07:58
(6) А вот свистеть не надо. 0x000000000000000000000000000000000000 - это пустая ссылка
13 dmpl
 
03.06.13
08:26
(9) НаборЗаписей без дублей попробуй через ЗначениеВФайл() сбросить. Потом через ЗначениеИзФайла() загрузить.
14 Ненавижу 1С
 
гуру
03.06.13
08:28
(12) а разве не неопределено?
клевая туча пустых значений, че
15 Defender aka LINN
 
03.06.13
08:40
(14) Опять ты за свое... :)
16 dmpl
 
03.06.13
08:41
(15) Дык как определить тип пустой ссылки, если тип реквизита составной? ;)
17 Defender aka LINN
 
03.06.13
08:43
(16) Точно так же, как тип не пустой ссылки
18 dmpl
 
03.06.13
08:45
(17) ОК. Определи тип ссылки 0x000000000000000000000000000000000000
19 SatansClaws
 
03.06.13
08:45
(16) в таблицах такие реквизиты имеют до 3х полей хранения:
_Type, _RTRef, _RRRef
20 Ненавижу 1С
 
гуру
03.06.13
08:47
(18) ссылка это тип+значение, а то что ты подсунул хз что
21 dmpl
 
03.06.13
08:50
(20) Это не я подсунул, это в (12) было обознано пустой ссылкой ;)
22 Defender aka LINN
 
03.06.13
08:54
(21) Да. И что тебя смущает?
23 dmpl
 
03.06.13
09:07
(22) Ну так определи тип этой т.н. "пустой ссылки".
24 SatansClaws
 
03.06.13
09:25
А куда делся ответ №2? о_0

Короче, этот способ помог.
ХМЛ-ом даже не баловался - выплюнул ГУИДы+виды объектов в файл, загрузил из файла.
25 МихаилМ
 
03.06.13
09:26
(0)
если "в скулевую базу" = ms sql
и версия больше 2000, то отключите индекс с помощью ddl триггера и удалите записи включите пересоздайте индекс.
26 Defender aka LINN
 
03.06.13
09:26
(23) Тип в другом поле какбе
27 SatansClaws
 
03.06.13
09:35
(25) а как это сделать?
28 МихаилМ
 
03.06.13
10:31
(27)
набрать в набрать в строке писка поисковой службы "ddl триггер"


я приводил пример на этом сайте