gifts2017

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

Опубликовал Франко Деллиани (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
77
.epf ReadGUID 7,83Kb 77 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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

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


Вот это не совсем одно и то же. В первом случае тип ГУИДСсылки будет Строка, а во втором - УникальныйИдентификатор. Чтобы во втором случае получить строку, надо написать:
ГУИДСсылки = Строка(ЗаказПокупателяСсылка.УникальныйИдентификатор());

2. TMV 25.01.14 13:23
3. Франко Деллиани (Franco) 25.01.14 15:23
(1) baton_pk,
чтите чуть дальше
...УникальныйИдентификатор() возвращает значение с типом УникальныйИдентификатор, XMLСтрока - строковое представление уникального идентификатора, то есть строчку...
XMLСтрока превращается в строку в одно действие, а УникальныйИдентификатор() - в два.
4. Франко Деллиани (Franco) 25.01.14 15:24
5. Роман Ложкин (webester) 26.01.14 04:26
Нет ну что вы, нормальная развернутая статья с вступлением, примерами, примерами из обработки, все хорошо, только статья не о чем, совершенно, это ее портит чуть чуть. Жду статью серию статей, "Все о справочниках, как открыть выборку, часть первая" и "Все о справочниках, как обойти результаты выборки, часть вторая". Вы бы хоть написали для чего он нужен, почему он выглядит именно так, привели ссылки на стандарты, указали область применения. Непонятно почему человек почитав 15минут СП бросается писать статьи, не приложив усилий хоть немного поработать над вопросом.
tanyabo; Valet; Xatori111; baton_pk; +4 Ответить
6. Александр Медведев (anig99) 26.01.14 14:03
7. Александр Куклин (alexandr851c) 26.01.14 18:06
для чего эта статья?
Прикрепленные файлы:
8. Игорь Патласов (semp89) 04.07.14 15:09
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа