Имя: Пароль:
1C
1С v8
Перечисление в запросах
0 25-11
 
02.10.16
17:20
Никто не интересовался, как 1С работает с перечислениями при их использовании в запросе?
Как с "обычной" таблицей, т.е. использование в запросе через точку означает вложенный запрос для каждой записи?
1 mehfk
 
02.10.16
17:27
2 25-11
 
02.10.16
17:29
(1) Если ты не понимаешь о чем речь, то лучше молчать, чем говорить...
3 GROOVY
 
02.10.16
17:35
И куда ты через точку в перечислении полезешь?
4 и тут и там
 
02.10.16
17:41
(0) перечисление это не просто таблица. этот таблица с исключительно строковыми типами данных для элементов. какие вложенные запросы?
5 25-11
 
02.10.16
17:42
Я имею ввиду, понятное дело, как в 1C-ное "через точку" транслируется в  SQL-ный запрос. Другими словами, если в запросе выводится что типа Объект.ПолеПеречисление,
то имеет ли смысл для повышения эффективности дополнительное соединение
Объект.ПолеПеречисления = Пернечисление.Ссылка
6 25-11
 
02.10.16
17:45
Просто я довольно часто встречал, что так не делается. Возможно 1С-овский транслятор в SQL отличает Перечисление от Справочника?
7 25-11
 
02.10.16
17:46
Потому как для справочников культурные люди не ленятся присоединить в запрос лишнюю таблицу. А вот для Перечислений - не всегда...
8 Dotoshin
 
02.10.16
17:55
(6) Ну посмотри в профайлере, в какой запрос перечисление транслируется, потом на форуме расскажешь, чтобы все  
знали...
9 25-11
 
02.10.16
18:13
(8) Ну вот я и спрашиваю, возможно, кто-то это исследование уже выполнил? Я сам не слищком уверенно владею такими инструментами, эксперимент потребует довольно много времени.
10 25-11
 
02.10.16
18:14
Хотя если любопытство окончательно одолеет, то разберусь и о результатах расскажу.
11 Dotoshin
 
02.10.16
18:15
(9) Ну вот тут http://www.develplatform.com/2013/02/sql.html
кто то выполнил некоторые исследования.
12 25-11
 
02.10.16
18:27
(11) Ага, значит всё-таки механизм хранения перечисления отличен от справочников... По-видимому именно поэтому эффективность от неприсоединения не пострадает.
13 mistеr
 
02.10.16
18:28
(0) Если ты про конструкцию вида

ГДЕ Таблица.Поле = ЗНАЧЕНИЕ(Перечисление.ИмяПеречисления.ЗначениеПеречисления)

то никакого обращения к таблице перечисления не происходит. Если про что-то другое, то приводи текст запроса.
14 25-11
 
02.10.16
18:41
(13) И про это тоже, спасибо. А в еще более простом случае?

ВЫБРАТЬ
    СписаниеСРасчетногоСчета.Ссылка,
    СписаниеСРасчетногоСчета.ВидОперации
ИЗ
    Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета

В таком запросе имеет смысл присоединять таблицу

ВидыОперацийСписаниеДенежныхСредств
15 25-11
 
02.10.16
18:44
Последнее предложение - это вопрос, а не утверждение. Вопросительный знак случайно не допечатал.
16 Mauser
 
02.10.16
18:47
(15) Зачем
17 25-11
 
02.10.16
18:47
(16) И
18 Mauser
 
02.10.16
18:50
Любое действие подразумевает результат
от этого зависит надо или нет
что ты ожидаешь
19 25-11
 
02.10.16
18:52
Будет ли запрос выполняться быстрее?
20 Mauser
 
02.10.16
18:52
Например надо ли тебе порядок
21 Mauser
 
02.10.16
18:54
(19) нет так как ты запрашиваешь дополнительные данные
22 mistеr
 
02.10.16
18:56
(14) В таблице перечисления, кроме ссылки, только одно поле - Порядок. Присоединять ее имеет смысл, только если тебе нужен этот порядок. Ссылка у тебя и так есть. А больше ничего из этой таблицы не получишь.
23 Mauser
 
02.10.16
18:57
(22) можно получить блокировку
ну на всякий извращенный случай
24 25-11
 
02.10.16
18:59
Ну да, из статьи в (11) я это понял. Само наименование (значение) извлекается каким-то иным образом, не так в справочнике.
25 GROOVY
 
02.10.16
20:23
Прикольная тема. Этакий бредовый эталон. Соединения, блокировки... У таблицы перечисления...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.