gifts2017

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

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

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

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

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

 

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

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

 

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

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Доржи Балбаров (Angeros) 23.09.11 06:27
Идея классная. хорошо подойдет для небольших баз ;)
2. Александр Медведев (anig99) 23.09.11 08:02
А соединение и перенос по какой технологии происходят?
3. Evgeny Sc (JohnySC) 23.09.11 10:08
Соединение идет через COM с копией базы, из копии выгружается объект с помощью сериализации во временный файл, и в рабочей базе этот объект из файла XML загружается. В принципе все просто и довольно универсально :-)
4. arjunasoft arjunasoft (arjunasoft) 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) 26.09.11 12:50
(10) reboot234, сам не пробовал, необходимости не было, но думаю без проблем должно работать, только строку подключения к базе надо изменить в соответствии с мануалом тут или тут
12. Владимир Насыров (Spacer) 26.09.11 16:08
Хорошая и нужная вещь. Как раз сейчас мне нужна.
Уже начал сам писать такую, склеив из двух других обработок.
Но раз уж есть готовая, попробую использовать ее.
Надеюсь что проблем не будет.:)
13. Evgeny Sc (JohnySC) 26.09.11 20:35
(12) Spacer, ну посмотрите код, может где-то можете что-то лучше или оптимальнее предложить, моя написана "на коленке" второпях, народ я думаю, будет рад оптимизации
14. Владимир Насыров (Spacer) 27.09.11 02:51
(13) JohnySC, Посмотрю обязательно.
Хочу свою все же тоже дописать и выложить. Моего там впрочем будет мало.
Это будет скорее комбинация того что нашел в разных источниках.
Одну полезную часть кода уже взял себе на заметку - как использовать при COM соединении конструктор объекта с параметрами.:)
15. Владимир Насыров (Spacer) 27.09.11 02:54
(13) JohnySC, так, навскидку - оптимальнее там можно сделать следующее:
в функции ПолучитьСсылкуПоГУИД() идет поиск ссылки перебором по нескольким менеджерам.
Это можно не делать если заранее известен тип ссылки.
16. Sparda Sparda (Sparda) 27.09.11 09:39
надо бы попробовать, а то иногда клиенты косячат с архивами..надеюсь поможет..
17. владимир демченко (jour) 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) 28.09.11 17:34
(19) zhleonid8, не понял сути вопроса... базы могут повреждаться по разным причинам, например при отключении электричества, глюках железа, неосторожного удаления без проверки ссылок и многих других причин.
22. Evgeny Sc (JohnySC) 28.09.11 19:58
(15) Spacer, спасибо, дополнил обработку фильтрами, отредактировал статью, еще немного оптимизировал скорость работы
23. Evgeny Sc (JohnySC) 28.09.11 20:00
(2) anig99, малость переделал, чтоб быстрее работала, сериализацию в XML сделал не через временный файл, а через простую текстовую переменную.
24. Evgeny Sc (JohnySC) 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) 30.09.11 20:49
(25) f_fobos, (20) zhleonid8, речь идет о любом релизе 1с8, это не от релиза зависит, а от повреждений файловой системы, например, или битой оперативки.
27. Владимир Насыров (Spacer) 30.09.11 21:09
Spacer пишет:
Хочу свою все же тоже дописать и выложить.

Как и обещал, выложил свой вариант обработки:
http://infostart.ru/public/92259/
28. Ярослав Радкевич (WKBAPKA) 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) 18.01.12 08:59
40. Александр (rc.d) 19.01.12 11:13
К сожалению, не запустилась под 1С 8.2 Комплексная автоматизация 1.1
А жаль, сейчас верчу обработку товарища Spacer'a, вроде помогает.
41. Evgeny Sc (JohnySC) 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) 30.05.14 22:13
При получении ГУИДа есть ошибка. Если код таблицы не двухзначный, а 3 или 4-значный, то ГУИД получается обрезанным, что и вызывает ошибку при выполнении

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