|
Как получить ссылку на справочник по данным из 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 Ссылка = Справочники.Абоненты.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД)); Только это для УИД полученного при помощи внешних источников данных. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |