Как узнать ГУИД?

Опубликовал Franco в раздел Программирование - Практика программирования

ГУИД в 1С - 36-изначный набор букв и цифр, является уникальным идентификатором.
Нужен, например, при интеграции с другими приложениями.
ГУИД можно рассчитать из навигационной ссылки, например:
e1cib/data/Документ.ЗаказПокупателя?ref=b59500055d80a2b911de397d51012ccc
Берём правые 32 символа и переставляем их местами по формуле:
 
(между группами символов ставим дефис)
последние 8 символов - 4 символа, начиная с 21-го - 4 символа, начиная с 17-го - 4 первых символа - 12 символов, начиная с 5-го
 
или номерами символов
 
25 26 27 28 29 30 31 32 - 21 22 23 24 - 17 18 19 20 - 1 2 3 4 - 5 6 7 8 9 10 11 12 13 14 15 16
 
получаем:
51012ccc-397d-11de-b595-00055d80a2b9
 
символы дефиса стоят на позициях 9, 14, 19, 24.
 
Другой вариант - программно получить через конструкцию XMLСтрока:
 
ГУИДСсылки = XMLСтрока(Ссылка);
 
или через УникальныйИдентификатор:
 
ГУИДСсылки = ЗаказПокупателяСсылка.УникальныйИдентификатор();
 
Следует помнить, что глобальный метод УникальныйИдентификатор() возвращает значение с типом УникальныйИдентификатор, XMLСтрока - строковое представление уникального идентификатора, то есть строчку. Поэтому, если ГУИД нужен, чтобы передавать его символьно (например, записывать в файл обмена с интегрированной программой) - Welcome, XMLСтрока!
 
А вот для обратного преобразования нужно обязательно указывать тип данных:
 
ЗаказПокупателяСсылка = XMLЗначение(Тип("ДокументСсылка.ЗаказПокупателя"), ГУИДСсылки);
 
или
 
ЗаказПокупателяСсылка = Документы.ЗаказПокупателя.ПолучитьСсылку(Новый УникальныйИдентификатор(ГУИДСсылки));
 
(и здесь, как видно, использование XML выглядет привлекательнее...).
 
В прилагаемой обработке пример получения ГУИДа по выбранному значению и получение значения по указанному ГУИДу.
Конечно же, для того, чтобы найти нужный тип, перебираются метаданные и подставляются в 1-ый параметр. А проверка 'валидности' ссылки осуществляется по заполнению поля 'ВерсияДанных'.
 
Ещё важно по теме ГУИДов:

Файлы

Наименование Файл Дата Размер Кол. Скачив.
ПрочитатьГУИД.epf
.epf 7,83Kb
24.01.14
51
.epf 24.01.14 7,83Kb 51 Скачать

См. также

Лучшие комментарии

5. webester 26.01.2014 04:26
Нет ну что вы, нормальная развернутая статья с вступлением, примерами, примерами из обработки, все хорошо, только статья не о чем, совершенно, это ее портит чуть чуть. Жду статью серию статей, "Все о справочниках, как открыть выборку, часть первая" и "Все о справочниках, как обойти результаты выборки, часть вторая". Вы бы хоть написали для чего он нужен, почему он выглядит именно так, привели ссылки на стандарты, указали область применения. Непонятно почему человек почитав 15минут СП бросается писать статьи, не приложив усилий хоть немного поработать над вопросом.
# Ответить
2. TMV 25.01.2014 13:23
(0)Статья? Серьезно?!
Ответили: (4)
+ 1 [ webester; ]
# Ответить

Комментарии

1. baton_pk 25.01.2014 11:57
Другой вариант - программно получить через конструкцию XMLСтрока:

ГУИДСсылки = XMLСтрока(Ссылка);

или через УникальныйИдентификатор:

ГУИДСсылки = ЗаказПокупателяСсылка.УникальныйИдентификатор();


Вот это не совсем одно и то же. В первом случае тип ГУИДСсылки будет Строка, а во втором - УникальныйИдентификатор. Чтобы во втором случае получить строку, надо написать:
ГУИДСсылки = Строка(ЗаказПокупателяСсылка.УникальныйИдентификатор());
Ответили: (3)
# Ответить
2. TMV 25.01.2014 13:23
(0)Статья? Серьезно?!
Ответили: (4)
+ 1 [ webester; ]
# Ответить
3. Franco 25.01.2014 15:23
(1) baton_pk,
чтите чуть дальше
...УникальныйИдентификатор() возвращает значение с типом УникальныйИдентификатор, XMLСтрока - строковое представление уникального идентификатора, то есть строчку...
XMLСтрока превращается в строку в одно действие, а УникальныйИдентификатор() - в два.
# Ответить
4. Franco 25.01.2014 15:24
(2) TMV, слишком короткая?
# Ответить
5. webester 26.01.2014 04:26
Нет ну что вы, нормальная развернутая статья с вступлением, примерами, примерами из обработки, все хорошо, только статья не о чем, совершенно, это ее портит чуть чуть. Жду статью серию статей, "Все о справочниках, как открыть выборку, часть первая" и "Все о справочниках, как обойти результаты выборки, часть вторая". Вы бы хоть написали для чего он нужен, почему он выглядит именно так, привели ссылки на стандарты, указали область применения. Непонятно почему человек почитав 15минут СП бросается писать статьи, не приложив усилий хоть немного поработать над вопросом.
# Ответить
6. anig99 26.01.2014 14:03
ни о чем
# Ответить
7. alexandr851c 26.01.2014 18:06
для чего эта статья?

Прикрепленные файлы:

i.jpg
# Ответить
8. semp89 04.07.2014 15:09
Для обычного приложения: http://infostart.ru/public/290621/
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл