|
есть вопрос по поводу параметра в запросе по УникальномуИдентификатору | ☑ | ||
---|---|---|---|---|
0
байт
28.10.11
✎
13:01
|
Здравствуйте, коллеги, есть следующий вопрос по поводу установки в запрос поиска по УникальномуИдентификатору, кто-нибудь делал такое что-то не получается?
|
|||
1
Fragster
гуру
28.10.11
✎
13:01
|
рекомендую автору прочитать то, что он написал.
|
|||
2
Лефмихалыч
28.10.11
✎
13:02
|
ты хочешь ссылку найти по гуиду в запросе?
|
|||
3
el-gamberro
28.10.11
✎
13:03
|
Как получить ГУИД в запросе?
|
|||
4
байт
28.10.11
✎
13:04
|
(2) в базе у клиента болтается элемент <Объект не найден...> хочу исключить его в отчете, установив параметр в запросе.
|
|||
5
Fragster
гуру
28.10.11
✎
13:04
|
(4) это неправильный подход
|
|||
6
Diabolicum 1C
28.10.11
✎
13:05
|
(4) Какой-то не совсем корректный подход. Может нужно разобраться что это за объект и почему он не найден?
|
|||
7
Fragster
гуру
28.10.11
✎
13:05
|
а вообще - условие в запросе
Поле.Ссылка Есть не NULL |
|||
8
el-gamberro
28.10.11
✎
13:05
|
(7) Не сработает
|
|||
9
Sammo
28.10.11
✎
13:06
|
(4) не правильный подход :)
А так - это объект, по которому ссылка есть, а самого объекта нет. Как это обработать в запросе - в поиск |
|||
10
Fragster
гуру
28.10.11
✎
13:06
|
(8) та ладно!
|
|||
11
Diabolicum 1C
28.10.11
✎
13:06
|
Единственное что можно сделать - это получить по ГУИДу ссылку, а уже ее подставлять в запрос.
|
|||
12
Diabolicum 1C
28.10.11
✎
13:07
|
(10) не сработает. Ссылкf не будет NULL
|
|||
13
el-gamberro
28.10.11
✎
13:07
|
(10) А. ты там точку и ссылку указал. Ну тогда да. :)
|
|||
14
байт
28.10.11
✎
13:07
|
(6) база древняя пережило много поколений программистов и поэтому разбираться времени нет нужно просто не выводить его
|
|||
15
el-gamberro
28.10.11
✎
13:07
|
А может и нет :)
|
|||
16
Serginio1
28.10.11
✎
13:09
|
||||
17
Diabolicum 1C
28.10.11
✎
13:10
|
(15) Запись с ссылкой на удаленный объект есть в базе, соответственно, будет выбрана и NULL никогда не будет. Иначе не возник бы сам вопрос.
(0) получи по ГУИДу ссылку, а уже ее подставлять в запрос в качестве параметра. Тип объекта надеюсь тебе известен? (16) А точно 8.2? |
|||
18
Milok
28.10.11
✎
13:10
|
Поле.Ссылка <> Неопределено
|
|||
19
Fragster
гуру
28.10.11
✎
13:10
|
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("УИД", Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор)); Запрос.Текст = "ВЫБРАТЬ | ВЫРАЗИТЬ(&УИД КАК Справочник.Контрагенты) КАК Поле1"; Сообщить(Запрос.Выполнить().Пустой()); Запрос.Текст = "ВЫБРАТЬ | ВЫРАЗИТЬ(&УИД КАК Справочник.Контрагенты) КАК Поле1 |ГДЕ | ВЫРАЗИТЬ(&УИД КАК Справочник.Контрагенты).Ссылка ЕСТЬ НЕ NULL "; Сообщить(Запрос.Выполнить().Пустой()); |
|||
20
Serginio1
28.10.11
✎
13:13
|
(17) На тот момент был 8.2.12.96
Но на 14 тоже вроде тестили, та ошибка |
|||
21
Diabolicum 1C
28.10.11
✎
13:15
|
(20) Там, скорее всего, действительно что-то связанное с самим типом УникальныйИдентификатор. По сути - что есть УИД у платформы? binary?
|
|||
22
байт
28.10.11
✎
13:16
|
(17) Платформа 8.1.14.15.
я делал так: СтрокаGUID = "11dfdcc9-a917-fe31-fde7-4902ad446cf0"; ГУИД = Новый УникальныйИдентификатор(СтрокаGUID); Запрос ..... Запрос.УстановитьПараметр("Ссылка", Справочники.Контрагенты.ПолучитьСсылку(УникальныйИдентификатор)); но вместо этого он подставляет другой гуид, может есть возможность его найти? |
|||
23
Serginio1
28.10.11
✎
13:17
|
(4) Проверяй на поиск значения реквизита в таблице хранения через левое соединение с Есть Null, или на вхождение в подзапрос
|
|||
24
Diabolicum 1C
28.10.11
✎
13:19
|
(22) Кстати (23), верно замечено.
|
|||
25
Diabolicum 1C
28.10.11
✎
13:20
|
(22) И что значит "вместо этого он подставляет другой гуид". Вместо какого? И какой это - другой?
|
|||
26
Serginio1
28.10.11
✎
13:21
|
(21) bynary(16) v8: _SimpleKey и его установка
|
|||
27
Serginio1
28.10.11
✎
13:22
|
Да и гуид в 1С по другому формируется Гений1С гдето писал
Функция ПолучитьGUIDПоУникальномуИдентификатору(UUID1) UUID=ВРЕГ(UUID1); ч1 = Сред(UUID,20,4); ч2 = Сред(UUID,25,12); ч3 = Сред(UUID,15,4); ч4 = Сред(UUID,10,4); ч5 = Сред(UUID,1,8); Возврат "0x" + ч1 + ч2 + ч3 + ч4 + ч5; КонецФункции |
|||
28
Serginio1
28.10.11
✎
13:24
|
||||
29
Diabolicum 1C
28.10.11
✎
13:25
|
(27) Неверно. В цитате описано преобразование GUID 1С в UID SQL Server. Вот как раз это и есть подводный камень для метода (21). Где-то в сети попадалось обширное обсуждение этого вопроса.
|
|||
30
Diabolicum 1C
28.10.11
✎
13:27
|
Дело в том, что 1С некорректно работает в том случае, если в поля binary(16) записывается значение полученное функцией NewID(). Там огромный пост этому посвещен был. В итоге сошлись на том, что байты UID SQL Server нужно переставлять в ту последовательность, которая принята 1С.
|
|||
31
Diabolicum 1C
28.10.11
✎
13:28
|
(27) Собственно, что-то опять нас куда-то не туда понесло:)
|
|||
32
байт
28.10.11
✎
13:32
|
(25) например вместо "ad446cf0-4902-fde7-11df-dcc9a917fe31" я получаю в результате "11dfdcc9-a917-fe31-fde7-4902ad446cf0".
|
|||
33
Sammo
28.10.11
✎
13:32
|
Кстати, еще как вариант внутреннее соединение с таблицей занчения.
Например, реквизит тип справочник номенклатура, тогда соединение со справочником номенклатура по ссылке |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |