Имя: Пароль:
1C
 
Как в запросе получить значение Справочника по GUID ?
0 ОМЭЗ
 
30.04.26
12:15
Здравствуйте , возможно ли такое чтоб выборкой не обрабатывать строки запроса ?
1 palsergeich
 
30.04.26
12:16
УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Ссылка) с 20 платформы есть в языке запросов
2 mikecool
 
30.04.26
12:17
(0) регистр соответствий
3 mikecool
 
30.04.26
12:17
(1) ты в другую сторону предложил
4 ОМЭЗ
 
30.04.26
12:18
(1) Мне наоборот нужно
5 Lama12
 
30.04.26
12:37
(4) Ну так УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Ссылка) = &ПараметрGUID
В ПараметрGUID передай GUID. Не строку, а именно GUID. Все работает корректно.
6 YFedor
 
30.04.26
13:25
(5) Т.е. при выполнении запроса УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Ссылка) отработает столько раз, сколько элементов есть в справочнике? Этож сколько ждать ...

Тогда уж лучше перед выполнением запрома GUID преобразовать в ссылку
7 Lama12
 
30.04.26
13:36
(6)Вопрос в (0) был про возможность. Эффективность не требовалась 😎
8 RomanYS
 
30.04.26
13:37
(6) Это поле физически есть в базе, поэтому "отработает" в данном случае очень условно
9 RomanYS
 
30.04.26
13:43
+ (8) проверил на практике: время выполнения второго запроса - 0
10 paramedic
 
30.04.26
13:57
(9) Ну так с пустым УИД естественно будет "0". Вы попробуйте с реальным УИД (не обязательно существующим) запрос выполнить.
11 Lama12
 
30.04.26
14:07
(10) Боюсь, это реальный УИД. У пустой ссылки такой. И пустая ссылка обязана храниться в базе как не пустая, иначе будет "очень плохо" для СУБД.
12 paramedic
 
30.04.26
14:12
(11) Это не реальный УИД. УИД физически - число. В базе нулевого УИД по определению быть не может. Вот и отрабатывает запрос моментально, т.к. число "0" находится за пределами индекса. А пустая ссылка - не объект базы.
13 RomanYS
 
30.04.26
14:34
(10) Консоль не позволяет УИД вводить, обработку писать лень.
С чего вдруг с непустым время поменяется? По логике (6) для каждого элемента справочника некие вычисления должны проводиться, с чем сравнивать результат не важно (по времени)
14 RomanYS
 
30.04.26
14:37
(10) Вот тебе не пустой)
15 YFedor
 
30.04.26
14:40
(14) А если в Справочник2 содержится 1 млн. записей?
16 RomanYS
 
30.04.26
14:41
(15) так в нём ровно миллион записей, см. скрин (9) и результат первого запроса
17 ОМЭЗ
 
30.04.26
15:01
|ИЗ
        |    ВТ_ТабЗн КАК ВТ_ТабЗн
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
        |        ПО (ВТ_ТабЗн.part_guid = ВЫРАЗИТЬ(УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Номенклатура.Ссылка) КАК СТРОКА(200))";

Хотел так сделать , но не пойму чего не хочет уникальный идентификатор преобразовывать в строку :(
18 2S
 
30.04.26
15:01
(17) Так не рабоатет, старые грабли.
19 ОМЭЗ
 
30.04.26
15:05
(18) А новые грабли есть какие-то ?
20 RomanYS
 
30.04.26
15:14
(19) Преобразования GUID <=> Строка в запросе на сегодня не доступны
21 Eiffil123
 
30.04.26
15:57
(17) уникальныйидентификатор - это постобработка на сервере 1С, а не на sql. поэтому так не сработает. А в чем проблема сделать предобработку и заполнить ссылки на номенклатуру в ВТ_ТабЗн ?
22 ОМЭЗ
 
30.04.26
16:07
(21) ТабЗн большая , выборку не хочется делать, дольго по времени занимает обработка
23 Eiffil123
 
30.04.26
16:14
(22) ну тогда можно сделать текстовое поле в справочнике с представлением гуида. заполнять его при записи
24 RomanYS
 
30.04.26
16:18
(22) звучит не очень убедительно. Откуда таблица возникла?
Если она хранится в базе, что мешает сразу хранить гуиды/ссылки.
Если она приходит извне, то расход времени на добавление гуидов/ссылок будет копеечным на фоне общих затрат на создание ТЗ
25 ОМЭЗ
 
30.04.26
16:21
(24) Извне , запрос срабатывает очень быстро , а вот обработать 5000 строк в выборке и это только по одному заказу , дольго
26 ОМЭЗ
 
30.04.26
16:24
(23) Можно , но хочется как-то не через анус сделать , а по нормальному :)
27 paramedic
 
30.04.26
16:27
(25) 5000 строк долго? 200 тыс, миллион - да, может долго. А 5 тыс - фигня вопрос. Скорее всего у вас некорректный алгоритм решения вашей задачи.
28 RomanYS
 
30.04.26
16:31
(25) проверил 5000 строк - 8мс. Это долго!?
29 ОМЭЗ
 
30.04.26
16:34
(27) Народ балованный
30 RomanYS
 
30.04.26
16:37
(29) народ не может заметить 8 мс разницы, даже моргнуть не успеешь.
Балованный скорее здесь ты - хочешь то, чего нет, под надуманным предлогом)
31 ОМЭЗ
 
30.04.26
16:39
(30) Согласен :)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс