Обработка для восстановления из резервной копии базы удаленных (без проверки ссылок) или потерянных объектов (1С 8.1, 8.2).

Опубликовал Evgeny Sc (JohnySC) в раздел Администрирование - Тестирование и исправление

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

Суть работы в том, что после тестирования поврежденной базы теряются некоторые объекты и в регистрах (или в документах, справочниках и др.) образуются строки с записями типа "(216:83120025225c84d211e080e2d2bd38d0)". Эти записи, конечно, можно удалить тестированием, поставив опции "удалять объекты" и "очищать ссылки", но тогда из учета окончательно потеряются изменения, внесенные этими объектами, а это опасно. Часто это объекты, которые существуют в ИБ давно, и они есть в старых копиях ИБ. Обработка сделана т.о., что можно ее запустить в оттестированной базе, вставить в первое текстовое окно протокол тестирования, который был в конфигураторе в служебных сообщениях, она выберет ГУИД'ы потерянных объектов. Далее нужно указать ей путь к старой копии базы, в которой не было этих ошибок, она попытается найти там эти потерянные объекты и найденные перенесет в рабочую базу, чтоб восстановить ссылочную целостность ИБ.

После поиска список нигде не найденных объектов возвращается кнопкой "

 

Замечание при работе:

Если объект при переносе в текущую базу не может записаться (например, в копии этот объект был с незаполненными обязательными полями), то после того как он найдется, обработка откроет основную форму объекта для ручной корректировки. Еще бывают случаи, когда в тестировании появляются сообщения, которые не содержат информации по потерянному объекту, например, "Объект, на который ссылается значение, отсутствует", соответственно не понятно, что искать в копии. Для решения этой проблемы открываем указанный в протоколе тестирования объект (документ, регистр и др.) и копируем оттуда через буфер обмена строку "". Если потерянных объектов много (например, в регистрах или табличных частях документов), то можно правой кнопкой -> вывести в список -> и потом в списке выделить все, скопировать, затем вставить в первое поле обработки и кнопкой ">" выбрать все ГУИДы.

 

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

Не забывайте эксперименты проводить на копии! И вообще чаще их делать! Удачи!

P.S. cпасибо Spacer за подсказку касаемо оптимизации скорости поиска. Поэтому добавил фильтр по объектам поиска,теперь, если примерно известно какого типа объект, поиск будет идти быстрее. Также возможность отключать поиск в текущей ИБ, тоже для ускорения. В результирующей таблице теперь можно после восстановления сразу открывать найденные объекты двойным щелчком в последнем столбце "Объект".

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

Наименование Файл Версия Размер
ВосстановлениеЭлементовДанных.epf
.epf 13,86Kb
19.02.13
515
.epf 13,86Kb 515 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Доржи Балбаров (Angeros) 23.09.11 06:27 Сейчас в теме
Идея классная. хорошо подойдет для небольших баз ;)
2. Александр Медведев (anig99) 2467 23.09.11 08:02 Сейчас в теме
А соединение и перенос по какой технологии происходят?
3. Evgeny Sc (JohnySC) 177 23.09.11 10:08 Сейчас в теме
Соединение идет через COM с копией базы, из копии выгружается объект с помощью сериализации во временный файл, и в рабочей базе этот объект из файла XML загружается. В принципе все просто и довольно универсально :-)
4. arjunasoft arjunasoft (arjunasoft) 7 23.09.11 18:20 Сейчас в теме
Интересная идея, не встречал подобного.
5. glinmn (glinmn) 23.09.11 21:21 Сейчас в теме
Если смог бы скачать, у большим удовольствием проверил бы. А то самописная база на v8.0 в 50G теряет не предсказуемо любые объекты и в непредсказуемое время. Только копии спасают, но теряем ссылки
6. Вася Пупкин (r00t) 24.09.11 13:24 Сейчас в теме
Все настолько просто, что обидно да же, почему ни написал подобного сам, когда была необходимость =)
Автору очевидный +
7. Андрей К. (andrei.k) 24.09.11 20:59 Сейчас в теме
Плюс однозначно. Очень хорошая идея. Конечно лучше бы не пригодилась :) но в набор обработок точно попадет.
8. люба люба (lyubashonka) 25.09.11 17:41 Сейчас в теме
Спасибо большое за обработку!
9. Владимир Кузнецов (mr.Kot) 25.09.11 19:07 Сейчас в теме
Да... мне как раз сейчас что-то подобное и нужно. Делаю свертку, а в базе просто тысячи тысяч старых объектов (конфа - УТ). Было решено некоторые доки удалять без проверки ссылок на них, чтобы быстрее закончить свертку. Вот теперь, если что и восстановить можно будет.
10. Дмитрий гр (reboot234) 26.09.11 11:52 Сейчас в теме
А будет возможность работы через сервер 1с? , т.к. разворачивать большие базы в файловый вариант не представляется возможным.
11. Evgeny Sc (JohnySC) 177 26.09.11 12:50 Сейчас в теме
(10) reboot234, сам не пробовал, необходимости не было, но думаю без проблем должно работать, только строку подключения к базе надо изменить в соответствии с мануалом тут или тут
12. Владимир Насыров (Spacer) 243 26.09.11 16:08 Сейчас в теме
Хорошая и нужная вещь. Как раз сейчас мне нужна.
Уже начал сам писать такую, склеив из двух других обработок.
Но раз уж есть готовая, попробую использовать ее.
Надеюсь что проблем не будет.:)
13. Evgeny Sc (JohnySC) 177 26.09.11 20:35 Сейчас в теме
(12) Spacer, ну посмотрите код, может где-то можете что-то лучше или оптимальнее предложить, моя написана "на коленке" второпях, народ я думаю, будет рад оптимизации
14. Владимир Насыров (Spacer) 243 27.09.11 02:51 Сейчас в теме
(13) JohnySC, Посмотрю обязательно.
Хочу свою все же тоже дописать и выложить. Моего там впрочем будет мало.
Это будет скорее комбинация того что нашел в разных источниках.
Одну полезную часть кода уже взял себе на заметку - как использовать при COM соединении конструктор объекта с параметрами.:)
15. Владимир Насыров (Spacer) 243 27.09.11 02:54 Сейчас в теме
(13) JohnySC, так, навскидку - оптимальнее там можно сделать следующее:
в функции ПолучитьСсылкуПоГУИД() идет поиск ссылки перебором по нескольким менеджерам.
Это можно не делать если заранее известен тип ссылки.
16. Sparda Sparda (Sparda) 27.09.11 09:39 Сейчас в теме
надо бы попробовать, а то иногда клиенты косячат с архивами..надеюсь поможет..
17. владимир демченко (jour) 8 28.09.11 12:30 Сейчас в теме
Очень пригодилась.. прошлый админ базу свернул не адекватно.
18. J G (JRG) 28.09.11 16:52 Сейчас в теме
Интересная идея... плюс автору
19. Брест Беларусь (zhleonid8) 28.09.11 17:01 Сейчас в теме
А почему они теряются????????????
20. Брест Беларусь (zhleonid8) 28.09.11 17:01 Сейчас в теме
Часто после повреждений информационной базы, как они повреждаютя в 8,2
21. Evgeny Sc (JohnySC) 177 28.09.11 17:34 Сейчас в теме
(19) zhleonid8, не понял сути вопроса... базы могут повреждаться по разным причинам, например при отключении электричества, глюках железа, неосторожного удаления без проверки ссылок и многих других причин.
22. Evgeny Sc (JohnySC) 177 28.09.11 19:58 Сейчас в теме
(15) Spacer, спасибо, дополнил обработку фильтрами, отредактировал статью, еще немного оптимизировал скорость работы
23. Evgeny Sc (JohnySC) 177 28.09.11 20:00 Сейчас в теме
(2) anig99, малость переделал, чтоб быстрее работала, сериализацию в XML сделал не через временный файл, а через простую текстовую переменную.
24. Evgeny Sc (JohnySC) 177 30.09.11 07:31 Сейчас в теме
Внимание! Файл обновил, интересующиеся, перекачайте!
25. fobos f_fobos (f_fobos) 30.09.11 19:29 Сейчас в теме
zhleonid8 пишет:
Часто после повреждений информационной базы, как они повреждаютя в 8,2

РЕь идет о каком релизе 8.2? Пока не замечал подобных проблем на 14.519
26. Evgeny Sc (JohnySC) 177 30.09.11 20:49 Сейчас в теме
(25) f_fobos, (20) zhleonid8, речь идет о любом релизе 1с8, это не от релиза зависит, а от повреждений файловой системы, например, или битой оперативки.
27. Владимир Насыров (Spacer) 243 30.09.11 21:09 Сейчас в теме
Spacer пишет:
Хочу свою все же тоже дописать и выложить.

Как и обещал, выложил свой вариант обработки:
http://infostart.ru/public/92259/
28. Ярослав Радкевич (WKBAPKA) 199 01.10.11 14:43 Сейчас в теме
29. Alexey Pak (Alexey55) 07.10.11 10:07 Сейчас в теме
Очень полезная вещь! автору спасибо!
самое главное чтобы были копии)
30. Александр Горбачёв (SanyaGrek) 07.10.11 11:36 Сейчас в теме
Качаю.
Сейчас не надо, но бывали случаи, когда пригодилось бы! +
31. Дмитрий Иванов (KuponcheG) 07.10.11 15:15 Сейчас в теме
32. Наталья (zabaikalka) 19.10.11 17:37 Сейчас в теме
ПОМОГИТЕ восстановить базу 82. Госпредприятие.
33. Anna Babynina (orsprog) 20.10.11 08:42 Сейчас в теме
обязательно добавлю в набор обработок...но лучше бы не пригодилось...
34. A (Kochevnic) 21.10.11 12:12 Сейчас в теме
Хорошая разработка. Помогла спасти данные. спасибо!
35. Артем Т (Twirus) 21.10.11 19:30 Сейчас в теме
Вот спасибо, такая прога пока не нужна, но обязательно скачаю, пускай будет.
36. dfg dgf (FLYYY1986) 08.12.11 10:20 Сейчас в теме
Спасибо большое за обработку, пригодилась! Однозначно плюс!
37. Галина Галина (a4a) 15.12.11 14:37 Сейчас в теме
Тема, которая встала остро и срочно. Не могу сделать обмен 8.1 бухгалтерия на 1.6, а выгрузить надо в не пустую 8.2 , причем в 2.0, и только остатки на начало прошлого перида. А база большая, не тестируется из конфигуратора, а при попытке выгрузки в XML гонит битые ссылки. Надеюсь, обработка поможет. Проблема еще и в отсутствии архивов за последний период
38. Юлия Петрова (petrovaUL) 18.01.12 08:55 Сейчас в теме
Спасибо. Ранее была подобная - утерял. Обязательно добавлю в набор обработок. Плюс.
39. Alexei (Alexei_fox) 41 18.01.12 08:59 Сейчас в теме
40. Александр (rc.d) 19.01.12 11:13 Сейчас в теме
К сожалению, не запустилась под 1С 8.2 Комплексная автоматизация 1.1
А жаль, сейчас верчу обработку товарища Spacer'a, вроде помогает.
41. Evgeny Sc (JohnySC) 177 19.01.12 12:24 Сейчас в теме
(40) rc.d, попробовал сейчас - запускается, может конвертировать под 8.2 забыли?
42. Александр (rc.d) 19.01.12 15:17 Сейчас в теме
Да, виноват, забыл. Держите плюс)
46. Андрей - (Motor24) 25.01.13 14:01 Сейчас в теме
(40) Конвертировал - на БП 8.2 10.3 пошло просто замечательно.

Спасибо за обработку.
47. Илья Васильев (swimdog) 368 30.05.14 22:13 Сейчас в теме
При получении ГУИДа есть ошибка. Если код таблицы не двухзначный, а 3 или 4-значный, то ГУИД получается обрезанным, что и вызывает ошибку при выполнении

Процедура ВыбратьСтрокиНажатие(Элемент)
//Выборка из текста отчета строк с ГУИД'ами потерянных объектов
Текст = ТекстТиИ;
ТаблУИД.Очистить();
Для НомерСтроки = 1 По СтрЧислоСтрок(Текст) Цикл
СтрокаТекста = СтрПолучитьСтроку(Текст,НомерСтроки);
Поз = Найти(СтрокаТекста,"<Объект не найден> (");
Если Поз>0 Тогда
СтрИД = Сред(СтрокаТекста, Поз+20);//, 36);
СтрИД2 = Сред(СтрИД, Найти(СтрИД,":")+1);//, СтрДлина(СтрИД));// Преобразуем GUID
48. Илья Васильев (swimdog) 368 30.05.14 22:16 Сейчас в теме
COM-коннектор в обработке 8.1, это уже не актуально. Надо или 8.2 или 8.3.
49. Evgeny Sc (JohnySC) 177 04.06.14 04:00 Сейчас в теме
Сколько лет, сколько зим... Конечно неактуально... На основе этой, и других обработок, есть более свежие, а я уж давно ей не занимался