Итак, обработка позволяет по ID определить, какому объекту базы данных он принадлежит. Поддерживаются все ссылочные типы базы данных.
Реализовано три режима: поиск ссылки, создание объекта БД и получение ссылки для объекта БД.
Поиск ссылки
Идентификатор, вводимый в поле «Известный GUID» может иметь различные виды:
1. Объект не найден (25:888ba76e-9ccf-aed3-4a2f-1d8152ba0f17)
Обычно такие ссылки, они же «битые» появляются в результате обмена данными, когда ссылка на объект выгрузилась, а сам объект — нет.
2. 25:888ba76e-9ccf-aed3-4a2f-1d8152ba0f17
Частный случай пункта 1.
3. 888ba76e-9ccf-aed3-4a2f-1d8152ba0f17
Обычная ссылка, полученная применением функции Строка() к объекту типа «УникальныйИдентификатор()». Может где-нибудь храниться, например в регистре «Соответствие объектов информационных баз».
4. 888ba76e9ccfaed34a2f1d8152ba0f17
Тоже, что и в пункте 3, без дефисов.
Можно вводить (копипастить) в любом формате. Следует отметить, что если в ID присутствует номер таблицы из структуры хранения БД, то объект определяется из этой таблицы. Например, здесь это номер «25» — число перед «:» в идентификаторе.
Далее — нажимаем кнопку «Найти ссылку» и в поле «Результат» появится ссылка на объект БД (если он найдется, если нет, то «битая»). Если объект не найден, то его можно создать — на второй закладке.
Итак, поиск осуществляется:
— если есть номер таблицы, то сразу в этой таблице;
— если номера нет, то по порядку во всех ссылочных типах БД.
Создание объекта
Все тоже самое, только кнопка другая — «Создать объект». Система пытается создать объект и установить для него введенный ID. Если удалось, то пользователю предлагается заполнить форму этого объекта и записать его в БД.
Опять же, если в идентификаторе есть номер таблицы, то создаем объект сразу в этой таблице. Если нет, то выбираем тип создаваемого объекта руками.
Получение ссылки
По выбранной ссылке на объект БД система получает ее уникальный идентификатор в 3-х вариантах (для удобства).
Также определяется название таблицы хранения объекта, которому принадлежит выбранная ссылка.
Области использования обработки
Сколько раз я видел у клиентов криво настроенный обмен, в результате которого появлялась куча битых ссылок. При анализе таких обменов (особенно XML) важно понимать, что за объект скрывается за битой ссылкой в базе-источнике. Особенно когда реквизит приемника составного типа или вообще любая ссылка. Эта обработка быстро ответит на данный вопрос. Без нее нудно тратилось время на выяснение сего момента, зачастую набивая код в «табло», т.к. нужно было быстро понять, в чем дело, а обработку писать не хотелось.
Также, например, в регистре «Соответствие объектов информационных баз» хранится это самое соответствие. Объект в текущей базе ясен, а вот что там за ID лежит — вопрос. Хотя, конечно, тут тип можно определить быстро.
Еще бывали моменты, когда есть список ID-шников и попробуй определи, что это за объекты.
Полезно использовать мою обработку вместе с обработками поиска битых ссылок.
Обработка написана под 8.2, но можно использовать и для 8.1 с предварительной конвертацией. Формы — обычные.
Планируемые доработки
1. Получение ID для любой ссылки. Реализовано.
2. Возможность передавать список ID-шников для поиска ссылок в базе-источнике.
3. Получение ID ссылки на объект в другой базе через COM-соединение и наоборот.
Добавь флажок отключения проверок при записи, а то вот ситуация:
Ошибка при восстановлении объекта:
Не заполнено наименование реквизита.
{ВнешняяОбработка.ВосстановлениеСсылокПоGUID.МодульОбъекта(266)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: «Дополнительные реквизиты»!
Конфигурация: БП 2.0.37
Тип битой ссылки: ПВХ.СвойстваОбъектов
(1) Хорошее замечание ) обновил обработку, но не совсем так. Непосредственная запись в базу новых объектов подразумевает под собой соблюдение правил этой базы для ее объектов и ее логики работы. Например, установка номеров документов или кодов справочников, не говоря уже о реквизитах, заполняемых по умолчанию для новых создаваемых объектов. Или установки владельца для подчиненного элемента. Поэтому на этапе создания объекта БД по GUID, когда уже известен тип объекта, я сделал вызов формы этого объекта. Пользователь сам заполняет нужные поля и, при необходимости, записывает элемент в БД.
Также внесены мелкие исправления и доработки.
Хоть ссылки что ли поставьте у себя.
(3) а причём тут эти ссылки ? обработка написана не опираясь на указанные статьи
(4) и что? Вы же статью написали? Скорее всего люди, прочитавшие ее, и скачавшие вашу обработку, возможно захотят узнать еще что-то по этой теме. Эти ссылки как раз в кассу.
(5) для этого на сайте есть поиск
http://infostart.ru/catalog/?s&q=%C2%EE%F1%F1%F2%E0%ED%EE%E2%EB%E5%ED%E8%E5+%E1%E8%F2%FB% F5+%F1%F1%FB%EB%EE%EA&sa=%CD%E0%E9%F2%E8&typelist=gallery
Мда.
Ну автор вы. Надеюсь политики сокрытия и изобретательства себя окупит.
Удачи.
(7) тролли, сгиньте..
разве автор обязан отчитываться перед вами за разработки, которые он написал и «за просто так» их выложил для всеобщего пользования ? если хотите — пользуйтесь разработкой, если не хотите — не пользуйтесь..
набивать себе рейтинг пустыми комментами — дело неблагодарное..
удачи !
(7) и да, новенький_2209, судя по логину вы недавно на сайте, а здесь общаются люди грамотные и знающие русский язык.. держите планку.
Спасибо, пригодилось.
Для УФ будет версия (нужно УТ 11.1 и БП 3.0)?
Все замечательно, вот только хорошо бы написать, что при восстановлении из строки GUID надо переворачивать.
Так что для строки Объект не найден (25:888ba76e9ccfaed34a2f1d8152ba0f17)
GUID будет выглядеть
1d8152ba0f17-4a2f-aed3-888b-a76e9ccf
Я понимаю, что автор подразумевает, что это все уже знают. Однако желательно это тоже указать в тексте.
(11) pvb2003, возможно будет, но пока писать не планировал
(12) wingnut, вы что-то путаете, никакого «переворачивания» там нет.. посмотрите код обработки — там явно написано, каким образом формируется строка гуида для восстановления ссылки.. обработку писал давно, но эту часть только что специально проверил )
Не отработала у меня обработочка. Купил в надежде на успешный результат, но, его не получил.
Может поправите? Последовательность выполнения во вложенном файле.
(15) An-rey, у меня та же проблема, только в УТ10.3 со справочником Номенклатура
http://i.imgur.com/UAoDRkR.png
А именно, при поиске по
<Объект не найден> (68:ba460050568268dc11e370615466d1f3)
вроде бы результат есть, внизу пишет Номенклатура, то есть тип определился верно, и в поле Результат что-то есть, но там опять же битая ссылка, правда другая
<Объект не найден> (68:11e370615466d1f368dc5682ba460050)
См.скрин
При этом точно известно, что нужный объект в искомой базе есть
И если его указать на третьей закладке и получить GUID и помощью этой обработки, то получается вот такое
<Объект не найден> (68:5466d1f3-7061-11e3-ba46-0050568268dc)
И вот по этой строке уже нормально находит!
(12) wingnut, похоже, Вы правы!
Таким образом, перед поиском строку из 1С:Предприятия
<Объект не найден> (68:ba46-0050568268dc-11e3-7061-5466d1f3)
надо преобразовать в
<Объект не найден> (68:5466d1f3-7061-11e3-ba46-0050568268dc)
Если представить ГУИД в исходной строке как 5 групп цифр:
1. 4 символа
2. 12 симв.
3. 4
4. еще 4
5. и 8
В итоге алгоритм напрашивается такой
1. Сперва разбить строку на эти группы символов
2. Потом переставить группы в таком порядке
5-4-3-1-2
3. Полученное вставить в обработку из данной публикации
Протестировал вручную, на моём примере работает!
Надеюсь, автор в ближайшее время поправит разработку!
Роман (автор), отправил Вам в личку доработанный вариант, можете использовать при желании
(17) METAL, ничего преобразовывать не надо. Изначально (посмотрите по тексту описания обработки выше) описан формат битой ссылки 8-4-4-4-12, т.е. как Вы написали во втором варианте, к которому преобразовывали ( <Объект не найден> (68:5466d1f3-7061-11e3-ba46-0050568268dc) ). Другой вопрос — откуда Вы взяли битую ссылку такого рода «<Объект не найден> (68:ba460050568268dc11e370615466d1f3)», которая на Ваш взгляд перевёрнутая и некорректная ?
(17) METAL, обработка писалась под 8.2 ещё, возможно что-то в 8.3 или её подрелизах поменялось.
Так и не получилось найти ни одну ссылку по GUID. Не рекомендую обработку к использованию.
(21) Дмитрий, вот пжаааллллста, попробуйте, только прошу — отпишитесь о результатах!
(22) Спасибо! воспользовалась вашей обработкой, работает. ссылку по guid нашла, создать объект (удаленное подразделение) получилось