gifts2017

Востановление базы после неудачной конвертации Ошибка SQL: Запись значения NULL в поле, не допускающее NULL '_FLD4391_TYPE'

Опубликовал Андрей (Ukrandruha) в раздел Администрирование - Системное

Ошибка SQL: Запись значения NULL в поле, не допускающее NULL '_FLD4391_TYPE'

 Огромное спасибо awa http://infostart.ru/profile/13819/

Случилось так, что кто то решил обновить платформу 8.0-8.1, а копию базы не сделал, при конвертации базы вылетела ошибка «Ошибка SQL: Запись значения NULL в поле, не допускающее NULL '_FLD4391_TYPE'». На этом конвертация и дальнейшая работа с базой была закончена. Возвращение на старую платформу ничего не дало, работа с базой завершалась сообщением «Конфигурация базы не соответствует ...» . Кто будет конвертировать базу, позаботьтесь о резервной копии.

И так chdbfl.exeуспешно завершает свою работу и говорит, что ошибок не обнаружено, но каждая попытка конвертации завершается той же ошибкой, на регистре накопления «продажи».

Огромное спасибо awa, он подарил нам программку которая позволяет заглянуть в файл базы 1с.

Запускаем, открываем нашу базу и ищем  поле «FLD4391_TYPE», цифры 4391 говорят нам о приблизительном номере таблицы, в котором зарылась наша ошибка

 

Находим таблицу и видим в ней первую запись с нулевыми значениями.

 

 

Теперь нам нужно исправить эту строку, я выбрал способ замены ее значений значениями из следующей строки.

Да для этого нам нужно узнать ее смещение, идем в меню  опции и выбираем пункт меню «Отображать смещения в файле записей таблицы»

 

Переписываем адрес нашей строки 1D98D5AA, переходим на закладку описание и запоминаем длину записи, в моем случае она равна 163 байта

Далее мне понадобился Hex редактор для правки файла, я выбрал  HexEditorNeo. Нашли нашу заспись по смещению 1D98D5AA

 

Далее все просто отсчитали 162 байта, скопировали следующие  162 байта в буфер и заменили  ими нашу пустую строку.

 

 

 

 

Теперь осталось зайти в Tool_1CD.exe и посмотреть на нашу запись

 

Ну Это не совсем она,  так как включена сортировка  по индексу, но пустая запись исчезла.

... Еще пару подобных исправленных ошибок и конвертация завершилась успешно!!! 

 

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. gilv (Gilev.Vyacheslav) 19.02.10 15:28
2. Виктор Богдановский (Virgo) 13.07.10 16:55
В найденный по смещению байт можно установить значение "01" (признак удаленного объекта для 1С), потом запустить в конфигураторе 1С тестирование и исправление только с пометкой "Сжатие таблиц информационной базы".
mMadness; +1 Ответить
3. Ramazan Musaev (djhonsmit) 03.09.10 20:19
Спасибо огромное Автору!!!! Респект ;) ;) ;)
Два дня не мог таблицы подправить, благодоря этой статье все подправил, у меня
'_INFOREG5597' '_FLD5598_TYPE' было.
4. Dima (mMadness) 03.10.10 19:21
Большое спасибо! Статья очень помогла восстановить "поломавшуюся" базу =) ;)
5. Сабир Абдурахманов (Nigelist) 24.05.11 20:34
Virgo пишет:
В найденный по смещению байт можно установить значение "01" (признак удаленного объекта для 1С), потом запустить в конфигураторе 1С тестирование и исправление только с пометкой "Сжатие таблиц информационной базы".
Можно поподробнее, желательно на скриншоте, замена какой записи помечает строку как удаленную?
6. Роман Щербаков (RomikSh) 04.12.11 23:37
Спасибо, огромное!!! очень помогло!!!
7. Борис (soap) 05.03.14 09:17
8. Yuriy Rozmyslov (Squisher) 15.09.15 15:50
спасибо, помогло, победил. но исправлял в tool_1cd с возможностью редактирования. скопировал нижнюю строку, потом запустил тестирование и исправление базы через конфигуратор, тот сам исправил дубли (у меня были траблы с регистром доступа документов, поэтому не критично было).

зы. первые две картинки не видны.