Поиск объектов типа <Объект не найден...>. Теперь на управляемых формах

09.01.12

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

Универсальная обработка для поиска битых ссылок, представленных строкой типа <Объект не найден...>. Теперь на управляемых формах.

Скачать исходный код

Наименование Файл Версия Размер
Поиск объекта по GUID
.epf 25,37Kb
724
.epf 25,37Kb 724 Скачать

 

Обработка "Поиск объектов по GUID"

Обработка предназначена для поиска и формирования списка ссылок выбранного типа из строк типа ". Обработка запускается в базе, содержащей искомые "битые" ссылки, например, в резервной копии. В отличие от других обработок, найденных на просторах интернета и Инфостарта позволяет обрабатывать список "битых" ссылок.

Алгоритм преобразования строки в объект УникальныйИдентификатор показан на скриншоте.

Тестировалась на конфигурации БП 1.6, платформа 8.2.

Обработка понадобилась после того как удалил "лишние"Smile элементы справочника "Подразделения организаций". Соответственно на всех счетах с субконто "Подразделения" появились битые ссылки. Пришлось срочно восстанавливать из резервной копии.

Типовой порядок действий 

  1. Скопировать в поле табличного документа список "битых" ссылок.
  2. Нажать кнопку Найти ссылки. При этом заполнится табличная часть найденными ссылками. При этом в табличной части заполняются дополнительные реквизиты, например, Номер и Дата для документов.
  3. Вывести список найденных ссылок в табличный документ и перенести объекты в "поврежденную" базу с помощью типовых обработок переноса данных.

Похожие публикации на Инфостарте и в сети Интернет:

//infostart.ru/public/73983/

http://help1c.com/faq/view/483.html

Наверняка, есть еще Smile

Версия 1.0.2 от 06.04.2011

1) Добавлен поиск типа объекта по номеру таблицы в строковом представлении объекта, за что спасибо пользователям Широкий и ilya2184.

2) Косметические исправления

Версия 1.0.3 от 05.08.2011

1) Добавлена возможность работы в режиме управляемых форм.

2) Исправлена ошибка, указанная пользователем kosmo0.

См. также

Быстрый поиск дублей с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах 8.1-8.3 (УТ 10.3, БП 2, ЗУП 2.5, КА 1.1, УТ 11, БП 3, УНФ 1.6/3.0, КА 2, ЗУП 3 и т.д.)

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

Обработки помогут Вам легко и, главное, быстро (в 5 раз и быстрее штатной обработки 1С), выполнить поиск дублирующих данных в Ваших базах 1С на платформах 8.1-8.3. Это позволит уменьшить объем лишней информации в справочниках и документах, планах видов характеристик и др., упростит работу с данными пользователям. А так же можно, одним нажатием, узнать в каких ссылочных объектах есть вообще дубли! Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. А так же обновления Вы получаете бесплатно в течение года с момента приобретения данных обработок! (Обновление от 27.11.2023, версия 6.12)

10800 руб.

14.05.2012    155524    327    252    

559

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

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

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

21600 руб.

15.05.2017    42617    10    24    

38

Кто такая Мантикора?

Поиск данных Платформа 1С v8.3 Россия Абонемент ($m)

Статья об опыте развертывания и интеграции с базой данных Manticore Search для быстрого полнотекстового поиска.

1 стартмани

30.11.2023    3221    andreysidor4uk    16    

46

PowerOffice

Поиск данных Корректировка данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

PowerOffice - обработка для поиска, просмотра и обработки данных для пользователей. Доступ к объектам на просмотр и редактирование данных определяется правами пользователя.

1 стартмани

05.06.2023    1971    23    PowerBoy    1    

15

Получение ссылки по бинарной строке PostgreSQL или MSSQL

Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Получение ссылки в 1С по бинарной строке из PostgreSQL в виде строки формата bytea или из MSSQL в виде шестнадцатиричной строки. Кроме ссылочных объектов ссылки могут быть получены и для перечислений. Это может быть полезно при анализе логов журнала регистрации или СУБД.

1 стартмани

04.04.2023    2634    2    berserg    2    

12

Поиск документов с ошибками проведения, универсальный

Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка позволяет найти проведенные документы без движений и, наоборот, НЕ проведенные документы с движениями. Подходит для любой конфигурации.

1 стартмани

18.08.2022    3021    22    KVIKS    3    

10

Поиск и замена значений + Поиск дублирующихся элементов справочников с подключением к внешней базе

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

Обработка предназначена для гибкого поиска и дальнейшей замены дублей справочников, документов, а также планов видов расчетов и планов видов характеристик. В обработку включена возможность проверки наличия ссылки во внешней базе (по УИДу), поиска дублей с предварительным отбором, а также произвольной обработки реквизитов перед поиском (например, возможно удалить определенные символы из наименования).

3600 руб.

30.03.2022    8612    3    0    

5
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. V.Nikonov 120 30.03.11 19:31 Сейчас в теме
А отчего же сохранили обработку под 8.2? Обратная конвертация не работает!!!
2. ediks 335 30.03.11 21:18 Сейчас в теме
(1) Потому, что в 8.2 для реквизита GUID можно задать тип УникальныйИдентификатор, которого в 8.1 нет. Не хочется делать лишних телодвижений в условиях цейтнота, да и работаю я под 8.2.
3. NazaroV74 31.03.11 10:32 Сейчас в теме
Огромное спасибо)) Вещь нужная
4. Широкий 693 31.03.11 11:46 Сейчас в теме
Ну и зачем нужно тип объекта выбирать?
В представлении битой ссылки эта инфа и так есть
5. ediks 335 31.03.11 11:54 Сейчас в теме
(4) А Вы знаете, как из строкового представления извлечь тип объекта? Я бы вставил этот алгоритм в обработку.
6. romansun 193 31.03.11 12:23 Сейчас в теме
(5)
писал пару месяцев назад на схожую тему
http://infostart.ru/public/80438/
7. ediks 335 31.03.11 13:00 Сейчас в теме
(6) все равно это не решает проблемы. Вам заранее известен тип объекта для восстановления (поиска). Или что-то я не так понял?

НовЭл = Справочники.БюджетныеЦентры.СоздатьЭлемент();

НовЭл.УстановитьСсылкуНового(ЗначениеИзСтрокиВнутр("{""#"",54c3544f-651b-4887-ae3a-2df362efbacb,9659:ab2b001b78e134e011dfec0814418025}"));
27. Spacer 355 10.01.12 14:01 Сейчас в теме
(7) "Вам заранее известен тип объекта для восстановления (поиска). Или что-то я не так понял?"
Если тип объекта для восстановления не известен заранее, то его всегда можно получить перебором.
Это используется во многих обработках подобного рода, например в этой:
http://infostart.ru/public/92259/
Просто если он известен заранее то можно обойтись без дополнительных телодвижений.
28. ediks 335 10.01.12 16:18 Сейчас в теме
(27) 1) Мне кажется, что вопрос решен, благодаря подсказке - тип объекта хранится в представлении битой ссылки.
2) Перебирать каждый объект метаданных для каждой битой ссылки мне кажется неразумным. Количество итераций получается велико - туча битых ссылок, помноженная на сотни объектов метаданных.
8. Широкий 693 31.03.11 13:57 Сейчас в теме
Перем ТаблицаТипов;
//--------------------------------------------------------------------//
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
	СтрокаПоиска=ТаблицаТипов.Найти("1216","НомерТаблицы");
	Если СтрокаПоиска=Неопределено Тогда
		Сообщить("Не определена таблица хранения");
		Возврат;
	КонецЕсли; 
	
	Сообщить(СтрокаПоиска.ТипОбъекта);
КонецПроцедуры

Процедура ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,КоллекцияМетаданных,КоллекцияОбъектов)
	Для Каждого ОбъектМетаданных Из КоллекцияМетаданных Цикл
		ПустаяСсылка=КоллекцияОбъектов[ОбъектМетаданных.Имя].ПустаяСсылка();
		
		МСтроки=СтрЗаменить(ЗначениеВСтрокуВнутр(ПустаяСсылка),",",Символы.ПС);
		
		Для сч=1 По СтрЧислоСтрок(МСтроки) Цикл
			МСтрока=СтрПолучитьСтроку(МСтроки,сч);
			
			ПозицияРазделителя=Найти(МСтрока,":");
			Если Не ПозицияРазделителя Тогда
				Продолжить;
			КонецЕсли; 
			
			НоваяСтрока=ТаблицаТипов.Добавить();
			НоваяСтрока.НомерТаблицы=Лев(МСтрока,ПозицияРазделителя-1);
			НоваяСтрока.ТипОбъекта=ТипЗнч(ПустаяСсылка);
		КонецЦикла; 
	КонецЦикла;   
КонецПроцедуры

Процедура ИнициализацияПеременных()
	ТаблицаТипов=Новый ТаблицаЗначений;
	ТаблицаТипов.Колонки.Добавить("НомерТаблицы");
	ТаблицаТипов.Колонки.Добавить("ТипОбъекта");

    ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.Справочники,Справочники);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.Документы,Документы);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.ПланыВидовХарактеристик,ПланыВидовХарактеристик);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.ПланыОбмена,ПланыОбмена);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.Задачи,Задачи);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.БизнесПроцессы,БизнесПроцессы);
КонецПроцедуры
 
ИнициализацияПеременных();
Показать
9. ediks 335 31.03.11 14:37 Сейчас в теме
(8) ОК, спасибо. Действительно, достаточно просто.
10. ilya2184 62 01.04.11 13:38 Сейчас в теме
Ну и я свой вклад внесу - у меня тоже есть подобная обработка, плодить не буду
У меня есть кнопка создания объекта...

Это понятно:
Стр1 = СтрЗаменить(ИсходнаяСтрока,"<Объект не найден> (","");
СтрокаНомерТипа = Лев(Стр1,Найти(Стр1,":")-1);
Идентификатор = Сред(СтрЗаменить(Стр1, СтрокаНомерТипа+":",""),1,32);
СтрокаИд = Прав(Идентификатор,8)+"-"
+Сред(Идентификатор,21,4)+"-"
+Сред(Идентификатор,17,4)+"-"
+Лев(Идентификатор,4)+"-"
+Сред(Идентификатор,5,12);
Гуид = Новый УникальныйИдентификатор(СтрокаИд);

//Моя таблица типов содержит колонки НомерТипа(Строка), МенеджерТипа(СправочникМенеджер, ДокментМенеджер), ИмяТипа
//например "1123", Справочники, "Номенклатура"
СтрокаТЗ = мТаблицаТипов.Найти(СтрокаНомерТипа, "СтрокаНомерТипа")
//тут проверка нашли или нет - нет - плохо - была серьёзная реструктуризация - надо поднимать бэкапы.
СсылкаНаОбъект = СтрокаТЗ.МенеджерТипа[СтрокаТЗ.ИмяТипа].ПолучитьСсылку(Гуид);

//и полезная кнопка.
УдаленныйОбъект = СсылкаНаОбъект.ПолучитьОбъект();
Если УдаленныйОбъект = Неопределено Тогда
Если СтрокаТЗ.МенеджерТипа = Документы Тогда
УдаленныйОбъект = СтрокаТЗ.МенеджерТипа.СоздатьДокумент();
ИначеЕсли СтрокаТЗ.МенеджерТипа = ПланыСчетов Тогда
УдаленныйОбъект = СтруктураОбУдаленном.Менеджер.СоздатСчет();
Иначе
УдаленныйОбъект = СтрокаТЗ.МенеджерТипа.СоздатьЭлемент();
КонецЕсли;
УдаленныйОбъект.УстановитьСсылкуНового(СсылкаНаОбъект);
КонецЕсли;
//заполним и запишем по памяти...
УдаленныйОбъект.ПолучитьФорму().ОткрытьМодально();
11. Nikola23 698 06.04.11 00:35 Сейчас в теме
А чтоб не мучатся с восстановлением убитых ссылок (при наличии резервной копии) можно попробовать использовать обработку ВыгрузкаЗагрузкаДанныхXML. Выгружаем объекты из резервной копии, загружаем в рабочую. Соответствие объектов рабочей базы и копии устанавливается по внутр идентификаторам. В результате выполнения потерянные объекты будут восстановлены.
12. ediks 335 06.04.11 14:08 Сейчас в теме
(11) Вот только осталось в резервной копии определить, какие объекты выгружать. Для этого и создавалась эта обработка. А (10) приведен как пример поиска и восстановления убитой ссылки в текущей базе.
13. kosmo0 108 17.06.11 13:45 Сейчас в теме
В процедуре РазобратьСтрокиОбъектНеНайден() строку Счетчик = Счетчик + 1; стоит поднять выше условия, иначе если строку не удастся разобрать будет зацикливание.
14. ediks 335 05.08.11 18:54 Сейчас в теме
(13) Исправил. Спасибо за наводку.
15. toshka 15.09.11 13:30 Сейчас в теме
Спасибо! Очень помогла обработка!
16. zse 58 15.09.11 13:41 Сейчас в теме
Не понятно зачем все это.
Главное определить порушенный объект (справочник такой-то). А далее делаем
выгрузку объекта из копии и подгружаем в поломанную базу.
И не забываем еще раз проверить права на удаление объектов... :D
17. ediks 335 16.09.11 08:16 Сейчас в теме
(16)
1) Как Вы определяете тип объекта? Тип битой ссылки может быть составного типа. К примеру, документ расчетов на 60 или 62 счете...
2) А как Вы определяете объект, который необходимо выгрузить из копии???
3) Почитайте всю ветку - я уже объяснял для чего нужна эта обработка.
18. ELInfinito 23.09.11 07:11 Сейчас в теме
Спасибо. Все отлично работает.
19. JohnySC 179 23.09.11 07:28 Сейчас в теме
На основании этой и других идей с этого сайта, получилась вот такая моя обработка:
http://infostart.ru/public/91438/
Она делает примерно то же, только еще и переносит объекты сразу из нужной копии в рабочую базу
20. shomo 05.10.11 15:33 Сейчас в теме
Замечательно. Можно восстанавливать утраченные объекты. Огромное спасибо.
21. toshka 12.10.11 12:19 Сейчас в теме
Спасибо за обработку! Очень нужная вещь!
22. zabaikalka 19.10.11 16:03 Сейчас в теме
ПОМОГИТЕ, у меня беда!!!! Бэккапов нет, а вот таблица не найдена! Очень надо!!!
23. ILYA1C 24.10.11 06:50 Сейчас в теме
нашла все битые ссылки)))
24. dtitov 28.11.11 12:54 Сейчас в теме
Вполне приличная обработка, для моего конкретного случая подошла весьма, т.к. самому некогда было заморачиваться. С удовольствием плюсую!!
25. vit59 57 10.12.11 15:39 Сейчас в теме
автоматом можно сделать, чтобы по битым ссылкам по ГУИДу сам переносил объект по типам из архива ?
26. ediks 335 10.12.11 19:42 Сейчас в теме
(25) читайте (19) - уже все сделано
29. JohnConnor 64 10.04.15 19:14 Сейчас в теме
30. ediks 335 10.04.15 20:51 Сейчас в теме
(29) Какую ошибку выдала обработка?
Оставьте свое сообщение