Имя: Пароль:
1C
1С v8
В процессе обновления информационной базы произошла критическая что это?
0 Cerera
 
21.08.13
17:03
Это когда я из рабочей базы выгрузил CF файл потом создал чистую базу и сделал "загрузить конфигурацию".


В процессе обновления информационной базы произошла критическая ошибка.
по причине:
Ошибка СУБД:
Длина ключа индекса превышает максимально допустимую '_InfoR12141_ByDims_SSSSSSRSST (_Fld12142, _Fld12143, _Fld12144, _Fld12145, _Fld12146, _Fld12147, _Fld12148_TYPE, _Fld12148_RTRef, _Fld12148_RRRef, _Fld12149, _Fld12150, _Fld12151)'
по причине:
Длина ключа индекса превышает максимально допустимую '_InfoR12141_ByDims_SSSSSSRSST (_Fld12142, _Fld12143, _Fld12144, _Fld12145, _Fld12146, _Fld12147, _Fld12148_TYPE, _Fld12148_RTRef, _Fld12148_RRRef, _Fld12149, _Fld12150, _Fld12151)'
1 shuhard
 
21.08.13
17:03
(0)[Длина ключа индекса превышает максимально допустимую]
какая буква не понятна ?
2 Cerera
 
22.08.13
08:00
(1)Мне не понятно какая такая длина индекса и по какой причине это происходит вообще?
3 skunk
 
22.08.13
08:01
у регистра сведений - InfoR12141 ... слишком докуя полей
4 Cerera
 
22.08.13
08:05
(3)а как определить чтоэто за регистр?
5 Olmer
 
22.08.13
08:07
ПолучитьСтруктуруХраненияБазыДанных()
6 shuhard
 
22.08.13
08:09
(3) всё проще
ТС выгрузил cf с сиквела и сует в файловую, а там в Рг сведений текстовое измерение
7 Cerera
 
22.08.13
08:10
(6)да. есть такое. а как же быть?
8 shuhard
 
22.08.13
08:12
(7) включить мозг
9 Cerera
 
22.08.13
08:15
(8)А что в файловой версии нельзя индексированные текстовые поля делать?
10 Olmer
 
22.08.13
08:17
(9) Насколько помню, ограничение на размер индекса есть в файловой.
11 Defender aka LINN
 
22.08.13
08:19
(9) Я бы вообще задумался - нахрена такое поле впилось?
12 shuhard
 
22.08.13
08:25
(9) ну 2-3 символа можно, ну не твои 128
13 Cerera
 
22.08.13
08:37
(5)благодаря тебе родился этот гениальный код:


Процедура КнопкаВыполнитьНажатие(Кнопка)
    МассивИменМетаданных = Новый Массив();
    Для Каждого Эл Из Метаданные.РегистрыСведений Цикл
        МассивИменМетаданных.Добавить(Эл)
    КонецЦикла;
    ЭлементыФормы.ТаблицаСтруктуры.Значение=ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
    ЭлементыФормы.ТаблицаСтруктуры.СоздатьКолонки();
КонецПроцедуры
14 Cerera
 
22.08.13
08:48
там нет в базе такого
InfoR12141  - этой таблицы.
15 shuhard
 
22.08.13
08:57
(14) а кто тебе сказал, что в сиквельной и файловой базах имена таблиц совпадают ?
16 Cerera
 
22.08.13
09:01
(15)А где мне искать лучше? на SQL ?
17 Cerera
 
22.08.13
09:01
(15)мне надо узнать что это за регистр. как это сделать?
18 shuhard
 
22.08.13
09:04
(17) ну это же типовая конфа, сравни с конфигурацией поставщика и найди Рг сведений с херовыми измерениями
19 Serg_1960
 
22.08.13
09:05
(15) Эээ...вообще-то - совпадают. Даже в различных базах они, как правило, совпадают - конфигурация поставщика определяющий фактор. Если, конечно, изменения были не настолько глубоки, что от конфигурации поставщика осталось рожки да ножки.
20 Cerera
 
22.08.13
09:07
(17)ну почему же типовая конфа. в этой конфе море самодельных регистров сведений.
21 Serg_1960
 
22.08.13
09:08
Короткое замечание: не исключено, что это новый регистр - из обновления. Тогда, пока тс обновление не накатит, - ФигВам его найдёт в своей конфе :)
22 shuhard
 
22.08.13
09:09
(21) то, что это самопальный регистр, очевидно
23 Cerera
 
22.08.13
09:09
(21)ну а мне что делать? запустить конфу из которой я выгрузил CF ?
24 Cerera
 
22.08.13
09:13
нашел регистр сведений у которого одно измерение имеет тип "Строка 500"
25 Starhan
 
22.08.13
09:14
(24) сними индесирование
26 Cerera
 
22.08.13
09:14
(25)индексирования там нет. но есть полнотекстовый поиск
27 Starhan
 
22.08.13
09:17
ну тож убирай :)
28 Cerera
 
22.08.13
09:18
Но это не решение проблемы. Мне нужно реально определить что за регистр это на который ругается программа.
29 Serg_1960
 
22.08.13
09:25
Попробуй вот это:

СтруктураХранения = ПолучитьСтруктуруХраненияБазыДанных(,Истина);
Для Каждого Таблица Из СтруктураХранения Цикл
    Для Каждого Индекс Из Таблица.Индексы Цикл
        Если Найти(Индекс.ИмяИндексаХранения, "_InfoR12141_ByDims_SSSSSSRSST") > 0 Тогда
            Сообщить(Таблица.Метаданные + " " + Таблица.Назначение);
            Сообщить("   " + Индекс.ИмяИндексаХранения);
            Для Каждого Поле Из Индекс.Поля Цикл
                Сообщить("      " + Поле.ИмяПоля + " " + Поле.ИмяПоляХранения + " " + Поле.Метаданные);
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;    
КонецЦикла;
30 MSII
 
22.08.13
09:26
Радченко:
"В файловом варианте 1С:Предприятия длина индекса ограничена 1920 байт.
Для составного индекса его длина рассчитывается как сумма длин полей, входящих в индекс.
Для различных типов данных 1С:Предприятия длина поля в байтах может быть вычислена по следующим формулам:

    Число: (Длина + 1) / 2 + (Длина + 1) % 2
    Строка: Длина * 3 + 2
    Дата: 8
    Булево: 1
    Ссылка: 16


Кроме этого, существует ограничение на количество полей, входящих в составной индекс. Для СУБД, отличных от файловой, максимальное количество полей в составном индексе – 16. Для файловой СУБД – 256. Если индекс содержит большее количество полей – они автоматически отбрасываются. Так работает модель информационной базы 1С:Предприятия."
31 Cerera
 
22.08.13
09:45
(29)в рабочей базе нет ничего что содержит "12141"
32 Cerera
 
22.08.13
09:55
Вот попадос. что мне теперь последовательно один за другим регистры сведений грохать в базе чтоб проверить изза какого регистра вся эта канитель?
33 arsik
 
гуру
22.08.13
11:04
(32) Ты сортировки-выборки не учил что ли? Сначала грохни половину, потом половину половины.
34 ptiz
 
22.08.13
11:11
(32) У вас много регистров со строковыми измерениями или с большим числом измерений????
35 shuhard
 
22.08.13
11:15
(32) ну если слабо перебрать через метаданные измерения Рг сведений, то удаляй по одному
36 Cerera
 
22.08.13
11:23
(35)не находит по ID измерение
(34)как выяснилось что немало ))
(33)знаю я это.
37 shuhard
 
22.08.13
11:55
(36)[)не находит по ID измерение ]
чё ?
38 Cerera
 
22.08.13
12:08
(37)ну код из (29) не помог мне найти интересующее поле регистра. методом удаления приходится решать.
39 shuhard
 
22.08.13
12:11
(38)  ну если слабо перебрать через метаданные измерения Рг сведений, то удаляй по одному
40 Cerera
 
22.08.13
13:49
(39)вы бы хоть пояснили что значит перебрать. перебирал я их. но нет там с таким ID
41 shuhard
 
22.08.13
14:43
(40) какой нах ID,
нужно искать измерения с типом строка
42 Cerera
 
22.08.13
14:48
(41)ну так я нашел их всех. они по 500-750 символов длиной. сейчас несчадно меняем базу.
43 NcSteel
 
22.08.13
14:51
(42) Одного измерения с длинной в 500 символов достаточно.... а их у тебя много.

Руки следует оторвать тому кто их создавал.
44 Cerera
 
22.08.13
14:56
(43)ну молодой программист не знал как правильно делать. он из армии только пришел и сразу на боевую площадку его выпустили с нулём знаний по 1с он уже через месяц научился писать обработки и документы. ну а регистры проектировал не совсем правильно но теперь зато знает что к чему.
45 Starhan
 
22.08.13
15:03
все таки уникальная профессия у нас :).
46 shuhard
 
22.08.13
15:13
(42) топик закрыт