Имя: Пароль:
1C
1С v8
вопрос к профессионалам по поводу запросов
,
0 Plastilin
 
11.09.11
18:58
Уважаемые профи, подскажите пожалуйста какую конструкцию лучше использовать для увеличения быстродействия?
1)
ВЫБОР
   КОГДА (НЕ РегистрУчетЗаявок.Регистратор.Ставка = ЗНАЧЕНИЕ(Справочник.Ставки.ПустаяСсылка))
       ТОГДА ПРЕДСТАВЛЕНИЕ(РегистрУчетЗаявок.Регистратор.Ставка)
   ИНАЧЕ ПРЕДСТАВЛЕНИЕ(РегистрУчетЗаявок.Регистратор.Ставка2)
КОНЕЦ
2) или же производить отбор в выборке результатов запроса
1 Лефмихалыч
 
11.09.11
19:00
(0) для увеличения быстродействия все отборы надо всовывать в запрос. Но отбор из приведенного тобой первого варианта надо сжечь в доменной печи и ни когда ни кому не показывать - он скорости не добавит
2 Plastilin
 
11.09.11
19:01
подскажите пожалуйста как построить конструкцию!!
3 Лефмихалыч
 
11.09.11
19:09
(2) я телепатические способности забыл в кармане штанов, которые сейчас в стиральной машине бултыхаются и в результате слабо вижу, что там у тебя за регистр и какую цель ты преследуешь запросом
4 Plastilin
 
11.09.11
19:14
регистратор - документ в котором присутствуют 3 поля..нужно выбрать данные одного из них.то которое заполнено.остальные пустые.
к примеру это поля
ставка1,ставка2,ставка3
одно поле тип- справочник,2 других тип- перечисление
5 Лефмихалыч
 
11.09.11
19:17
(4) зачем тебе регистр вообще? Ты из него еще что-то получать хочешь? Что мешает сразу из таблицы документа выбирать данные?
6 Plastilin
 
11.09.11
19:20
ну мне подсказали что с регистров данные быстрее вытаскиваются чем с таблиц документов.потому я при провожу документ по регистру.потом в нужных местах таскаю с него данные.
в моем случае допустим хранится информация только в одном из 3х полей.нужно вытащить инфу из того , которое заполнено
7 Plastilin
 
11.09.11
19:21
не судите строго я новичок.потому многое непонятно.соответсвенно ищу помощи у профессионалов.
8 Лефмихалыч
 
11.09.11
19:22
(6) тебе подсказали сказочную куиту. Короче, или ты всю задачу целиком выкладываешь, или ни кто тебе не поможет
9 IamAlexy
 
11.09.11
19:22
(1) чем тебе запрос то непонравился? задача - вывести первую ставку, если она незаполнена то вторую... вот ты бы как сделал ?
10 Лефмихалыч
 
11.09.11
19:24
(9) ты на (6) посмотри. Ему просто документы нужны, а не регистр. Кроме того, если в регистре несколько регистраторов, то конструция Регистратор.Ставка породит фигову гору ненужных соединений
11 Plastilin
 
11.09.11
19:25
задача выбрать данные одного(заполненного)поля из трех,которые присутсвуют в документе
12 iamnub
 
11.09.11
19:25
(1)
"для увеличения быстродействия все отборы надо всовывать в запрос."

В таком виде - это высказывание ложно.
13 Plastilin
 
11.09.11
19:31
так.единственное что понял что можно использовать таблицы документов.Регистратор всего один..
14 Plastilin
 
11.09.11
19:34
может все таки кто нибудь меня просветит?
15 Злобный Фей
 
11.09.11
19:36
(14) Делай запрос к документам, без регистров.
16 Plastilin
 
11.09.11
19:42
это уже я понял. а как эффективнее организовать выборку?в самом запросе или же в переборе результата?
17 МихаилМ
 
11.09.11
19:46
задача отображения данных
посему должна обрабатываться на клиенте субд

представление перечислений в бд не хранится

сответственно - вариант 3)

выборка должна содержать представление
только тех данных, которые хранятся в бд
18 Plastilin
 
11.09.11
19:53
представление я использую чтобы значение сразу вывести в типе строка.
может быть лучше при проведении документа сразу делать выборку  того поля и его записывать в регистр?а потом данные из него таскать?
19 МихаилМ
 
11.09.11
20:11
(18)
почитайте про правила нормализации данных
20 Plastilin
 
11.09.11
20:51
так как лучше юзать выборку в теле запроса или в его результате?!!!!
приведите хоть небольшой пример как бы вы сами реализовали конструкцию.чтобы знать куда копать
21 byxtello
 
11.09.11
21:18
делай в выборке, через год заказчик обратится снова и сделаешь ему в запросе :)
22 Plastilin
 
11.09.11
21:20
))))))))))
23 Plastilin
 
11.09.11
21:21
через год я буду по ту сторону земного шара)
24 Plastilin
 
11.09.11
21:23
ребята ну не будьте снобами.вы мне можете подсказать как лучше работать с запросами??я понимаю что у вам неохота отвлекаться по таким пустякам.но ведь все когда нибудь начинали.все черпали информацию.я вот реально тока начинаю и не опыта мало.эхх..
25 Fragster
 
гуру
11.09.11
21:25
лучше ставку прямо в регистр запихать, раз уж очень она нужна
26 Икогнито
 
11.09.11
21:26
Скажите заодно ответ на глупый вопрос, зачем вместо Остатки.Номенклатура в запросах пишут ПредставлениеСсылки(Остатки.Номенклатура)?
27 byxtello
 
11.09.11
21:26
ну как бе все уже написали - без знания структуры данных точного ответа никто не даст.
попробуй сделать запрос по таблице документа
и сравни
28 Plastilin
 
11.09.11
21:38
все такие загадочные..при чем тут представление ссылки???? мне все равно весь результат надо в текстовом виде в итоге предоставить..ВОПРОС КАК СДЕЛАТЬ ВЫБОРКУ ЛУЧШЕ,,,АЛЕ вы че прикалваетесь? вы вопрос вообще читали?
29 Plastilin
 
11.09.11
21:39
играете тут в угадай мелодию
30 eklmn
 
гуру
11.09.11
21:42
(28) ты думаешь тут есть спецы? )) тебе кто-то наврал...
31 Reaper_1c
 
11.09.11
21:46
(30) +100500
32 Plastilin
 
11.09.11
21:48
ну спецы то точно есть.но им плевать..
33 Chin
 
11.09.11
21:51
Делай запрос к документам (только проведенным - раз регистр пытаешься заполнять при проведении, то видимо нужны только проведенные документы), а дальше так как задумал:
ВЫБОР
   КОГДА (НЕ Документ.Ставка1 = ЗНАЧЕНИЕ(Справочник.Ставки.ПустаяСсылка))
       ТОГДА ПРЕДСТАВЛЕНИЕ(Документ.Ставка1)
   КОГДА (НЕ Документ.Ставка2 = ЗНАЧЕНИЕ(Справочник.Ставки.ПустаяСсылка))
       ТОГДА ПРЕДСТАВЛЕНИЕ(Документ.Ставка2)
   ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Документ.Ставка3)
КОНЕЦ

И не парься - хочешь чтобы быстрее работало (если это конечно очень нужно) сделай эти поля индексируемыми...
34 Plastilin
 
11.09.11
22:07
спасибо..хоть кто то откликнулся..
35 Икогнито
 
11.09.11
22:09
на (26) профи могут ответить?
36 eklmn
 
гуру
11.09.11
22:13
(35) что лучше тащить, текст или ссылку?
37 Reaper_1c
 
11.09.11
22:13
(35) Чтобы результат содержал строковое представление ссылки. Твой кэп.
38 Plastilin
 
11.09.11
22:17
))
39 vde69
 
11.09.11
22:23
во первых "ПРЕДСТАВЛЕНИЕ" - это сильно тормозная вещь
во вторых "РегистрУчетЗаявок.Регистратор.Ставка" - это не гуд

я-бы сделал вложеный запрос где получам в виде поля Регистратор и потом уже ставил оператор выбора.
40 Plastilin
 
11.09.11
22:29
Ставка уже в измерении
41 Икогнито
 
11.09.11
22:33
(36) Что есть ПредставлениеССылки()?
42 Reaper_1c
 
11.09.11
22:34
Это функция!
43 Chin
 
11.09.11
22:36
44 Chin
 
11.09.11
22:40
(39) Если требуется вывод результата в отчет - то лучше использовать ПРЕДСТАВЛЕНИЕ.
45 Reaper_1c
 
11.09.11
22:43
(44) Это не по пацански - от этого запросы тормозят. Пусть лучше система при выводе каждой строчки табличного документа в базу лазает. Зато запрос летает.
46 zyto
 
11.09.11
22:45
(33)Без описания задачи это тоже филькина грамота...
Гораздо лучше писать в регистр уже нужную ставку, а потом брать остатки (или обороты) с группировкой по ставке...
ИМХО, без полного текста задания...
47 Икогнито
 
11.09.11
22:45
(43) спасибо
48 Plastilin
 
11.09.11
22:46
#46 так и пришлось делать
49 Chin
 
11.09.11
22:49
(45) Сделай вывод в таблицу 5000 строк какого-нибудь справочника с использованием "ПРЕДСТАВЛЕНИЯ" и без и сравни... Сам этим редко пользуюсь - в небольших запросах не критично, но пару раз пришлось использовать.
50 Plastilin
 
11.09.11
22:53
там максимум 100 строк будет
51 Злобный Фей
 
11.09.11
23:08
(50) Весь сыр-бор из-за 100 строк? С такими объемами хоть в цикле запрос гоняй.
53 Plastilin
 
12.09.11
01:25
так дело в том что дальше больше если.когда столкнусь с большими объемами данных.сразу хотелось бы приучиться к грамотным конструкциям кода
54 Chin
 
12.09.11
01:56
(53) А если в кратце, а нафига тебе три поля для ставки? Одного не достаточно - и делать при этом запись при проведении документа как предложил zyto в (46) - ведь сам пишешь, что может быть заполнено только одно поле. Если так, то реально никаких ВЫБОР КОГДА не нужно? Или в этом есть какой-то тайный смысл? Или вопрос чисто гипотетический - на будущее?
55 Alexandr Puzakov
 
12.09.11
05:52
>>вопрос к профессионалам

а простым скромным специалистам можно на него отвечать?
56 Alexandr Puzakov
 
12.09.11
06:00
Ладно, раз никто не возражает, я тоже маленько отвечу. Если возникает такая потребность, то можешь смело добавлять в регистр реквизит (желательно индексируемый) Ставка и уже его анализировать в запросе...
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс