Восстановление файловой базы с помощью 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 не будет опубликован. Обязательные поля помечены *