Перейти к содержимому

Guid что это такое в 1с

  • автор:

Получение уникального идентификатора объекта из ссылки в запросе

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Планируется в версии 8.3.22

По многочисленным просьбам в версии 8.3.22 в язык запросов и в язык выражений СКД добавится функция УникальныйИдентификатор(Ссылка). Параметр Ссылка — выражение, результатом которого является ссылка (кроме ссылок на таблицы внешних источников данных). Функция возвращает уникальный идентификатор переданной ссылки или NULL, если передано значение NULL.

Это нововведение, в частности, упростит задачи интеграции систем на платформе 1С:Предприятие с внешними системами.

Рассмотрим пример. У нас есть интеграция с внешней системой на уровне данных – таблица внешней системы ссылается на справочник Товары в нашей инфобазе.

Структура таблицы внешней системы:

Идентификатор Ключ (число)
Наименование Название товара на английском языке (строка)
УникальныйИдентификатор Ссылка на элемент справочника Товары (уникальный идентификатор)

Нам нужно на стороне 1С вывести содержимое справочника Товары и для каждого товара показать его название на английском языке.

Предположим, мы получили содержимое внешней таблицы в виде таблицы значений (через веб-сервис или внешний источник данных или ещё каким-то образом).

Сейчас связать записи внешней таблицы (лежащие в таблице значений) с элементами справочника Товары можно так:

  1. Добавить в таблицу значений колонку, которую надо заполнить ссылкой на элементы справочника Товары, обойдя все записи таблицы значений в цикле.
  2. Полученную таблицу значений с помощью запроса объединить со справочником Товары.

В версии 8.3.22 это можно будет сделать гораздо проще.

Проиллюстрируем это кодом. Содержимое внешней таблицы помещено в таблицу значений ТЗ_ТоварыВнешняя.

Как получить UUID, ГУИД, GUID объекта в 1С?

Для программного получения уникального идентификатора объекта, нужна всего лишь ссылка на объект.

GUID = СсылкаНаОбъект.УникальныйИдентификатор();
Справочники.ПодразделенияОрганизаций.НайтиПоКоду("123").УникальныйИдентификатор();

Система вернет 36 символьный строковый код идентификатора.

Найти по GUID

В данном примере получаем ссылку на объект по строковому значению GUID.

СсылкаНаОбъект = Справочники.ПодразделенияОрганизаций.ПолучитьСсылку(Новый УникальныйИдентификатор(GUID));

Задать свой GUID для объекта

Бывают случаи когда например перепутаны элементы справочниках в разных базах, которые необходимо синхронизировать, в данном случае одним из решений является получить нужный идентификаторы объект в базе источнике и присвоить его соответствующему элементу в базе приемнике.

СсылкаНовыйGUID = Справочники.ПодразделенияОрганизаций.ПолучитьСсылку(Новый УникальныйИдентификатор(НовыйGUID)); ОбъектДляИзменения.УстановитьСсылкуНового(СсылкаНовыйGUID);

В данном примере получаем ссылку по уникальному идентификатору и присваиваем ее нужному объекту.

Как заменить уникальный идентификатор для подразделения

В моем случае была необходимость для созданного подразделения в 1С Бухгалтерии установить уникальный идентификатор в соответствии с идентификатором подразделения в 1С ЗУП.

Пример обработки использования можно скачать.

В обработке можно получить GUID по ссылке, найти подразделение по GUID и заменить GUID для объекта.

Guid что это такое в 1с

Собственно 8-ка для идентификации ссылок использует 36 символов в формате: aed6dbea-5fb2-11dc-a529-aadb14561398

Вопрос есть какие то ограничения, или в качестве GUID можно использовать например не 36 символов а 17? И можно ли использовать спецсимовлы, типа _
16-ричную систему счисления знаешь? Там нет цифр типа _<,@

Ну это если 1С гонят ее туда сюда. (из одной системы в другую). А если использовать идентификатор как строка, то как бы все равно _ или < или А

(2) Тут дело даже не в 1С.
http://ru.wikipedia.org/wiki/GUID

Ну т.е. фактически GUID ссылки это просто уникальный номер в 16-ной системе, который может быть любой, главное чтобы «-» стояли на своих метсах

(5) Ну так нигде это не описано. Интуитивно я конечно догадываюсь, но решил все таки спросить, чтобы граблей избежать

GUID — ссылка — это тупо 16 байт.
Формируется по особому алгоритму, гарантирующему уникальность вновь созданных
ПРЕДСТАВЛЯЕТСЯ обычно в виде:
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,
где
X — представлем в шестнадцетиричном видею

GUID 1С-а представленный в 1С, например
Сообщить(Строка(Ссылка.УникальныйИдентификатор()));
отличается от фактически хранимого в базе на некоторые перемешанные значения
Например, в 1С он выглядит как
6F9619FF-8B86-D011-B42D-00CF4FC964FF
В базе (фактически) он имеет значение:
6F9619FF-D011-8B86-B42D-00CF4FC964FF
(Это тупо пример, там алгоритм перестановки другой, лень споминать)

GUID 1С формирует не по правилам Microsoft, а инкрементно.
В начале сеанса формируется стартовый GUID, r примеру
6F9619FF-8B86-D011-B42D-00CF4FC964F0

У каждого последующего, созданного в этом сеансе ссылочного объекта GUID будет на 1 больше, к примеру:
6F9619FF-8B86-D011-B42D-00CF4FC964F1
6F9619FF-8B86-D011-B42D-00CF4FC964F2
6F9619FF-8B86-D011-B42D-00CF4FC964F3

Какой длинный GUID (Уникальный идентификатор) в 1C8 ?

Длинна идентификатора равна 36 символов и как правило представляет из себя строку вида: «XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX», где X — произвольное число в шестнадцатиричной системе счисления.

Получить Уникальный идентификатор строки можно следующим образом:

СтрокаGUID = "a7631fbb-f94f-4c17-1e13-0e96a3a77113"; GUID = Новый УникальныйИдентификатор(СтрокаGUID); 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *