Имя: Пароль:
1C
1С v8
Получении данных по базе 8.2 с помощью SQL запроса
,
0 AndrejK
 
02.04.12
13:06
Появилась необходимость в получении данных по базе 8.2 с помощью SQL запроса по документу. Собственно вопрос: как преобразовать Документ.Ссылка для использования в SQL запросе?????
1 butterbean
 
02.04.12
13:08
нафига тебе Ссылка??
2 Kashemir
 
02.04.12
13:10
Можешь глянуть как здесь идет преобразование. http://infostart.ru/public/76537/ Смотри генерацию запроса с заданным отбором по ссылочным данным
3 Ненавижу 1С
 
гуру
02.04.12
13:10
(0) зачем появилась такая необходимость?
4 AndrejK
 
02.04.12
13:11
Потому что из инфы есть только ссылка?
5 Ненавижу 1С
 
гуру
02.04.12
13:12
(4) а ссылка откуда появилась?
6 Maxus43
 
02.04.12
13:13
ссылка уникальна только в рамках документа, другой вид документа может быть с такой же ссылкой
7 Kashemir
 
02.04.12
13:13
(6) Разве ? оО
8 Ненавижу 1С
 
гуру
02.04.12
13:14
(7) можно устроить такое штатными средствами ))
9 Maxus43
 
02.04.12
13:14
(7) в общем случае - нет, но программно можно так сделать)
10 Kashemir
 
02.04.12
13:14
(8) Это надо постараться :)
11 AndrejK
 
02.04.12
13:14
(6) ТОже сомневаюсь
12 Maxus43
 
02.04.12
13:15
(10) не надо стараться, 6 строчек кода и 2 дока с одной ссылкой готовы
13 Maxus43
 
02.04.12
13:15
это не противоречит архитектуре 1с
14 Kashemir
 
02.04.12
13:15
Ну если очень хочется, из ссылки можно вытащить и вид - правда это неэстетично будет.
15 Maxus43
 
02.04.12
13:15
(14) нет вида у ссылки
16 Kashemir
 
02.04.12
13:16
(15) Заверни во внутренее представление - распарсь и будет
17 Fragster
 
гуру
02.04.12
13:16
ну на самом деле у ссылки - есть (через метаданные). а вот у уникального идентификатора - у него нету
18 Maxus43
 
02.04.12
13:17
(16)(17) ща проверим...
19 Kashemir
 
02.04.12
13:17
(17) Так автор сказал что у него есть Документ.Ссылка - так что в этом случае вполне тип доставаем
20 Fragster
 
гуру
02.04.12
13:18
(19) это да, просто тут некоторые путают УИД с о ссылкой
21 AndrejK
 
02.04.12
13:26
(19) Извиняюсь, есть только УИД
22 Fragster
 
гуру
02.04.12
13:27
(21) тогда не судьба
23 Kashemir
 
02.04.12
13:27
(21) Если УИД, то получается при желании недоброжелатель может тебе подсунуть бяку :) Но вероятность такое получить без шаманства стремится к нулю.
24 Fragster
 
гуру
02.04.12
13:28
(22)+ в общем случае, конечно. если мы эмпирически типЗНЧ знаем - то тогда можно
25 Maxus43
 
02.04.12
13:30
Гуид = Новый УникальныйИдентификатор("051a7eea-90d9-47ef-a7d2-3a258e72d945");
   Сообщить(Гуид);
   Док1 = Документы.АвансовыйОтчет.СоздатьДокумент();
   Док1.УстановитьСсылкуНового(Документы.АвансовыйОтчет.ПолучитьСсылку(Гуид));
   Док1.Записать();
   Док2 = Документы.КадровоеПеремещениеОрганизаций.СоздатьДокумент();
   Док2.УстановитьСсылкуНового(Документы.КадровоеПеремещениеОрганизаций.ПолучитьСсылку(Гуид));
   Док2.Записать();
   Сообщить(Док1.Ссылка.УникальныйИдентификатор());
   Сообщить(Док2.Ссылка.УникальныйИдентификатор());

вот доки с одинаковым УИДом
26 Maxus43
 
02.04.12
13:32
Тип значения будет разный у них есно, но УИД один. в таблице скуля по УИД хранится же? тип определяется таблицей, а не самой ссылкой
27 Kashemir
 
02.04.12
13:33
(25) Да это понятно. Кроме УстановитьСсылкуНового никаких других вариантов явно задать ИД у платформы нет. А с учетом (6) техническая реализация очевидна и так.
28 Kashemir
 
02.04.12
13:34
(26) Там где составные ссылочные типы поля - у скуля хранится и тип.
29 Maxus43
 
02.04.12
13:35
(28) да, но в разных полях
30 Kashemir
 
02.04.12
13:36
(29) Конечно в разных
31 Maxus43
 
02.04.12
13:38
а нафига автору прямой запрос к скулю то я не понял до конца.
Есть УИД но не знаем тип? если знаем тип - обычным запросом из 1с можно
32 Kashemir
 
02.04.12
13:39
(32) Так может он не из 1С хочет обращаться. Мало ли какая частично сопряженная система может быть.
33 Maxus43
 
02.04.12
13:40
(32) обращение к базам 1с напрямую - нарушение лиц соглашения)
34 Kashemir
 
02.04.12
13:40
(33) Ты хочешь чтобы автор прям ща признался ? :)
35 Maxus43
 
02.04.12
13:43
да, Нуралиев ждёт
36 AndrejK
 
02.04.12
13:44
ну так есть вариант решения?
37 Kashemir
 
02.04.12
13:45
(36) Оо - (2) мало ?
38 Maxus43
 
02.04.12
13:45
(36) то на (31) скажеш то? откуда УИД взялся и знаеш ли тип
39 AndrejK
 
02.04.12
13:46
видел только в (2)
40 hhhh
 
02.04.12
13:46
(35) а чего он ждет? Там же всё есть в нике: Андрей, страна Россия, пол мужской. Надо высылать команду.
41 Maxus43
 
02.04.12
13:46
(40) признания не было)
42 Kashemir
 
02.04.12
13:48
(40) ЧОрные вертолеты уже вылетели ! :)
43 ptiz
 
02.04.12
14:52
Функция ПолучитьДвоичныйКодСсылки(Ссылка)

   УИ = СокрЛП(Ссылка.УникальныйИдентификатор());
   
   СписокГрупп = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(УИ, "-");
   
   Код = "0x" + СписокГрупп[3] + СписокГрупп[4] + СписокГрупп[2] + СписокГрупп[1] + СписокГрупп[0];
   
   //Сообщить("УИ=" + УИ + " Код=" + Код);
   
   Возврат Код;

КонецФункции // ПолучитьДвоичныйКодСсылки()
44 МихаилМ
 
02.04.12
14:54
(43)
тогда уж шестнадцатиричный, а не двоичный