Имя: Пароль:
1C
 
Уникальный Идентификатор обернуть в двоичное значение, которое хранится в SQL
, ,
0 SeiOkami
 
27.05.16
09:18
Имею УИД элемента справочника. В SQL в поле _IDRRef хранится двоичные данные, которые отображаются в формате "0x" + 32 символа. Могу ли я в 1с кодом обернуть УИД в такое же представление?
1 mehfk
 
27.05.16
09:19
Разрешаю.
2 hhhh
 
27.05.16
09:22
(0) XMLСтрока() пробуй
3 SeiOkami
 
27.05.16
09:25
(2), не, возвращается просто строковое представление УИДа
4 mksk
 
27.05.16
09:26
(0)зачем?
5 hhhh
 
27.05.16
09:26
(3) а тебе какое надо? Не строковое?
6 SeiOkami
 
27.05.16
09:31
(5), мне нужно строковое представление, но как в sql
7 hhhh
 
27.05.16
09:31
(6) ну обработай дополнительно напильником
8 ДенисЧ
 
27.05.16
09:31
(6) в скуле число. А ты хочешь строку...
9 SeiOkami
 
27.05.16
09:34
(8), в скуле двоичные данные
10 ДенисЧ
 
27.05.16
09:36
(9) А двоичные данные уже не число?
11 hhhh
 
27.05.16
09:38
(9) тип посмотри у поля _IDRRef. Неужели там написано "двоичный"? Не может быть.
12 SeiOkami
 
27.05.16
09:38
(10), это уже игры словами.

Есть ли способ реализовать (0)?
13 SeiOkami
 
27.05.16
09:39
(11), конечно. SQL хранит ссылки и типы ссылок в binary
14 SeiOkami
 
27.05.16
09:41
(13), как и булево
15 mksk
 
27.05.16
09:43
(12)а зачем?!
16 hhhh
 
27.05.16
09:43
(14) но они "отображаются в формате "0x" + 32 символа". То есть как строка. Не отвертитесь.
17 SeiOkami
 
27.05.16
09:51
(16), не путай хранение с отображением
18 SeiOkami
 
27.05.16
09:54
Нашел код в комментариях публикации:
http://catalog.mista.ru/public/73917/
19 rs_trade
 
27.05.16
09:55
(18) ну надо же. кто бы мог подумать. обычно сначала ищут, а потом пишут на форумы если не нашли.
20 Nuobu
 
27.05.16
09:57
(0) По-моему, ты видишь не двоичные данные, а представление этих данных.

http://www.spravkaweb.ru/mysql/sql/vartype#.D0.94.D0.B0.D1.82.D0.B0_.D0.B8_.D0.B2.D1.80.D0.B5.D0.BC.D1.8F

Там есть абзац про бинарные данные.
Тут еще:

https://msdn.microsoft.com/ru-ru/library/ms188362(v=sql.120).aspx

Так что юзай строку.
21 Карупян
 
27.05.16
10:09
Когда 1с говорит объект не найден, она как раз дает те самые 32 символа как в СКЛ
22 mksk
 
27.05.16
10:23
ну так нашли уже взаимно однозначное соответствия между УИД  и _IDRRef или просто холивар опять?
23 Лефмихалыч
 
27.05.16
10:41
(0) а ЗначениеВСтрокуВнутр() от ссылки не это ли пьяное значение возвращает?
25 Лефмихалыч
 
27.05.16
10:41
26 hhhh
 
27.05.16
10:42
(23) походу XMLСтрока() надо. А ТС делает Строка()
27 Serginio1
 
01.06.16
16:08
public static class РасширениеДляГуид

    {

        public  static  string  ВСтроку16(this  byte[] bytes)

        {

            char[] c = new  char[bytes.Length * 2];



            byte b;



            for (int bx = 0, cx = 0; bx < bytes.Length; ++bx, ++cx)

            {

                b = ((byte)(bytes[bx] >> 4));

                c[cx] = (char)(b > 9 ? b - 10 + 'A' : b + '0');



                b = ((byte)(bytes[bx] & 0x0F));

                c[++cx] = (char)(b > 9 ? b - 10 + 'A' : b + '0');

            }



            return  new  string(c);

        }



        public  static  string  УИд1С(this byte[] ДанныеБД)

        {

            var стр = ДанныеБД.ВСтроку16();



            var ч1 = стр.Substring(24, 8);

            var ч2 = стр.Substring(20, 4);

            var ч3 = стр.Substring(16, 4);

            var ч4 = стр.Substring(0, 4);

            var ч5 = стр.Substring(4, 12);

            return (ч1 + "-" + ч2 + "-" + ч3 + "-" + ч4 + "-" + ч5);

        }
28 Serginio1
 
01.06.16
16:09
public  static  Byte[] Строка16ВМассив(this  string str)

        {

            var res = new  byte[str.Length / 2];



            for (int i = 0; i < res.Length; i++)

                res[i] = Convert.ToByte(str.Substring(i * 2, 2), 16);



            return res;

        }

        public  static  Byte[] ПолучитьМассивПоУИд(this  string UUID)

        {

            varч1 = UUID.Substring(19, 4);

            varч2 = UUID.Substring(24, 12);

            varч3 = UUID.Substring(14, 4);

            varч4 = UUID.Substring(9, 4);

            varч5 = UUID.Substring(0, 8);

            var str = ч1 + ч2 + ч3 + ч4 + ч5;



            return  Строка16ВМассив(str);





        }
29 mksk
 
01.06.16
16:11
какие проблемы создать ссылку (или множество ссылок) средствами платформы и потом заполнить апдейтом?
быстро, качественно, гарантированно совместимо.
30 Serginio1
 
01.06.16
17:05