|
Как получить ссылку на справочник по данным из SQL Binari(16) |
☑ |
0
sereban
14.08.12
✎
14:30
|
Имеется БД MS SQL Server. База не 1с, но в ней хранятся ссылки на элементы справочника 1с аналогично тому, как хранит ссылки 1с в SQL. Т.е. тип Binari(16) в Managerment studio при выполнении запроса выглядит вот так: 0x44A64DA86AA5DA42AF40D61A13CFAEED. Подключаю базу как внешний источник данных и выбираю то же самое запросом уже из 1С в результате получаю данные, которые при преобразовании в строку выглядят так:"60 1E FD 33 7E 89 B1 42 83 56 E2 07 3E 54 33 80". Каким образом обработать результат запроса, чтобы получить ссылку 1с?
|
|
1
hhhh
14.08.12
✎
14:32
|
ПолучитьСсылку(Новый УникальныйИдентификатор(ВашаэтаСтрока));
|
|
2
sereban
14.08.12
✎
14:39
|
(1) Новый УникальныйИдентификатор(Строка(мРезультатЗапроса.Выгрузить()[0].УИД1С)) {(1)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
|
|
3
sereban
14.08.12
✎
14:40
|
(2) Строка(мРезультатЗапроса.Выгрузить()[0].УИД1С) - это действительно строка вот такого вида "60 1E FD 33 7E 89 B1 42 83 56 E2 07 3E 54 33 80"
|
|
4
H A D G E H O G s
14.08.12
✎
14:49
|
cast (cast([_IDRRef] as uniqueidentifier) as nvarchar(36))
|
|
5
sereban
14.08.12
✎
15:27
|
(4) Немного не то или я не догоняю. Пример:
В SQL изначально в поле Binari(16) содержится:
0х601EFD337E89B1428356E2073E543380
cast (cast([_IDRRef] as uniqueidentifier) as nvarchar(36)) возвращает
33FD1E60-897E-42B1-8356-E2073E543380
А должно быть:
3e543380-e207-8356-601e-fd337e89b142
тогда и ссылка находится
Но тут можно написать функцию, которая будет символы переставлять местами, тогда должно взлететь.
|
|
6
H A D G E H O G s
14.08.12
✎
15:29
|
(5) Да, это так
|
|
7
H A D G E H O G s
14.08.12
✎
15:29
|
Поищи, есть готовый код перестановки
|
|
8
sereban
14.08.12
✎
15:41
|
(5) Спасибо. Уже сам набросал:
Стр = СтрЗаменить(Строка(СтрокаРезультата.УИД1С)," ","");
Сообщить(Стр);
//601EFD337E89B1428356E2073E543380
Бл1 = Прав(Стр,8);
Бл2 = Сред(Стр,21,4);
Бл3 = Сред(Стр,17,4);
Бл4 = Лев(Стр,4);
Бл5 = Сред(Стр,5,12);
УИД = Бл1 + "-" + Бл2 + "-" + Бл3 + "-" + Бл4 + "-" + Бл5;
Сообщить(УИД);
//3e543380-e207-8356-601e-fd337e89b142
Ссылка = Справочники.Абоненты.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД));
Только это для УИД полученного при помощи внешних источников данных.
|
|