Восстановление ссылок по GUID (универсальная)

13.07.12

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

Недавно после нестандартного обмена данными я увидел знакомое <Объект не найден>  в полях некоторых элементов базы-приемника и задался вопросом, как можно быстро в базе-источнике найти объект, от которого уехал только ID ? Особенно если реквизит в базе-приемнике составного типа или вообще его тип не ясен... И в ответ написал обработку.

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Восстановление ссылок по GUID
.epf 14,21Kb
525 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Итак, обработка позволяет по 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-соединение и наоборот.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    115157    692    176    

733

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    38353    114    152    

82

Закрытие периода Корректировка данных Системный администратор Бухгалтер Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Налоговый учет НДС Платные (руб)

Обработка для диагностики и устранения ошибочных состояний ключей аналитики при использовании новой методики раздельного учета НДС в "Бухгалтерии предприятия ред. 3.0"

6000 руб.

27.01.2015    58511    31    14    

40

Розничная торговля Кассовые операции Корректировка данных Бухгалтер 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет Управленческий учет Платные (руб)

Создание, редактирование и удаление документов "Выемка ДС из Кассы ККМ" в конфигурации 1С:Розница 2. Групповая обработка Выемок. Редактирование регистра накопления "Денежные средства в кассе ККМ".

2000 руб.

20.09.2017    41927    174    24    

27

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

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 руб.

13.07.2015    52509    180    29    

132

Печатные формы Корректировка данных Учет документов 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 3.0

Данная обработка позволяет работать со справками об оплате медицинских услуг в любой конфигурации 1С 8.3 Решение выполнено в виде внешней обработки, поэтому будет работать так же на базовых версиях конфигураций 1С, где нет возможности добавить расширение.

3600 руб.

28.01.2025    943    0    0    

2

Корректировка данных Программист Бухгалтер Пользователь 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет НДС Платные (руб)

Обработка предназначена для ООО для смены системы налогообложения УСН на ОСНО, без ведения раздельного учета, входящего НДС по способам учета. При реализации перехода в операции формируются проводки по выделению НДС, который ранее учитывался в стоимости номенклатуры, регистр «НДС Предъявленный».

6000 руб.

22.01.2025    2084    5    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Walther_008 233 13.07.12 17:06 Сейчас в теме
Добавь флажок отключения проверок при записи, а то вот ситуация:
Ошибка при восстановлении объекта:

Не заполнено наименование реквизита.
{ВнешняяОбработка.ВосстановлениеСсылокПоGUID.МодульОбъекта(266)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: "Дополнительные реквизиты"!

Конфигурация: БП 2.0.37
Тип битой ссылки: ПВХ.СвойстваОбъектов
2. Alien_RS_Forever 434 14.07.12 11:34 Сейчас в теме
(1) Хорошее замечание ) обновил обработку, но не совсем так. Непосредственная запись в базу новых объектов подразумевает под собой соблюдение правил этой базы для ее объектов и ее логики работы. Например, установка номеров документов или кодов справочников, не говоря уже о реквизитах, заполняемых по умолчанию для новых создаваемых объектов. Или установки владельца для подчиненного элемента. Поэтому на этапе создания объекта БД по GUID, когда уже известен тип объекта, я сделал вызов формы этого объекта. Пользователь сам заполняет нужные поля и, при необходимости, записывает элемент в БД.
Также внесены мелкие исправления и доработки.
3. Новенький_2209 07.11.12 23:16 Сейчас в теме
4. Alien_RS_Forever 434 08.11.12 11:58 Сейчас в теме
(3) а причём тут эти ссылки ? обработка написана не опираясь на указанные статьи
5. Новенький_2209 09.11.12 18:15 Сейчас в теме
(4) и что? Вы же статью написали? Скорее всего люди, прочитавшие ее, и скачавшие вашу обработку, возможно захотят узнать еще что-то по этой теме. Эти ссылки как раз в кассу.
7. Новенький_2209 11.11.12 20:18 Сейчас в теме
Мда.

Ну автор вы. Надеюсь политики сокрытия и изобретательства себя окупит.

Удачи.
8. Alien_RS_Forever 434 12.11.12 00:38 Сейчас в теме
(7) тролли, сгиньте..
разве автор обязан отчитываться перед вами за разработки, которые он написал и "за просто так" их выложил для всеобщего пользования ? если хотите - пользуйтесь разработкой, если не хотите - не пользуйтесь..
набивать себе рейтинг пустыми комментами - дело неблагодарное..

удачи !
9. Alien_RS_Forever 434 12.11.12 00:40 Сейчас в теме
(7) и да, новенький_2209, судя по логину вы недавно на сайте, а здесь общаются люди грамотные и знающие русский язык.. держите планку.
10. Odinsov 11 02.04.14 13:32 Сейчас в теме
Спасибо, пригодилось.
11. pvb2003 11.09.14 13:20 Сейчас в теме
Для УФ будет версия (нужно УТ 11.1 и БП 3.0)?
13. Alien_RS_Forever 434 18.11.14 01:54 Сейчас в теме
(11) pvb2003, возможно будет, но пока писать не планировал
12. wingnut 17.11.14 14:35 Сейчас в теме
Все замечательно, вот только хорошо бы написать, что при восстановлении из строки GUID надо переворачивать.
Так что для строки Объект не найден (25:888ba76e9ccfaed34a2f1d8152ba0f17)
GUID будет выглядеть
1d8152ba0f17-4a2f-aed3-888b-a76e9ccf

Я понимаю, что автор подразумевает, что это все уже знают. Однако желательно это тоже указать в тексте.
1cprogr_nsk; METAL; +2 Ответить
14. Alien_RS_Forever 434 18.11.14 02:01 Сейчас в теме
(12) wingnut, вы что-то путаете, никакого "переворачивания" там нет.. посмотрите код обработки - там явно написано, каким образом формируется строка гуида для восстановления ссылки.. обработку писал давно, но эту часть только что специально проверил )
15. An-rey 26.05.15 19:20 Сейчас в теме
Не отработала у меня обработочка. Купил в надежде на успешный результат, но, его не получил.
Может поправите? Последовательность выполнения во вложенном файле.
Прикрепленные файлы:
гуид_подразд.doc
16. METAL 304 17.02.16 15:41 Сейчас в теме
(15) An-rey, у меня та же проблема, только в УТ10.3 со справочником Номенклатура
А именно, при поиске по
<Объект не найден> (68:ba460050568268dc11e370615466d1f3)
вроде бы результат есть, внизу пишет Номенклатура, то есть тип определился верно, и в поле Результат что-то есть, но там опять же битая ссылка, правда другая
<Объект не найден> (68:11e370615466d1f368dc5682ba460050)
См.скрин http://i.imgur.com/UAoDRkR.png

При этом точно известно, что нужный объект в искомой базе есть
И если его указать на третьей закладке и получить GUID и помощью этой обработки, то получается вот такое
<Объект не найден> (68:5466d1f3-7061-11e3-ba46-0050568268dc)
И вот по этой строке уже нормально находит!

(12) wingnut, похоже, Вы правы!
17. METAL 304 17.02.16 16:05 Сейчас в теме
Таким образом, перед поиском строку из 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. Полученное вставить в обработку из данной публикации

Протестировал вручную, на моём примере работает!

Надеюсь, автор в ближайшее время поправит разработку!
19. Alien_RS_Forever 434 17.02.16 19:19 Сейчас в теме
(17) METAL, ничего преобразовывать не надо. Изначально (посмотрите по тексту описания обработки выше) описан формат битой ссылки 8-4-4-4-12, т.е. как Вы написали во втором варианте, к которому преобразовывали ( <Объект не найден> (68:5466d1f3-7061-11e3-ba46-0050568268dc) ). Другой вопрос - откуда Вы взяли битую ссылку такого рода "<Объект не найден> (68:ba460050568268dc11e370615466d1f3)", которая на Ваш взгляд перевёрнутая и некорректная ?
20. Alien_RS_Forever 434 17.02.16 19:20 Сейчас в теме
(17) METAL, обработка писалась под 8.2 ещё, возможно что-то в 8.3 или её подрелизах поменялось.
18. METAL 304 17.02.16 16:41 Сейчас в теме
Роман (автор), отправил Вам в личку доработанный вариант, можете использовать при желании
21. b-dm 180 26.02.18 17:20 Сейчас в теме
Так и не получилось найти ни одну ссылку по GUID. Не рекомендую обработку к использованию.
22. METAL 304 28.02.18 10:53 Сейчас в теме
(21) Дмитрий, вот пжаааллллста, попробуйте, только прошу - отпишитесь о результатах!
Прикрепленные файлы:
ВосстановлениеСсылокПоGUID - Беляев.epf
gala2009; +1 Ответить
23. gala2009 31 25.10.18 08:04 Сейчас в теме
(22) Спасибо! воспользовалась вашей обработкой, работает. ссылку по guid нашла, создать объект (удаленное подразделение) получилось
Оставьте свое сообщение