Восстановление структуры DBSchema

03.08.20

Задачи пользователя - Корректировка данных

Обработка для анализа ошибок в структуре DBShema, восстановление структуры объектов, перенос данных из выгруженных в XML таблиц базы, при помощи "Tool 1CD".

Скачать файлы

Наименование Файл Версия Размер
Восстановление структуры DBSchema
.epf 105,53Kb
127
.epf 105,53Kb 127 Скачать

Ситуация

Маленькая файловая база Бух3, учёт ведется 4 года, во время очередного обновления вылетает конфигуратор, при повторной попытке обновления имеем сообщение о невозможности применить изменения конфигурации.

 

 

Стандартный алгоритм действий:

  1. Долго себя ругаем за лень при создании архива перед обновлением;
  2. Откатываем конфигурацию на версию БД. При попытке запустить базу – ошибка, что таблица такая-то не найдена и вылет;
  3. Конфигуратор – тестирование и исправление, опять ошибка, что таблица такая-то отсутствует и невозможность ремонта;
  4. Попытка залить предыдущую типовую конфигурацию – опять критическая ошибка SDBL;
  5. Последняя попытка – выгрузка базы в DT, проходит частично и вылетает. При загрузке DT – получаем базу с 90% пустых таблиц и сохранившейся ошибкой при тестировании и исправлении.
  6. С удивлением узнаем, что у админа нет архивных копий от слова совсем;
  7. Осознание того, что проблема серьезная и требуется помощь. Отправка запроса в 1С и замечательный ответ о том, что ваша база разрушена, поэтому восстановите базу из архивной копии и будет вам хорошо.
  8. Гуглим, находим “Tool 1CD”, с горечью осознаём, что с версией 8.3.8 он работает только на чтение. Вывод – что-то чинить можно в режиме SQL.
  9. Загружаем базу из ранее выгруженного DT. Получаем те же проблемы, но на этот раз можно использовать Profiler и, например, создать недостающие таблицы, поля.
  10. Некоторое время закрываем проблемы по отсутствующим полям на SQL, пока не получаем вот такое сообщение

    При условии работающей базы, мы вполне можем узнать что это за регистр, но работающей базы у нас нет, от слова совсем.
  11. Опять гуглим на предмет: «А что такое схема базы данных», и вот тут информация крайне скудная. Официальная трактовка от 1С:
  12. Открываем эту табличку в SQL, это бинарные данные. Выгружаем их в файлик, открываем его Notepad++ и видим набор массивов с описанием полей базы:

    Попытка найти информацию о том, что же это всё такое – результат нулевой. Ок, значит разбираться придётся самому. Перечитывание нескольких статей на инфостарте даёт понимание необходимости просмотра также данных сопоставление объектов конфигурации в файлике DBNames и самой конфигурации 1С.
  13. Проблема, как найти идентификаторы объектов конфигурации 1С, решилась выгрузкой конфигурации в XML. Предварительно файл cf был выгружен с помощью Tool 1CD и загружен в чистую базу на SQL.
  14. Далее путем поиска таблицы в DBNames получаем её идентификатор, и ищем по нему в каталоге с выгруженной конфигурацией XML. Находим, удаляем объект в конфигураторе, снова попытка сохранения – другая ошибка, на другую таблицу… в общем повторяем итерацию в надежде вылечить базу до тех пор, пока не получаем вот такую ошибку:
  15. И это серьезная засада, потому как непонятно что ещё можно удалить из конфигуратора. Можно конечно запустить Profiler и найти на какую таблицу он ругается. Но в конце концов это всё закончилось такой ошибкой на поле Fld793 (ОбластьДанныхОсновныеДанные), и по профайлеру всё останавливается после проверки таблицы журналов и всё, вылетает.
  16. В итоге приходим к выводу, что «скотчем и соплями» проблему не решить, и придётся подходить к вопросу системно.

Инструментарий

  1. Загрузка/выгрузка данных из DBSchema и DBNames(используя алгоритм Deflate);
  2. Загрузка схемы объекта из чистой эталонной базы, автозамена реквизитов объекта на наши. Добавление/замена схем объектов в DBSchema;
  3. Проверка и автоматическое(не все) создание недостающих схем объектов, проверка реквизитов в таблице DBNames;
  4. Реструктуризация таблиц SQL, добавление/замена полей(не все);
  5. Загрузка в таблицы SQL, выгруженные из файловой базы с помощью Tool 1CD

 

upd. 2019.07.13 - Добавлена интеграция с обработкой //infostart.ru/public/275315/. Подключаемся к "убитой" базе, читаем список таблиц и загружаем напрямую нужные таблицы в SQL

upd. 2020.08.03 - Добавлена возможность прямой выгрузки из списка DBNames в базу. Добавлена возможность генерации перечня DBNames для случаев когда в схеме базы объекты есть, а в DBNames нехватает. Автоматически генерируется для констант, перечислений и документов, остальные объекты можно доработать по желанию.

обработка DBSchema DBNames Tool_1CD восстановление

См. также

Исправление в 1С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

Корректировка данных Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4800 руб.

06.10.2023    2149    28    14    

32

Тестирование и исправление ключей аналитики ERP, УТ11, КА

Корректировка данных Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    106625    631    173    

673

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27177    78    146    

59

Заполнение документа "Корректировка регистров" произвольными данными

Закрытие периода Корректировка данных Платформа 1С v8.3 Система компоновки данных 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 руб.

13.07.2015    50095    171    29    

121

Исправление ошибки закрытия месяца "Обнаружены ненулевые остатки по суммам при нулевом остатке по количеству в регистре себестоимости по организации". УТ 11.4,УТ 11.5, КА 2.4,КА 2.5, ERP 2.4, ERP 2.5, КА 2 Казахстан, Управление торговлей 3 для Казахстана

Закрытие периода Корректировка данных Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

2400 руб.

27.10.2021    22225    298    35    

71

Исправление ошибок по НДФЛ и взаиморасчетам с сотрудниками в 1С:Бухгалтерия 3.0

Корректировка данных Зарплата Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Внешняя обработка предназначена для исправления самых различных ошибок, возникших по самым разным причинам. Общее проявление этих ошибок видно в различии данных между: проводками и различными отчетами по НДФЛ, заполнении ведомостей на выдачу зарплаты, неверным расчетом НДФЛ при начислении ЗП и т.д.

3600 руб.

09.02.2024    570    1    4    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Timur.V 78 11.03.19 14:59 Сейчас в теме
Долго себя ругаем за лень при создании архива перед обновлением;

))
Должен быть чек-лист по обновлению!
2. Константин С. 664 11.03.19 15:32 Сейчас в теме
(1)
Должен быть чек-лист по обновлению!


Да ее на SQL, где это займет не более 10-20 минут.
3. acanta 11.03.19 15:36 Сейчас в теме
В 7ке DBF при обновлении и реструктуризации бакап формировался платформой на каждый файл отдельно.
Неужели сложно было встроить в платформе бакап базы при реструктуризации куда нибудь во временную папку?

"Если звезды зажигают значит это кому нибудь нужно" (с)
4. fishca 1254 11.03.19 16:05 Сейчас в теме
Загрузка/выгрузка данных из DBSchema и DBNames(используя алгоритм Deflate);

с помощью GameWithFire ( http://main.1c-ei.ru/Articles/gamewithfire#TOC--7 ) ?
5. spawn_a 53 11.03.19 21:59 Сейчас в теме
(4) Спасибо за ссылку! К сожалению, сам найти не смог подобного решения.
16. SV6 13.01.20 18:06 Сейчас в теме
(4)Огромное спасибо, шикарное решение, куда практичнее всех описанных
18. ZloyGenii 11.03.20 12:57 Сейчас в теме
(4)
Deflate


Не подскажите примерный код. Запросом получаю данные из таблицы DBSchema но вот привести их к виду в файл не получается чего то... каким методом преобразовываете данные из поля "serializeddata" ? то ли я проглядел что-то, то ли не так делаю гно любой из методов дает ошибку :(
19. spawn_a 53 11.03.20 13:00 Сейчас в теме
(18) Вроде бы вот этот метод использовал: https://infostart.ru/public/618906/
20. ZloyGenii 11.03.20 15:23 Сейчас в теме
(19)
метод


Блин все на поверхности... Спасибо будем мудрить дальше, а вообще получить бы часть обработки вашей только для получения схемы корректировки и закачки обратно :( так сказать для нищенствующих...

За ссылку большое спасибо будем проверять.
6. SerVer1C 746 29.03.19 00:15 Сейчас в теме
Ничего не понял. Вы базу восстановили? Если есть CF такой же точно конфы, то почему бы просто не подменить одно значение из DBSchema ?
7. spawn_a 53 29.03.19 08:39 Сейчас в теме
(6) Базу конечно же восстановил. В каждой базе DBSchema генерируется свой, т.е. даже если выгрузить CF из таблицы Config и залить в новую чистую базу - имена таблиц и полей будут каждый раз разными. Поэтому приходится брать из чистой базы из DBSchema схему объекта, и выполнять в ней замену имён полей на имена "убитой" базы. Особую сложность в этом процессе представляют индексы.
8. SerVer1C 746 29.03.19 11:44 Сейчас в теме
На что тогда вы опирались, при лечении DBSchema, если CF и в битой базе, и в любой другой, созданной на основе оригинального CF, будет таким же (т.е. таблица Config) ?
9. spawn_a 53 29.03.19 12:19 Сейчас в теме
Из CF нам нужны идентификаторы объектов и реквизитов метаданных. По ид получаем из DBNames имена полей. Т.е. получив схему объекта из чистой базы, мы можем через DBNames чистой базы получить имена реквизитов. Далее обратная процедура, берем DBNames "убитой" базы и определяем её имена полей.
10. Дмитрий74Чел 234 19.09.19 14:26 Сейчас в теме
Напишите пожалуйста документацию к обработке. Кнопок много. Какова правильная последовательность действий? И назначение кнопок не всегда ясно.
11. spawn_a 53 22.09.19 12:57 Сейчас в теме
Собственно я уже отметил, что обработка является "инструментом" программиста, по аналогии например с 1cadmin. Весь функционал заточен на понимание проблемы, и методики её решения самим разработчиком. В каждом конкретном случае приходится что-то в ней допиливать или менять. Сейчас у меня есть несколько восстановленных баз с её помощью, и каждый раз что-то я допиливаю или переделываю. Если есть конкретные вопросы - велком в личку, с удовольствием подскажу/объясню.
12. Дмитрий74Чел 234 24.09.19 18:24 Сейчас в теме
Использовал Вашу обработку в своей статье. Полагаю, что для Вас основная ценность обработки именно в автоматическом поиске и исправлении ошибок. Полагаю, коллегам пригодилась бы урезанная версия, с функционалом только в части выгрузки DBSchema и DBNames из sql в файл и обратно, за меньшую цену sm.
13. spawn_a 53 24.09.19 22:50 Сейчас в теме
Выгрузку/загрузку можно сделать отдельной обработкой, я в своей использовал наработки также других товарищей с инфостарта. Постараюсь сделать упрощенный вариант и выложу за "мзду маленькую".
Насчет вашей методики восстановления, мне кажется, что можно было сделать проще. В обработке есть функционал генерирования объектов DBShema по данным копии конфигурации базы. Просто нужно реальную ситуацию смотреть, а не готовый вариант решения проблемы.
14. k9260130000 27 17.10.19 00:33 Сейчас в теме
Благодарю. Обработка помогла. Статья https://infostart.ru/public/1126277/ пояснила как ей пользоваться, дав решение проблемы в "ручном" режиме . Из обработки видно что её функционал могуч и позволил бы сделать всё быстрей, но без мануала овладеть им явно сложнее чем ручками записи поправить. Если бы Вы автоматизировали то что проделал автор статьи могли бы поднять стоимость и повысить привлекательность для широких масс Вашей обработки.
15. rokhin 142 24.12.19 15:57 Сейчас в теме
Прочитал с первого до 16-го пункта. Ничего не понятно. Плюнул на статью.
Стал сам разбираться. Процесс шел, результат вот-вот будет получен. Дальше тупик.
Вернулся к этой статье.
Прочитал с первого до 16-го пункта. Ну все понятно, так я и делал.
Скачал обработку.
17. rokhin 142 23.01.20 09:40 Сейчас в теме
Лечить схему вручную в редакторе не удалось, появились непонятные несоответствие типа поля. Трудно сделать все аккуратно, повторять было лень, пришлось писать обработку.
https://infostart.ru/public/1183875/
Никаких замечаний по несоответствию поля уже не было. Видимо когда ручками, то что-то сделал криво.
А с обработкой прошло все гладко. Даже не сбрасывал кэш, не производил "тестирование и исправление" базы.
21. veselon 08.10.20 11:17 Сейчас в теме
Добрый день, прописалось поле в таблицу криво. Можно ли данной обработкой удалить этой поле из dbshema? ругается что оно NULL , поле точно лишнее. Смотрел сравнивал структура с чистой базой с ИТС с этого же релиза.
Прикрепленные файлы:
22. spawn_a 53 08.10.20 11:27 Сейчас в теме
Да, без проблем читаете схему, находите объект, прям в тексте редактируете и записываете схему обратно. Велком в личку, если что-то не получается ;)
23. veselon 08.10.20 11:42 Сейчас в теме
Можете написать мне первым? мне пишет "отложенная группа"
24. ivdic 31 20.01.21 17:03 Сейчас в теме
25. spawn_a 53 20.01.21 17:10 Сейчас в теме
(24) Здравствуйте, теоретически при небольших доработках запросов в части типизации должно заработать... но вопрос, как понимаете, требует проработки
26. ivdic 31 23.04.21 13:20 Сейчас в теме
Добрый день! случился такой казус см. скриншот. sql postgres база работает но при выгрузке в dt или тестировании выдает такую ошибку.
ссылается на несуществующую таблицу констант... думается что проблема в записях sql и DBSchema и DBNames. Данная обработка поможет решить проблему? инструкцию к программе так и не выложили не понятно как пользоваться
Прикрепленные файлы:
27. spawn_a 53 23.04.21 13:26 Сейчас в теме
(26) Обработка не является универсальным средством, это скорей набор инструментов, чтобы попробовать решить конкретную проблему на конкретной базе. На постгресе мне базы на восстановление не давали, поэтому уверенно что-то сказать не могу. Возможно кто-то из наших коллег экспериментировал.
28. ivdic 31 23.04.21 14:26 Сейчас в теме
(27) Надеялся что вы мне хоть направление поиска проблемы дадите.. обратился в тех поддержку ...прикинулись дурачками
29. spawn_a 53 23.04.21 14:33 Сейчас в теме
33. mag1ka 22.01.24 21:43 Сейчас в теме
(29) Андрей, доброго времени суток!

Подскажите, как с Вами связаться, не могу разобраться с местным функционалом личных сообщений.
34. Дмитрий74Чел 234 23.01.24 08:17 Сейчас в теме
(33) сначала на картинку пользователя, потом "написать"
Прикрепленные файлы:
30. copybases 68 07.02.22 16:46 Сейчас в теме
Есть такое замечание: валится при чтении конфигурации, если в ней нет ни одного объекта какого-либо из считываемых типов. У меня, например, нет ни одной последовательности!
Для программиста, конечно, не проблема закомментить соответствующую строку, тем более, что обработка вообще не предназначена для конечного пользователя. Так что это просто для информации, чтоб (как я!) сходу не пугались те, кто с подобным столкнётся.
31. redscrest 22.01.23 22:30 Сейчас в теме
Автор, добрый день !, как вам в личку написать?
32. user2040419 21.01.24 08:07 Сейчас в теме
Хорошая статья, будем брать на вооружение
Оставьте свое сообщение