Ситуация
Маленькая файловая база Бух3, учёт ведется 4 года, во время очередного обновления вылетает конфигуратор, при повторной попытке обновления имеем сообщение о невозможности применить изменения конфигурации.
Стандартный алгоритм действий:
- Долго себя ругаем за лень при создании архива перед обновлением;
- Откатываем конфигурацию на версию БД. При попытке запустить базу – ошибка, что таблица такая-то не найдена и вылет;
- Конфигуратор – тестирование и исправление, опять ошибка, что таблица такая-то отсутствует и невозможность ремонта;
- Попытка залить предыдущую типовую конфигурацию – опять критическая ошибка SDBL;
- Последняя попытка – выгрузка базы в DT, проходит частично и вылетает. При загрузке DT – получаем базу с 90% пустых таблиц и сохранившейся ошибкой при тестировании и исправлении.
- С удивлением узнаем, что у админа нет архивных копий от слова совсем;
- Осознание того, что проблема серьезная и требуется помощь. Отправка запроса в 1С и замечательный ответ о том, что ваша база разрушена, поэтому восстановите базу из архивной копии и будет вам хорошо.
- Гуглим, находим “Tool 1CD”, с горечью осознаём, что с версией 8.3.8 он работает только на чтение. Вывод – что-то чинить можно в режиме SQL.
- Загружаем базу из ранее выгруженного DT. Получаем те же проблемы, но на этот раз можно использовать Profiler и, например, создать недостающие таблицы, поля.
- Некоторое время закрываем проблемы по отсутствующим полям на SQL, пока не получаем вот такое сообщение
При условии работающей базы, мы вполне можем узнать что это за регистр, но работающей базы у нас нет, от слова совсем. - Опять гуглим на предмет: «А что такое схема базы данных», и вот тут информация крайне скудная. Официальная трактовка от 1С:
- Открываем эту табличку в SQL, это бинарные данные. Выгружаем их в файлик, открываем его Notepad++ и видим набор массивов с описанием полей базы:
Попытка найти информацию о том, что же это всё такое – результат нулевой. Ок, значит разбираться придётся самому. Перечитывание нескольких статей на инфостарте даёт понимание необходимости просмотра также данных сопоставление объектов конфигурации в файлике DBNames и самой конфигурации 1С. - Проблема, как найти идентификаторы объектов конфигурации 1С, решилась выгрузкой конфигурации в XML. Предварительно файл cf был выгружен с помощью Tool 1CD и загружен в чистую базу на SQL.
- Далее путем поиска таблицы в DBNames получаем её идентификатор, и ищем по нему в каталоге с выгруженной конфигурацией XML. Находим, удаляем объект в конфигураторе, снова попытка сохранения – другая ошибка, на другую таблицу… в общем повторяем итерацию в надежде вылечить базу до тех пор, пока не получаем вот такую ошибку:
- И это серьезная засада, потому как непонятно что ещё можно удалить из конфигуратора. Можно конечно запустить Profiler и найти на какую таблицу он ругается. Но в конце концов это всё закончилось такой ошибкой на поле Fld793 (ОбластьДанныхОсновныеДанные), и по профайлеру всё останавливается после проверки таблицы журналов и всё, вылетает.
- В итоге приходим к выводу, что «скотчем и соплями» проблему не решить, и придётся подходить к вопросу системно.
Инструментарий
- Загрузка/выгрузка данных из DBSchema и DBNames(используя алгоритм Deflate);
- Загрузка схемы объекта из чистой эталонной базы, автозамена реквизитов объекта на наши. Добавление/замена схем объектов в DBSchema;
- Проверка и автоматическое(не все) создание недостающих схем объектов, проверка реквизитов в таблице DBNames;
- Реструктуризация таблиц SQL, добавление/замена полей(не все);
- Загрузка в таблицы SQL, выгруженные из файловой базы с помощью Tool 1CD
upd. 2019.07.13 - Добавлена интеграция с обработкой //infostart.ru/public/275315/. Подключаемся к "убитой" базе, читаем список таблиц и загружаем напрямую нужные таблицы в SQL
upd. 2020.08.03 - Добавлена возможность прямой выгрузки из списка DBNames в базу. Добавлена возможность генерации перечня DBNames для случаев когда в схеме базы объекты есть, а в DBNames нехватает. Автоматически генерируется для констант, перечислений и документов, остальные объекты можно доработать по желанию.
Причины купить
Экономия собственного времени на решение подобной задачи
Достоинства
Обработка предназначена ТОЛЬКО для программистов 1С. Написана под конкретные проблемы конкретной базы. Автоматически восстанавливаются схемы Справочников, Документов, Журналов документов, Регистров сведений, Регистров накопления, Констант, Перечислений, Регламентных заданий... остальные объекты править ручками, либо писать код по аналогии с моим.