powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / как из _IDRRef получиь ссылку на объект в терминах 1С?
9 сообщений из 9, страница 1 из 1
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #35232848
ignorant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #35232927
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе со стороны базы - или со стороны языка? Если через язык 1С - посмотри, как выглядит для интересующего тебя объекта результат ЗначениеВстрокуВнутр
Можно по значению _IDRRef (и зная тип объекта) собрать такую строку и получить объект ЗначениеИзСтрокиВнутр
...
Рейтинг: 0 / 0
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #35233015
ignorant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно на встроенном языке 1С перебирать RecordSet - результат "прямого запроса" к базе СКЛ и находить соответствующие _IDRRef ссылки на объекты.

ЗначениеВСтрокуВнутр от ссылки возвращает Строка
"{"#",3c417719-35b4-4a63-a790-fb0e2da0ae49,20:acf250505450303011da5ccf323afa04}",
что не очень соответствует ;) [_IDRRef] [binary](16), вроде
0x907350505450303011D995E8B855BEE4
...
Рейтинг: 0 / 0
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #35233047
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все же следует озвучить версию 1С. Для разных версий - разные подходы.
...
Рейтинг: 0 / 0
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #35233107
ignorant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8.1 (8.0)
...
Рейтинг: 0 / 0
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #35233188
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следует использовать связку УникальныйИдентификатор и ПолучитьССылку
В приведенном примере:
20:acf250505450303011da5ccf323afa04 - это представление объектной ссылки
20: - это идентификатор типа.
acf250505450303011da5ccf323afa04 - это собственно IdRef (ее представление в языке)
Как именно этот формат соотносится с IDRRef] [binary](16), вроде
0x907350505450303011D995E8B855BEE4, в каком порядке байты располагать - предлагаю разобраться самостоятельно на примере какой-нибудь ссылки.
Из строчного представления IdRef делается
ID= новый УникальныйИдентификатор("acf250505450303011da5ccf323afa04");

Затем получаем ссылку нужного типа:
ссылка = Справочники[ИмяСправочника].ПолучитьСсылку(Ид);
ИмяСправочника (или документа) - можно получить для IdRef след.образом:
для полей простого типа - по типу поля, как он задан в конфигурации.
для полей составного типа - у ссылки есть одно или два доп.поля( смотря насколько этот тип составной). первое указывает на категорию ссылки (если это необходимо - справочник это или документ или еще что-нибудь).
Второе - собственно идентификатор типа (это 20 в нашем примере).
Нужно использовать [ИмяСправочника], которое этому значению в конфигурации соответствует.
Узнать идентификаторы типов можно через метод ПолучитьСтруктуруХраненияДанных для 8.1 или через внешнюю обработку, которая попадалась для 8.0
...
Рейтинг: 0 / 0
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #35233341
ignorant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО.
ну если ты так добр, мож намекнешь, чем binary (16) в строку конвртнуть?
чтоб совсем уже хорошо было ;)
...
Рейтинг: 0 / 0
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #35234550
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ignorantчем binary (16) в строку конвртнуть?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create function getStringUUID (@binaryUUID binary( 16 ))
returns char( 36 )
as
begin
  declare @buffer char( 32 )
  select @buffer = replace(convert(char( 36 ),cast(@binaryUUID as uniqueidentifier)), '-', '')
  
  return right(@buffer,  8 ) + '-' +
    substring(@buffer,  21 ,  4 ) + '-' +
    substring(@buffer,  17 ,  4 ) + '-' +
    substring(@buffer,  7 ,  2 ) +
    substring(@buffer,  5 ,  2 ) + '-' +
    left(@buffer,  4 ) +
    substring(@buffer,  11 ,  2 ) +
    substring(@buffer,  9 ,  2 ) +
    substring(@buffer,  13 ,  4 )
end
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как из _IDRRef получиь ссылку на объект в терминах 1С?
    #36953347
Деня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ignorantСПАСИБО.
ну если ты так добр, мож намекнешь, чем binary (16) в строку конвртнуть?
чтоб совсем уже хорошо было ;)

а у меня полуился такой вариант:

ALTER function [dbo].[getStringUUID] (@binaryUUID binary(16))
returns char(40)
as
begin
declare @buffer varchar(40)
select @buffer = replace(convert(varchar(40),cast(@binaryUUID as uniqueidentifier)), '-', '')

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
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / как из _IDRRef получиь ссылку на объект в терминах 1С?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]