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

09.01.12

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Поиск объекта по GUID
.epf 25,37Kb
726
726 Скачать (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 Конфигурации 1cv8 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13744    13    48    

25

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

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

10800 руб.

14.05.2012    158962    336    253    

570

Розничная торговля WEB-интеграция Поиск данных Пользователь Платформа 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Альтернатива сервису 1С Номенклатура, не требует подписки ИТС, ищет данные в открытых источниках. Для поиска товара по штрихкоду в сети интернет, полезно для первоначального заполнения базы.

1999 руб.

15.10.2020    18981    23    63    

24

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

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

5 стартмани

25.09.2024    2226    0    Артано    14    

19

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

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

18.08.2024    1808    1cnik2    23    

14

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

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

1 стартмани

14.06.2024    3393    7    RustIG    26    

22

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

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

1 стартмани

30.11.2023    4562    andreysidor4uk    18    

53

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

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

1 стартмани

05.06.2023    2325    25    PowerBoy    1    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. V.Nikonov 120 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 705 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 59 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) Какую ошибку выдала обработка?
Оставьте свое сообщение