Восстановление файловой базы с помощью tools 1cd

Небольшая заметка, как удалось вылечить битую файловую базу 1С, с помощью утилиты tools 1cd.

Не умею хорошо писать. Но думаю, информация может быть полезной кому-нибудь, кто столкнулся с похожей проблемой.

Описание ситуации:
База Бухгалтерия предприятия 3.0, файловая, не хочет обновлять базу, выдает ошибку:
    "В процессе обновления информационной базы произошла критическая ошибка по причине:
        Ошибка СУБД:
        Ошибка SQL: Таблица не найдена ‘_Document349_VT9553’
    по причине:
        Ошибка SQL: Таблица не найдена ‘_Document349_VT9553’
    
    

Выгрузка базы данных в файл dt тоже выдает ошибка, но менее подробная ("Ошибка СУБД")

Тестирование и исправление отправляло конфигуратор в дамп.
Утилита chdbfl показывала "Ошибок не обнаружено"
Утилита tools_1cd, по команде "Проверка состава таблица" нашла такие ошибки:
    Проверка состава таблиц завершена с ошибками, и список из трех таблиц: _VT9553, _DataSeparationUse18106, _DataSeparationUse16595


    

При этом:

  • конфигурация была рабочая и пользователи в ней спокойно работали.
  • архивов свежих не было, были месячной давности, но они делались методом копирования файла 1cd, и при анализе они оказались с такой же ошибкой.
  • файл конфигурации удалось сохранить, а также удалось сохранить файл конфигурации поставщика.
  • конфигурация позволяла открывать себя на платформе версии 8.3.8. Это было важно потому, что программа Tools1CD не работает с более старшими версиями (или у меня старая версия программы).

Проблему удалось решить с помощью утилиты Tools1C (Огромное спасибо ее создателю)

Далее список шагов, которые привели к успеху:

  1.  Определил с помощью метода ПолучитьСтруктуруХраненияБазыДанных что это за таблица, на которое ругается программа. Оказалась эта таблица "Документ.ПоступлениеИзПереработки.ВозвратнаяТара"
    Выяснил, что таких документов в базе нету вообще, и можно просто заменить эту таблицу пустой таблицей.
  2. Выгрузил конфигурацию поставщика, и создал новую базу на основании этой конфигурации. Замечание. Установил используемую платформу 8.3.8 из-за проблем совместимости с tools1C
  3. С помощью метода ПолучитьСтруктуруХраненияБазыДанных нашел название нужной таблицы в новой базе. 
    Название оказалось совсем другим: "Document452.VT13246"
  4.  Открыл новую базу утилитой tools1C, нашел нужную таблицу и выгрузил ее в файл.
  5. Изменил название таблицы на название из старой базы
    • В самой папке
    • В файле descr
    • Также поменял номер таблицы с 452 на 349 в полях ссылках, правда другие номера в ссылочных полях оставил такими, какие есть
  6.  открыл старую базу утилитой tools1C, и нажал создать таблицу из файла
  7. После этого база позволила мне выгрузить ее в файл dt.
  8. Ну а после я ее перезагрузил из dt файла. И эта уже была полностью рабочая база.

 

ВЫВОДЫ:

  • Не представляю, почему в файловой базе пропала таблица.
  • Не ожидал, что так получится сделать. На решение проблемы наткнулся методом тыка, вернее увидел пункты в программе tools1C, и они навели меня на эту идею.
  • Если у кого-то такая ошибка повторится, то может, мой опыт ему поможет.

66 Comments

  1. acanta

    Поскольку это не официальная утилита от 1с, и она не поддерживается, с выходом любой новой версии платформы может утратить актуальность.

    Reply
  2. Xershi

    Проще настроить ежедневный бекап и потом делай что хочешь!

    Reply
  3. vadim1011985

    А не пробовали кнопкой «Поиск и восстановление потерянных таблиц»

    Кстати саму папку можно не переименовывать

    Reply
  4. vadim1011985

    (4) а где это указанно ?

    Reply
  5. acanta

    http://v8.1c.ru/predpriyatie/questions_licence.htm

    Вопросы лицензирования, ответ 65.

    Reply
  6. acanta

    Вопросы лицензирования, ответ 65.

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

    Формат файловой базы данных не описан в документации фирмы 1с.

    Reply
  7. vadim1011985

    (6) по моему вы немного не поняли суть данного ответа, там речь идет о построении системы , а не о восстановлении работоспособности текущей

    Reply
  8. Denis_CFO

    (7) да это всё понятно, что есть лицензирование. Но 1С ведь не гарантирует сохранность данных «при любом раскладе». Поэтому этот инструмент и появился.

    Есть ещё одно «но» — использование данного инструмента, конкретно в такой ситуации, не наносит вреда правообладателям платформы 1С.

    Reply
  9. acanta

    Речь идет об использовании конфиденциальной информации, защищенной фирмой 1с.

    Данная утилита использует расшифровку формата данных файловой базы. 1с не опубликовала этот формат даже для франчайзи. Следовательно существуют 3 законных способа.

    1.установить пустую базу и восстановить учет вручную бухгалтерам.

    2. Восстановление из бакапа

    3. Выслать всю битую базу на хотлайн и ждать результатов.

    Использование утилит из каталога Бин описано в документации и законно, но если это не помогает, то все.

    Форматы других субд и их инструменты описаны производителями этих субд и их использование законно в случае разрушения базы данных на уровне субд.

    Reply
  10. Denis_CFO

    (10)

    1.установить пустую базу и восстановить учет вручную бухгалтерам.

    2. Восстановление из бакапа

    3. Выслать всю битую базу на хотлайн и ждать результатов.

    за чей счет банкет? Вы же реально понимаете, что так не будет или я в другом мире живу?

    Reply
  11. acanta

    Я не знаю в каком мире живете вы, но автор этой утилиты уже нет.

    Reply
  12. Xershi

    (6) спасибо за статью.

    Но там же написано изменение!

    А восстановление, это как раз таки дыра, которая там опущена.

    Восстановление базы данных как раз обратное от пункта 65!

    Поэтому можно условно считать, что не запрещено разрешено!

    Reply
  13. Xershi

    (12) так вот почему она не развивается, а функционал остался на уровне 2016 года.

    Но кстати на ИС видел нового парня, который разобрался в бардаке 1С и что-то годное выпустил, но т.к. восстановлением практически не занимаюсь новостей не смотрел по этому поводу!

    Reply
  14. Denis_CFO

    (12) за автора я знаю.

    я не понимаю:

    1. при чем здесь лицензирование.

    2. какой вред от этого получает 1с.

    3. как можно остановить работу предприятия, пока только 1с будет без гарантии восстанавливать данные (за архивы умолчим — этот вариант здесь не обсуждается);

    Reply
  15. CXY

    (10) Особенно мне нравится вариант номер 3, предложенный Вами. Так и вижу, как мы отправили файл в 1С и все, включая генерального директора, дружно ждём 🙂

    В нашей суровой российской реальности, особенно дальней глубинки, такой вариант относится скорее к разряду фэнтези.

    Reply
  16. acanta

    Да мы вообще в сказке..

    Reply
  17. rzabolotin

    (3) Пробовал. Забыл написать в статье.

    Не ругается, но и ничего не восстанавливает.

    Reply
  18. rzabolotin

    (2) Полностью согласен.

    Reply
  19. wes1977

    (6) Читаем пункт 71 в этом документе и понимаем, что половину инфостарта можно привлечь (((

    Reply
  20. Denis_CFO

    (19) спасибо за статью. четко и понятно.

    Reply
  21. vikad

    (7)

    Формат файловой базы данных не описан в документации фирмы 1с.

    https://its.1c.ru/db/metod8dev#content:5710:hdoc

    Reply
  22. Алексей_mir2mb

    (2) в реальных условиях работы в крупной организации за день вводят сотни документов и заполняют-меняют тысячи реквизитов. потерять работу за день — это недопустимо. поэтому дневной бекап — это на самый крайний случай.

    Пора фирме 1С выпустить системный инструментарий аналогичный этой классной утилите.

    Reply
  23. stopa85

    (25) в реальных условиях ставят сервер 1с и СУБД. Но это уже другая история

    Reply
  24. Xershi

    (23) только вы забыли, что утилита для файловой базы, а это обычно 1 бухгалтер, который не туда жмет кнопки и выдергивает ногой шнур из ПК=))

    Reply
  25. acanta

    Даже из пустой бутылки можно выжать 40 капель.

    Но вообще вы правы, ежедневных бакапов достаточно.

    Разве что собраться и забросать хотлайн битыми базами.

    Reply
  26. Rashid80

    Где вы берете эту утилиту для конфигураций , работающих под новыми версиями платформы? Гуглом я нашел только ту что работает для 8.3.9.

    Где взять для 8.3.12 или 8.3.13?

    Reply
  27. rzabolotin

    (27) У меня тоже работает только со старыми версиями платформы. Выше писали, что данная утилита не развивается, наверно нет новых версий.

    Reply
  28. acanta

    Разговоры в пользу бедных это святое (с)

    Наверное больше никто не замахнулся.

    Reply
  29. SerVer1C

    В статье указаны названия используемых утилит «tools_1cd» и «Tools1C», а на скриншоте вообще видна «Tool_1CD». Это 3 разных утилиты или одна и та же ?

    Reply
  30. asupsam

    (27) На гитхабе поищите по строке tool1cd

    Reply
  31. Дмитрий74Чел

    (30) Tool_1CD. Остальное опечатки.

    Reply
  32. vadim1011985

    (27) (28) Тут важна не версия платформы 1с , а версия формата базы 8.2.14 или 8.3.8 ( как раз начиная с 8.3.8 поменялся формат баз) Можно работать и со старой версией этой утилиты , пока 1с поддерживает формат 8.2.14. Базу можно конвертировать ( утилита cnvdbfl) , но далеко не факт , что конвертация пройдёт без ошибок особенно в повреждённой базе, или размер страницы после конвертации не превысит допустимый размер 4К для формата 8.2.14. Есть утилита которая читает формат 8.3.8 , но не позволяет производить с ней различных действий , в силу особенностей этого формата , но через меню файл позволяет выгрузить файлы descr , data,index, blob , отдельно взятой таблицы , после их можно загрузить в формат 8.2.14 и снова переформатировать в 8.3.8 иначе данные будут не видны.

    Reply
  33. opus70

    Отличная статья я пункт 71 так пусть фирма 1с выпустит аналогичную утилиту

    я как то пару раз присылал любимой фирме битые файлы и догадайтесь какой ответ был от всеми уважаемой фирмЫ,

    правильно а не пошли бы вы подальше используйте бэкап и так дальше,

    только фирма уважаемая не понимает что из маленьких мошек ростет ее благосостояние.

    ВООБЩЕМ САМАЯ НУЖНА УТИЛИТА В КРИТИЧЕСКОЙ СИТУАЦИИ

    И НЕ ВСЕ ИМЕЮТ ВОЗМОЖНОСТЬ КУПИТЬ SQL (ЖАДНОСТЬ ЛЮБИМОЙ ФИРМЫ НЕ ПОЗВОЛЯЕТ НАЙТИ КАКОЙ ТО МИЗЕР В 100 КОСЫХ) И РАДОВАТЬСЯ ЖИЗНИ ОЧЕНЬ МНОГИЕ ИСПОЛЬЗУЮТ ФАЙЛОВЫЙ ВАРИАНТ

    Reply
  34. 3vs

    Вот не зря я говорю — надо бить линейкой по пальцам одноэсных программеров!

    Утилита chdbfl.exe обязана справляться с такими неисправностями, раз новая структура

    файловой базы держится в секрете, значит chdbfl должна иметь возможность восстанавливать правильную структуру файловой базы, во всяком случае — типовых конфигураций.

    Reply
  35. mbreaker

    (0) А не пробовали просто удалить таб. часть в конфигураторе (раз уж там данных нет) и восстановить её из конфигурации поставщика?

    Даже если конфигуратор при этом будет падать или ругаться на отсутствие таблицы, более правильным вариантом мне видится не восстановление таблицы из другой копии, а восстановление требуемой структуры для того (через Tools1CD), чтобы удалить ТЧ штатными средствами, а потом её восстановить так, как я предлагал в начале. Не забывайте, что помимо самих таблиц данных SDBL 1С при формировании запросов ориентируется ещё и на стандартные индексы (а индексы ТЧ, как я понял из описания, Вы переносить уже не стали), без них система вероятнее всего работать-то будет, но как говорится в старом анекдоте — «хреново».

    P.S. Роман, не сочтите за оскорбление, понимаю, что это всё это от отсутствия информации, но Ваши действия напоминают действия терапевта, у которого с пациентом что-то не так, а он нашёл забытый хирургом скальпель и прочитал где-то, что в похожих случаях удаляют почку. Понимаете, каким бы хорошим в своём деле ни был терапевт, без базовых знаний хирурга и практики в хирургическом отделении из него может получиться хороший шаман, но никак не хирург. Совершенно не хотелось бы у Вас отбить желание писать статьи на ИС, но настоятельно рекомендую оформлять такие статьи в стиле «я попробовал, у меня что-то получилось, но это не инструкция к применению, а просто экспериментальная работа, поэтому действуйте на свой страх и риск». В противном случае создаётся впечатление экспертной статьи и многие начинающие специалисты могут посчитать Ваши «вольные измышления» как экспертное мнение и будут его применять направо и налево. Подобные статьи на самом деле очень полезные (даже если в них изначально присутствует некорректная информация), одна моя такая статья в своё время переросла в самый крупный ресурс Рунета по обсуждению проблем распределенных систем 1С. Но, повторюсь, статья не должна выглядеть как мнение эксперта!

    (7) (22)

    Вот тут поинтереснее информация (про неё знают лишь «староверы»):

    https://kb.1c.ru/articleView.jsp?id=18

    https://kb.1c.ru/articleView.jsp?id=68

    Reply
  36. fishca

    (36)

    Вот тут поинтереснее информация (про неё знают лишь «староверы»):

    https://kb.1c.ru/articleView.jsp?id=18

    https://kb.1c.ru/articleView.jsp?id=68

    Все это уже давно есть на ИТС 🙂

    Reply
  37. AntonSm

    (37) Дайте, пожалуйста, ссылку или ключевые слова, по которым можно найти эту информацию.

    Ато к kb от 1с у меня, например, доступа нет. А к ИТС — есть.

    Reply
  38. vadim1011985

    (35) Уже давно на Инфостарте есть описание формата 8.3.8 где показаны отличия от формата 8.2.14

    chbbfl просто переносит данные которые может прочитать в новый файл а потом старый файл удаляет . об этом писал awa в статья про Tools_1cd , утилита полезная и позволяет исправлять ошибки, но далеко не все. И у меня было много случаев когда эта утилита не справлялась , но я сам восстанавливал базы с помощью Tools_1cd или 1CD_Lib. И вообще считаю что одного инструмента мало , поэтому пользуюсь связкой этих утилит

    Reply
  39. vadim1011985

    (36)

    А не пробовали просто удалить таб. часть в конфигураторе (раз уж там данных нет) и восстановить её из конфигурации поставщика?

    Даже если конфигуратор при этом будет падать или ругаться на отсутствие таблицы, более правильным вариантом мне видится не восстановление таблицы из другой копии, а восстановление требуемой структуры для того (через Tools1CD), чтобы удалить ТЧ штатными средствами, а потом её восстановить так, как я предлагал в начале. Не забывайте, что помимо самих таблиц данных SDBL 1С при формировании запросов ориентируется ещё и на стандартные индексы (а индексы ТЧ, как я понял из описания, Вы переносить уже не стали), без них система вероятнее всего работать-то будет, но как говорится в старом анекдоте — «хреново»

    1) не факт что при таком подходе система даст произвести реструктуризацию (конечно не утверждаю точно , но есть вероятность что при реструктуризации система выкинет ошибку)

    2) При экспорте таблиц с помощью утилиты выгружаются и файл индексов , ТС поменял только описание таблицы в файле descr что бы она соответствовала текущей базе , так же импорт невозможен если отсутствует файл индексов. поэтому индексы были перенесены.

    Reply
  40. mbreaker

    (37) Да, Сергей, действительно перенесли многое на ИТС. Как эксперт-старовер дал линк на первоисточник… ))

    Видимо с уходом Константина Рупасова из ТВКВ ресурс kb.1c.ru окончательно похоронили. Забавно, что отдельные статьи из этого раздела ИТС я в разное время читал, но никогда не обращал внимание на то, что в эту ветку скопировали все статьи с kb.1c.ru.

    Reply
  41. mbreaker

    (38) Полная копия статей с kb.1c.ru на ИТС выложена вот тут:

    Разработка и администрирование > Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8 > Администраторам

    https://its.1c.ru/db/metod8dev#browse:13:-1:1981

    Статьи «Размещение данных 1С:Предприятия 8», «Индексы таблиц базы данных». Ну и там ещё много «вкусненького и полезненького»…

    Reply
  42. 3vs

    (39) По идее, утилиту такого типа, как Tools_1cd должна была бы выпустить сама 1С, а не сторонние разработчики!

    Reply
  43. rzabolotin

    (36)

    о это всё это от отсутствия информации, но Ваши действия напоминают действия терапевта, у которого с пациентом что-то не так, а он нашёл забытый хирургом скальпель и прочитал где-то, что в похожих случаях удаляют почку. Понимаете, каким бы хорошим в своём деле ни был терапевт, без базовых знаний хирурга и практики в хирургическом отделении из него может получиться хороший шаман, но никак не хирург. Совершенно не хотелось бы у Вас отбить желание писать статьи на ИС, но настоятельно рекомендую оформлять такие статьи в стиле «я попробовал, у меня что-то получилось, но это не инструкция к применению, а просто экспериментальная работа, поэтому действуйте на свой страх и риск». В противном случае создаётся впечатление экспертной статьи и многие начинающие специалисты могут посчитать Ваши «вольные измышления» как экспертное мнение и будут его применят

    Спасибо. Да вы правы. Просто я попробовал, у меня получилось. Я в таком ключе и хотел написать.

    По поводу индексов, да я их не восстанавливал. Но я выгрузил в dt файл, и загрузил заново. Они после этого заново должны создаться. Там еще пару таблиц не хватало, но они на выгрузке в dt не мешали.

    По поводу идеи удалить таблицу из конфигуратора, это хорошая идея, я ее не попробовал.

    Reply
  44. rzabolotin

    (30) опечатки. Tool_1CD правильное название

    Reply
  45. vadim1011985

    (43) Ага , и продавать ее платно за $$

    Reply
  46. Rashid80

    (31) спасибо

    Reply
  47. 3vs

    (46)Не, в комплекте с платформой, с тем же chdbfl.exe итак уже за всё дерут,

    скоро организации будут работать не на прибыль себе а на оплату ИТС и сервисов 1С! 🙂

    Reply
  48. vadim1011985

    (48) да не будет этого , это очень сложный инструмент , очень трудно описать алгоритм работы с ним , chdbfl не требует никаких настроек , и то можно за раз убить базу , я думаю 1с на это не пойдёт . Да и продавать не будет , так как продаж будет очень мало , так как базы не летят каждый день плюс не факт что восстановление поможет. Так что своими силами , на свой страх и риск.

    Reply
  49. user838978

    как и где можно скачать эту версию?

    Reply
  50. user838978

    есть проблема с файловой бд. при обновлении базы данных,закончилось место на диске,и судя по словам пользователя,кто обновлял, 1с повисла и не отвечала,потом и вовсе закрылась. Теперь при запуске предприятия ,так же как и в конфигураторе, пишет «Ошибка считывания вторичной информации» . Платформа: 1С:Предприятие 8.3 (8.3.12.1790). Помогите,как быть,что делать?!

    Reply
  51. vadim1011985

    (51) Ошибка считывания вторичной информации

    Обязательно АРХИВНАЯ КОПИЯ текущей базы. Все эксперименты проводить только на отдельной копии

    Вариант 1.

    Специалист должен был сделать копию перед обновление можно восстановится с нее

    Вариант 2

    Попробовать экспортировать таблицы Config и ConfigSave из базы нормального релиза который стоял до обновления

    Вариант 3

    многие пишут что помогает замена таблицы Params , но только надо понимать что эту таблицу должны экспортировать из архива этой же базы с тем же релизом !!! Если вы возьмете эту таблицу из другой базы то будет ошибка

    Reply
  52. user838978

    (52) копии резервной нет,есть бд (из которой вырезались контрагенты для создания «битой базы») есть ли шанс,что ели взять из нее таблицы,о она заработает??

    Reply
  53. vadim1011985

    (53)

    из которой вырезались контрагенты для создания «битой базы»

    не очень понял эту фразу

    Если выложите базу — готов посмотреть , но результат не гарантирую

    Reply
  54. user838978

    (54) была база ,в ней было много контрагентов,была создана копия этой базы (которая впоследствии и упала) ,и удалены некоторые контрагенты и документы. есть ли шанс,что ели взять из нее таблицы,о она заработает??

    Reply
  55. vadim1011985

    (55) смотря как давно это было сделано , если пару дней назад то можно попробовать , если давно и было несколько обновлений то боюсь эта база мало чем поможет …. хотя некоторые системный таблицы можно у нее содрать

    Reply
  56. user838978

    (56) как с вами связаться?можете в вайбер или ватсап написать мне?

    Reply
  57. webester

    (27) Посмотрите здесь https://github.com/e8tools/tool1cd

    Reply
  58. Алексей_mir2mb

    (25) совершенно не факт!

    как Вам клиент с УНФ: файловая база 25гиг за 5 лет, 10 юзеров? колбасный цех.

    правда лежит на сервере терминалов. сконфигурирован очень качественно на рейд-массиве.

    Reply
  59. Xershi

    (59) жалеют деньги на сервер? Или в чем не оправдано высокий риск такой работы?

    Reply
  60. gghf

    Чтоб так не ковыряться, надо настраивать бэкапы каждодневные, утренние и вечерние

    Reply
  61. teller

    (7)

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

    чукча даже не читатель, а перевиратель

    в оригинале

    Лицензионное соглашение не позволяет использовать недокументированные фирмой «1С» средства для построения решений на платформе 1С:Предприятие
    Reply
  62. user838978

    (61)

    так не ковыряться, надо настраивать бэк

    знал бы куда падать,соломку подстелил

    Reply
  63. hercares
    знал бы куда падать,соломку подстелил

    Не получается использовать эту поговорку к бекапам, заранее известно куда можно упасть 🙂

    Reply
  64. МимохожийОднако

    В похожей ситуации и после плясок с бубном помог последний банальный пункт ТИИ «Реструктуризация таблиц информационной базы» ))

    Каждая поломка информационной базы индивидуальна и поэтому нет универсальных рецептов. В статье описана одна из удачных попыток. После подобного опыта все админы настраивают автоматические бэкапы или заставляют это делать местных админов.

    Reply
  65. vadim1011985

    Вообще для меня , файловые базы это своеобразный «конструктор» если знать определенные правила , то поврежденную базу можно Восстановить («Собрать») из нескольких рабочих баз (конечно результат восстановления не 100 % , но думаю, что в половине случаев даст положительный результат)

    Reply
  66. liivan

    На втором скриншоте «Ошибка открытия импорта таблицы root». Как Вы ее победили?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *