Имя: Пароль:
1C
1С v8
Из sql в файловую
0 Стажер_1С
 
29.08.18
11:51
Добрый день!
Я выгрузила .dt из sql базы, загрузила ее в файловую(новую базу создала). База не загружается,через некоторое время пишет:

Ошибка СУБД: Длина ключа индекса превышает максимально допустимую '_AccumRg23916_ByDims@ (_Fld1002, _Period, _Fld23909RRef, _Fld23910RRef, _Fld23911RRef, _Fld23912RRef, _Fld23913RRef, _Fld25663, _Fld25908, _Splitter)'


Мне нельзя в базе sql что-либо делать,кроме как взять саму базу!
Так что я не знаю как обойти этот момент
1 Базис
 
naïve
29.08.18
11:55
Фотка есть, продолжаем помогать.

Тестирование (без исправления!) базы можешь сделать?
2 Черный маклер
 
29.08.18
11:56
Создай северную базу
3 novichok79
 
29.08.18
11:56
(0) получи внутреннюю структуру таблиц в 1С. есть обработки на ИС - структурабазданных. найди что за регистр накопления AccumRg23916
посмотри какие там измерения. возможно какое-то из измерений включает в себя слишком много типов или является строкой. такое на серверном варианте хранения подходит, но при попытке загрузить такой cf в файловом режиме в пустую базу вываливается с ошибкой.
4 shadow_sw
 
29.08.18
11:57
надо понять на какой объект ругается, потом у реквизитов убрать параметр "индексировать" - профит
5 novichok79
 
29.08.18
11:58
смотреть нужно в рабочей базе, что это за accumrg23916  такой. и решать что дальше делать с ним. если базы нет, разверни dt в какой-нибудь СУБД, открой конфигуратор и вперед.
6 ПегийЛунь
 
29.08.18
12:10
accumrg - регистр накопления.
Найти соответствующий регистр. Найти в нем строковое поле, которое проиндексировано. Снять индексацию. Сделать "исправление", выгрузить в dt еще раз. Загрузить в файловую.

Максимальная длина ключа в индекса в файловой версии 1920 байта.
7 Стажер_1С
 
29.08.18
12:14
(1) не могу.Если я ее даже загрузить не могу в пустую базу
8 Стажер_1С
 
29.08.18
12:14
(2) как?Если у меня нет сервера,а просто комп
9 Стажер_1С
 
29.08.18
12:16
(6) (5) (3) Так вот я находила такое решение.Но что за обработка?Имя?
10 Стажер_1С
 
29.08.18
12:16
Не правильно спросила,я обработкой если найду,то как мне исправить индекс?
11 Стажер_1С
 
29.08.18
12:19
И как мне воспользоваться обработкой, если у меня только dt
12 H A D G E H O G s
 
29.08.18
12:23
(11) Загрузить в промежуточную файловую базу.
13 Стажер_1С
 
29.08.18
12:29
Нашла регистр накопления. У меня в измерении, на которые он ругается, в свойствах стоит "не индексировать".Мне надо поставить "Индексировать"?
14 H A D G E H O G s
 
29.08.18
12:30
Проблемы в одной из колонок
_Fld25663
_Fld25908

посмотреть, какая из них - строковая.
Найти строки максимальной длины, скорее там какая-то дичь, типа многострочного текста, скопипистенного с сайта, или пробелы, или xml хрень.

Искать надо запросом к Оборотам() регистра
15 H A D G E H O G s
 
29.08.18
12:30
(13) Нет. Это никак не поможет, галочками это не решишь
16 H A D G E H O G s
 
29.08.18
12:31
Но запросом ты длину строки не вытащищь. Только постобработкой, что потенциально длительно. Но большую базу людям женского пола обычно не дают.
17 H A D G E H O G s
 
29.08.18
12:33
(13) Как называется регистр, оборотный он или остаточный, как называется измерение, и его тип?
18 Стажер_1С
 
29.08.18
12:34
У одного  длина 36, у другой 1000

Регистр обороты; измерения имеют тип строка ,длина столько разная
19 Стажер_1С
 
29.08.18
12:34
(14) А как вы поняли,что именно в этих измерениях косяк?
20 H A D G E H O G s
 
29.08.18
12:36
(19) Магия
21 novichok79
 
29.08.18
12:37
(19) все, что заканчивается на Ref - это ссылки.
обработок, чтобы посмотреть структуру базы данных полно на ИС, поищите нужную вам.
22 H A D G E H O G s
 
29.08.18
12:37
(18) "у другой 1000"
В нем - проблема.
Ищите строки с текстом, длиннее 300 символов.
23 novichok79
 
29.08.18
12:37
а вообще люлей проектировщику такого регистра накопления, это еще додуматься надо такую дичь придумать.
24 Стажер_1С
 
29.08.18
12:38
(21) Я уже нашла обработку,ей воспользовалась и нашла регистр
25 Стажер_1С
 
29.08.18
12:39
(22) то есть запись в регистр смотреть?в режиме предприятия?
26 H A D G E H O G s
 
29.08.18
12:39
(25) Да
27 H A D G E H O G s
 
29.08.18
12:40
(25) Что за конфа? Страна должна знать долбодятлов.
28 Стажер_1С
 
29.08.18
12:40
(22) я поняла почему взяли 1000. Это измерения номенклатураДля Печати.И посмотрела что наименование номе-ы длина там тоже 1000
29 novichok79
 
29.08.18
12:40
значит дело в строковых измерениях. выберите запросом из регистра строки из измерений, сделайте стрдлина, найдите максимум...
30 Стажер_1С
 
29.08.18
12:40
Сейчас консолем запросов достану тогда записи
31 H A D G E H O G s
 
29.08.18
12:41
(29) Ахаха. Да это квест для автора.
32 H A D G E H O G s
 
29.08.18
12:41
(28) Мне вот 10 лет стажа, а я - не понялю
33 novichok79
 
29.08.18
12:44
походу в измерении указано полное наименование номенклатуры для печати, такой же реквизит в справочнике номенклатура есть, длиной 1000 символов. но это конечно оригинальное решение.
34 Стажер_1С
 
29.08.18
12:50
ВЫБРАТЬ
    Регистр.НоменклатураДляПечати,
    Регистры.Регистратор
ИЗ
    РегистрНакопления.Регистр.Обороты(, , Регистратор, НоменклатураДляПечати > ПОДСТРОКА(НоменклатураДляПечати, 1, 300)) КАК Регистр
35 Стажер_1С
 
29.08.18
12:51
Таким запросом он вывел 9 записей
36 Стажер_1С
 
29.08.18
12:51
вот и что же мне делать с ними то?
37 Стажер_1С
 
29.08.18
12:51
(33) я и писала выше,что там указано полное наиме-е
38 H A D G E H O G s
 
29.08.18
12:55
(36) Исправь наименование в номенклатуре, перепроведи документ, верни наименование в номенклатуре (если надо).

Потом переделай регистр, убери это измерение.
39 Стажер_1С
 
29.08.18
12:56
(38) так я не могу исправить имя номенклатуры, так именно им и надо.
Вместо измерения сделать реквизит,так выйдет?
40 Стажер_1С
 
29.08.18
12:57
а не слетят у меня записи прошлых периодов?
41 Стажер_1С
 
29.08.18
12:57
А если я изменю регистр,то что будет с записими прошлых периодов?
42 H A D G E H O G s
 
29.08.18
13:01
(41) Кирдык
43 novichok79
 
29.08.18
13:10
(41) обычно под такое дело делается обработка, которая перезаписывает движения только нужного регистра. по идее надо делать так - в SQL базе добавить новое измерение в регистр, измерение типа "Номенклатура", переписать проведение в этот регистр, чтобы записывалось измерение типа номенклатура, удалить строковое измерение.
44 spiller26
 
29.08.18
13:10
(0) Так у вас база сколько весит? Где разворачиваете операционка какая?
45 spiller26
 
29.08.18
13:14
46 Sammo
 
29.08.18
13:22
А точно надо в файловую? может в какой-нибудь вариант бесплатного скуля? (postgress, sql express - если база позволит)
47 Стажер_1С
 
29.08.18
13:39
Мне эта база нужна как тестовая,чтобы свои доработки внести.Так что я просто удалю запись в регистре и все. На рабочую sql ручками перенесу свои доработки.
48 Стажер_1С
 
29.08.18
13:39
Всем спасибо огромное!!!!!!!Вы супер)
49 spiller26
 
29.08.18
13:47
(47) от проблемы ты всё равно не избавишься, может когда нибудь вылезти (При обновлении например).
50 Стажер_1С
 
29.08.18
13:59
(49) согласна,но я не могу никак изменить данные без согласия клиентов.а им это нахер не надо,пока все работает.
Мне так то запретили на файловую разворачивать.Сделали мне sql базу,так что теперь буду там работать.Спасибо)
51 Buster007
 
29.08.18
14:04
(16) чего это ты так не доверяешь им?
52 Стажер_1С
 
29.08.18
14:28
(51) так нужно))
53 vitkhv
 
29.08.18
15:05
(46)
MS SQL Developer Edition с версии 2016 тоже бесплатный, а возможностей как в Enterprise, разница только в лицензионном соглашении.
Так что зачем автор извращается с файловой мне не понятно.
54 Стажер_1С
 
30.08.18
07:49
(53) да потому что,у меня есть база на sql тестовая,загружаю туда dt с рабочей базы(на sql она тоже),выдает ошибку
55 Стажер_1С
 
30.08.18
07:50
Вообщем не помогло мне нифига(((((((
56 Buster007
 
30.08.18
11:50
"Вообщем" надо сказать спасибо тому человеку, кто придумал сделать в измерении строку 1000 ))
57 Михаил Козлов
 
30.08.18
11:57
(56) Хорошо бы еще понять, зачем он это сделал.
Поняв, можно попробовать объяснить владельцам БД, что им это не нужно. Либо, как можно обойтись без этих измерений.
58 Кир Пластелинин
 
30.08.18
12:11
(57) зачем? да как вариант - "оптимизация"))) а то ж ведь придется соединение со справочником "номенклатуры" делать, что бы наименование для печати получить, а соединение с виртуалкой - ай-яй-яй (хотя исходя из спроектированного регистра знание оного ставится под большое сомнение). ппц...
(55) единственный вариант загрузить данный dt-шник в файловую - это убирать это измерение, либо сокращать его длину со всеми вытекающими.
59 Сияющий в темноте
 
30.08.18
12:18
Мне понравилось,теперь я знаю,как сделать так,чтобы скуль базу в файло не развернули,просто регистр и в него поле типа строка,и не важно,что в регистре будет только одна строка.
60 novichok79
 
30.08.18
15:12
(55) а что пишет? как боролись?
61 Serg_1960
 
30.08.18
15:52
Возможно автор не все записи с длинными строками пофиксила. В (14) правильно сказано - их там два таких. Нужно на предмет их общей длины сканить регистр.
62 Serg_1960
 
30.08.18
15:56
Но этого недостаточно - нужно резать длину у этих полей, имхо.
63 vitkhv
 
30.08.18
16:21
(54) В SQL с этой же ошибкой не грузиться?
64 Стажер_1С
 
31.08.18
14:10
Я не стала уже дальше разбираться,просто взяла создала sql базу и залила туда рабочую bak
65 vitkhv
 
31.08.18
15:52
(64) Тогда честно говоря не понял, как этот ваш ответ(54)соотносится с моим предложением (53), раз вы все равно ему последовали?
66 Стажер_1С
 
03.09.18
11:32
(65) Ну я то думала взять dt,я не знала что sql делает архив по другому