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

Конвертация функциями 1С

Здесь может потребоваться много разных функций, каждая из которых отвечает за свой тип идентификатора:

UUID (он же _IDRRef в SQL)

На этапе дополнительной обработки источника есть возможность использовать предопределенную функцию “Уникальный идентификатор”, которая возвращает нам GUID по ссылке. Но иногда нужна именно ссылка, как она есть в базе данных, т.е. UUID. В MS SQL Он называется _IDRRef. Отличаются они не сильно, просто переставляются сегменты идентификатора местами. Вот так :

Также UUID можно просто рассчитать следующей формулой на языке 1С :

UUID=Прав(ПолучитьНавигационнуюСсылку(Запись.Ссылка),СтрДлина(ПолучитьНавигационнуюСсылку (Запись.Ссылка))-СтрНайти(ПолучитьНавигационнуюСсылку (Запись.Ссылка),"="));

Просто поместите правую часть формулы в поле “Обработчик”. Вот так:

Также начиная с версии 3.1.1.5 для расчета uuid вы можете просто воспользоваться предопределенной функцией Ссылка SQL (_IDRRef)

Uniqueidentifier в SQL

начиная с версии 3.1.1.5 доступна функция для расчета аналога поля типа Uniqueidentifier в SQL. Как если бы вы написали

Вы можете просто воспользоваться предопределенной функцией Уникальный идентификатор SQL (ВЕРХНИЙ регистр) или Уникальный идентификатор SQL (нижний регистр)

Навигационная ссылка 1С

Функция Навигационная ссылка доступна начиная с версии 3.1.1.5. Вернет вам навигационную ссылку объекта 1С. (например:e1cib/data/Справочник.Номенклатура?ref=b7b5bcaec56cc14411e6e9113ae74b22)

Способ конвертировать UUD из Базы SQL 1С в GUID (как его отдает 1С-функция - Уникальный идентификатор())

  • Открываете SQL Managment Studio

  • Подключаетесь к вашей базе 1С

  • И выполняете следующий код:

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE function [dbo].[getStringUUID] (@binaryUUID uniqueidentifier) returns varchar(36) as begin declare @buffer varchar(36) select @buffer = replace(convert(varchar(36),@binaryUUID), '-', '') return right(@buffer, 8) + '-' + substring(@buffer, 21, 4) + '-' + substring(@buffer, 17, 4) + '-' + substring(@buffer, 7, 2) + substring(@buffer, 5, 2) + '-' + substring(@buffer, 3, 2) + substring(@buffer, 1, 2) + substring(@buffer, 11, 2) + substring(@buffer, 9, 2) + substring(@buffer, 15, 2) + substring(@buffer, 13, 2) end GO

Данный код, создаст функцию SQL: [dbo].[getStringUUID](), которую можно использовать так:

SELECT dbo.getStringUUID(_RecorderRRef) as _RecorderRRef_GUID_1C FROM [_1C_ERP].dbo.[_AccumRg98983] with(nolock)

В результате получим такой результат: