Сообщения

Сообщения за май, 2024

Получение Уникального Идентификатора 1С из Ссылки SQL-запросом (_IDRRef to 1C UUID)

Ссылку 1С хранит в базе MS SQL в формате binary(16). Встроенное в MS SQL преобразование binary(16) в GUID (uniqueidentifier) идет по алгоритму, отличному от алгоритма 1С. Для того, чтобы из binary(16) получить ГУИД 1С, в запросе нужно произвести дополнительное преобразование.   CAST(CAST(REVERSE(SUBSTRING( [_IDRRef], 9, 8)) AS binary(8))+ SUBSTRING([_IDRRef], 1, 8) as uniqueidentifier) Справочник _Reference47 взят для примера. Предварительно в нем создан элемент с принудительным Уникальным Идентификатором: ГУИД = Новый УникальныйИдентификатор("a0e55759-35f1-400c-8169-e5edbc2486ba"); ТестЭлемент = Справочники.Тест.СоздатьЭлемент(); Ссылка = Справочники.Тест.ПолучитьСсылку(ГУИД); ТестЭлемент.УстановитьСсылкуНового(Ссылка); ТестЭлемент.Наименование = "Принудительный ГУИД"; ТестЭлемент.Записать(); SQL вернул следующее: запрос SELECT [_IDRRef]       ,_Description       ,CAST([_IDRRef] as uniqueidentifier) GUID_SQL       ,CAST(CAST(REVERSE(SUBSTRING( [_IDRRef], 9, 8)) AS