Восстановление ссылок по 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С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

60000 руб.

06.10.2023    7256    39    21    

46

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

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

14400 руб.

29.04.2020    37847    115    152    

82

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

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

3600 руб.

10.02.2017    114673    688    176    

729

Закрытие периода Корректировка данных Программист Пользователь 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    52311    180    29    

132

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

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

6000 руб.

27.01.2015    58343    31    14    

40

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

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

2000 руб.

20.09.2017    41751    174    24    

27

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

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

3600 руб.

28.01.2025    654    0    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 303 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 303 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 303 17.02.16 16:41 Сейчас в теме
Роман (автор), отправил Вам в личку доработанный вариант, можете использовать при желании
21. b-dm 180 26.02.18 17:20 Сейчас в теме
Так и не получилось найти ни одну ссылку по GUID. Не рекомендую обработку к использованию.
22. METAL 303 28.02.18 10:53 Сейчас в теме
(21) Дмитрий, вот пжаааллллста, попробуйте, только прошу - отпишитесь о результатах!
Прикрепленные файлы:
ВосстановлениеСсылокПоGUID - Беляев.epf
gala2009; +1 Ответить
23. gala2009 31 25.10.18 08:04 Сейчас в теме
(22) Спасибо! воспользовалась вашей обработкой, работает. ссылку по guid нашла, создать объект (удаленное подразделение) получилось
Оставьте свое сообщение