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

09.01.12

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Поиск объекта по GUID
.epf 25,37Kb
727
727 Скачать (1 SM) Купить за 1 850 руб.

 

Обработка "Поиск объектов по 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.

См. также

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

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

10800 руб.

14.05.2012    159881    341    253    

574

Математика и алгоритмы Инструментарий разработчика Универсальные функции Поиск данных Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Абонемент ($m)

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

5 стартмани

25.09.2024    2690    1    Артано    14    

19

Поиск данных Программист Платформа 1С v8.3 Россия Бесплатно (free)

В этой статье я хочу рассмотреть еще один кейс применения Clickhouse в связке с 1С - оптимизацию поиска в справочнике по ключевым словам. Здесь не будет готового решения, но будут описаны важные моменты, которые позволят легко применить данный кейс в реальности.

18.08.2024    2285    1cnik2    23    

16

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

Отображение и просмотр реквизитов справочника или документа - с бесконечным открытием подуровней.

1 стартмани

14.06.2024    3781    12    RustIG    30    

22

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

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

1 стартмани

30.11.2023    5196    andreysidor4uk    18    

55

Поиск данных Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Стандартная обработка с доработанным выводом ссылок в виде дерева с учётом фильтра и с удобным подбором исходного объекта

2 стартмани

24.11.2023    1383    15    SerVer1C    10    

10

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

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

1 стартмани

05.06.2023    2469    26    PowerBoy    1    

16

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

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

1 стартмани

04.04.2023    3395    4    berserg    2    

13
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. V.Nikonov 121 30.03.11 19:31 Сейчас в теме
А отчего же сохранили обработку под 8.2? Обратная конвертация не работает!!!
2. ediks 337 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 337 31.03.11 11:54 Сейчас в теме
(4) А Вы знаете, как из строкового представления извлечь тип объекта? Я бы вставил этот алгоритм в обработку.
6. romansun 194 31.03.11 12:23 Сейчас в теме
(5)
писал пару месяцев назад на схожую тему
http://infostart.ru/public/80438/
7. ediks 337 31.03.11 13:00 Сейчас в теме
(6) все равно это не решает проблемы. Вам заранее известен тип объекта для восстановления (поиска). Или что-то я не так понял?

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

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

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

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

    ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.Справочники,Справочники);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.Документы,Документы);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.ПланыВидовХарактеристик,ПланыВидовХарактеристик);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.ПланыОбмена,ПланыОбмена);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.Задачи,Задачи);
	
	ДобавитьДанныеВТаблицуТипов(ТаблицаТипов,Метаданные.БизнесПроцессы,БизнесПроцессы);
КонецПроцедуры
 
ИнициализацияПеременных();
Показать
9. ediks 337 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 707 06.04.11 00:35 Сейчас в теме
А чтоб не мучатся с восстановлением убитых ссылок (при наличии резервной копии) можно попробовать использовать обработку ВыгрузкаЗагрузкаДанныхXML. Выгружаем объекты из резервной копии, загружаем в рабочую. Соответствие объектов рабочей базы и копии устанавливается по внутр идентификаторам. В результате выполнения потерянные объекты будут восстановлены.
12. ediks 337 06.04.11 14:08 Сейчас в теме
(11) Вот только осталось в резервной копии определить, какие объекты выгружать. Для этого и создавалась эта обработка. А (10) приведен как пример поиска и восстановления убитой ссылки в текущей базе.
13. kosmo0 111 17.06.11 13:45 Сейчас в теме
В процедуре РазобратьСтрокиОбъектНеНайден() строку Счетчик = Счетчик + 1; стоит поднять выше условия, иначе если строку не удастся разобрать будет зацикливание.
14. ediks 337 05.08.11 18:54 Сейчас в теме
(13) Исправил. Спасибо за наводку.
15. toshka 15.09.11 13:30 Сейчас в теме
Спасибо! Очень помогла обработка!
16. zse 58 15.09.11 13:41 Сейчас в теме
Не понятно зачем все это.
Главное определить порушенный объект (справочник такой-то). А далее делаем
выгрузку объекта из копии и подгружаем в поломанную базу.
И не забываем еще раз проверить права на удаление объектов... :D
17. ediks 337 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 60 10.12.11 15:39 Сейчас в теме
автоматом можно сделать, чтобы по битым ссылкам по ГУИДу сам переносил объект по типам из архива ?
26. ediks 337 10.12.11 19:42 Сейчас в теме
(25) читайте (19) - уже все сделано
29. JohnConnor 57 10.04.15 19:14 Сейчас в теме
30. ediks 337 10.04.15 20:51 Сейчас в теме
(29) Какую ошибку выдала обработка?
Оставьте свое сообщение