![]() |
![]() |
![]() |
|
Восстановление удаленного объекта | ☑ | ||
---|---|---|---|---|
0
Невский Александр
19.01.09
✎
15:20
|
Пытаюсь разобраться с написанием обработки по восстановлению удаленных объектов. В Интернете нашел:
Процедура ПередОткрытиемФормыДокумента(Форма, Отказ, СтандартнаяОбработка) Экспорт //Установить ссылку для связи для работы с формой справочника в //связанных формах и подчиненных элементах Если Форма.ЭтоНовый() Тогда Если РольДоступна("Администратор") И Константы.РежимВосстановленияДанных.Получить() Тогда ВосстанавливаемыйUID = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; Если ВвестиСтроку(ВосстанавливаемыйUID, "Восстанавливаемый UID") Тогда Если Найти(ВосстанавливаемыйUID, "-") = 0 Тогда ВосстанавливаемыйUID = Сред(ВосстанавливаемыйUID, 25,8) + "-" + Сред(ВосстанавливаемыйUID, 21,4) + "-" + Сред(ВосстанавливаемыйUID, 17,4) + "-" + Сред(ВосстанавливаемыйUID, 1,4) + "-" + Сред(ВосстанавливаемыйUID, 5,12); КонецЕсли; СсылкаНового = Документы[Форма.ДокументОбъект.Метаданные().Имя] .ПолучитьСсылку(Новый УникальныйИдентификатор(ВосстанавливаемыйUID)); Иначе СсылкаНового = Документы[Форма.ДокументОбъект.Метаданные().Имя] .ПолучитьСсылку(Новый УникальныйИдентификатор); КонецЕсли; Иначе СсылкаНового = Документы[Форма.ДокументОбъект.Метаданные().Имя] .ПолучитьСсылку(Новый УникальныйИдентификатор); КонецЕсли; Форма.УстановитьСсылкуНового(СсылкаНового); Форма.СсылкаДляСвязи = СсылкаНового; Иначе Форма.СсылкаДляСвязи = Форма.Ссылка; КонецЕсли; КонецПроцедуры _____________________________________________________ Переписал немного по-своему, в виде внешней обработки: ИскомыйОбъект = ЭлементыФормы.ОбъектПоиска.Значение; Если ИскомыйОбъект.Тип = "Документ" Тогда НовДок=Документы[ИскомыйОбъект.Объект.Имя].СоздатьДокумент(); ИначеЕсли ИскомыйОбъект.Тип = "Справочник" Тогда Справочники[ИскомыйОбъект.Объект.Имя].СоздатьЭлемент(); КонецЕсли; СсылкаНовогоД = Документы[ИскомыйОбъект.Объект.Имя]; ВосстанавливаемыйUID = UID; Если Найти(ВосстанавливаемыйUID, "-") = 0 Тогда ВосстанавливаемыйUID = Сред(ВосстанавливаемыйUID, 25,8) + "-" + Сред(ВосстанавливаемыйUID, 21,4) + "-" + Сред(ВосстанавливаемыйUID, 17,4) + "-" + Сред(ВосстанавливаемыйUID, 1,4) + "-" + Сред(ВосстанавливаемыйUID, 5,12); КонецЕсли; Идент = Новый УникальныйИдентификатор(ВосстанавливаемыйUID); СсылкаНового = СсылкаНовогоД.ПолучитьСсылку(Идент); НовДок.УстановитьСсылкуНового(СсылкаНового); потом открываю форму документа - документ пустой. Почему? |
|||
1
butterbean
19.01.09
✎
15:23
|
(0) а тебе какой надо??
|
|||
2
Невский Александр
19.01.09
✎
15:25
|
я создаю новый документ - передаю в него ссылку удаленного объекта - мне нужен документ, заполненный значениями реквизитов и табличной частью удаленного
|
|||
3
Невский Александр
19.01.09
✎
15:26
|
меня этот вопрос заинтересовал - автор, у которого взял этот блок кода - пишет, что восстановить объект возможно
|
|||
4
Defender aka LINN
19.01.09
✎
15:29
|
(2) Дык записи-то грохнули, откуда ты что восстановить хочешь?
|
|||
5
Невский Александр
19.01.09
✎
15:37
|
... он описывает эту ситуацию и приводит код :))) вот я и пытаюсь это сделать, посмотреть
|
|||
6
AiR
19.01.09
✎
15:47
|
Здесь имеется ввиду подмена УИДа нового документа УИДом потерянного, это не совсем восстановление, это больше похоже на избавление от "Объект не найден..."
реквизиты документа все равно брать откуда-то придется, а если их не знаешь, то как тогда? |
|||
7
Serg_1960
19.01.09
✎
15:47
|
Восстановить то, что уже удалили? Ну Вы и оригинал. Автор кода "восстанавливал" объект, обращаясь к базе архива, где этот объект еще не был удален :)
|
|||
8
Serg_1960
19.01.09
✎
15:49
|
Можно ссылку привести: где, что "нарыли" в инете?
|
|||
9
Невский Александр
19.01.09
✎
16:00
|
в клубе Профессионалов 1С - Александр Чернышев
|
|||
10
Serg_1960
19.01.09
✎
16:03
|
(9) Ыыы... Я же ссылку хотел - а не описание к ней :(
|
|||
11
MMF
19.01.09
✎
16:22
|
ветку нужно переименовать в "ностальгия по DBF + F9"
|
|||
12
Serg_1960
19.01.09
✎
16:23
|
По журналу посмотреть когда было удаление и:
- можно "восстановить" удаленный объект в подчиненном узле РИБ-базы. Если удаление было после обмена сообщениями - достаточно изменить объект в главном узле и отправить его с очередным обменом; - можно в SQL - если бэкап "правильно" настроен, - откат возможно сделать на любой момент времени; - можно из выгрузки(архива копий) базы, сделанной до удаления; Вроде-бы все, какие знаю, методы "без гемороя" перечислил |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |