Имя: Пароль:
1C
1С v8
ТЗ или ДС
,
0 Команданте
 
24.12.12
20:30
Комрады, респектую
За неимением статуса гуру в области запросов, разрешите вопросить вас
Как лучше организовать выбор из тяжёлого справочника
1. Выбор группы, выгрузка в таблицу значений, манипуляции над таблицей значений
2. Выбор из динамического списка. Жертва: создание лишних реквизитов в справочнике, ибо динамические списки не выдерживают запросов к овер 50 000 позициям с левыми соединениями в пределах разумного
1 KUBIK
 
24.12.12
21:31
может "легкий запрос" перевесит "тяжесть справочника"?
Что такое "выбор из тяжёлого справочника " = расшифровка треба
2 KUBIK
 
24.12.12
21:34
(0) Команданте = Кубинос Паризанос? Съе...ццо?
3 Команданте
 
24.12.12
22:28
(1) 100 000 элементов
4 KUBIK
 
24.12.12
22:31
(3) И.... что выбираем? сразу все 100 000?
5 KUBIK
 
24.12.12
22:32
+(4) задачу озвучь внятно
6 Команданте
 
24.12.12
22:33
(4) короче, тема такая
выбираем сразу 100 косарей + несколько левых
динамик лист начинает сразу нещадно глючить
ну по типу из 30 папок показывает только 10, а когда крутишь дальше, опять первые 10 идут, ну и прочие ужасные глюки
7 KUBIK
 
24.12.12
22:33
+(5) конфу тоже
8 Команданте
 
24.12.12
22:33
(7) конфа УТ 11, нужно реализовать выбор номенклатуры, минутя типовые механизмы
9 H A D G E H O G s
 
24.12.12
22:34
Те, которые Левые, они както фильтуются?
10 Команданте
 
24.12.12
22:34
сделал через ТЗ, всё работат, глюков нет, но задумался, а может дописать актуальные данные периодических регистров прямо в справочник и не мучаться
11 Команданте
 
24.12.12
22:34
(9) слабо фильтруются, если честно
12 ИсчадиеADO
 
24.12.12
22:35
а левые соединения с чем? с остатками/ценами?
13 H A D G E H O G s
 
24.12.12
22:35
(11) Давай запрос.
14 H A D G E H O G s
 
24.12.12
22:36
(12) Со срезомПоследних скорее всего.
15 KUBIK
 
24.12.12
22:36
(11) SQL и ли файловая?

Если скуль = железо + софт озвучь
16 Команданте
 
24.12.12
22:37
(15) файловая на современном железе
17 H A D G E H O G s
 
24.12.12
22:37
Мисьё знает толк в извращениях.
18 KUBIK
 
24.12.12
22:39
(16) юзеров скоко? но для УТ 11 на файле = в баню и в горы...
19 ERWINS
 
24.12.12
22:40
много как то на клиента передаеться....
20 Команданте
 
24.12.12
22:40
ВЫБРАТЬ
   СправочникНоменклатура.Ссылка,
   СправочникНоменклатура.Родитель,
   СправочникНоменклатура.ЭтоГруппа,
   СправочникНоменклатура.Код,
   СправочникНоменклатура.Наименование,
   Цены.Валюта,
   СправочникНоменклатура.НаименованиеПолное,
   ВЫРАЗИТЬ(ЕСТЬNULL(ЦеныПоставщика.Цена, 0) * ЕСТЬNULL(ЦеныПоставщика.Курс, 0) / &Курс КАК ЧИСЛО(15, 2)) КАК ЦенаПоставщика,    
   ВЫБОР
       КОГДА ЕСТЬNULL(ПартииТоваровОстатки.КоличествоОстаток, 0) = 0
           ТОГДА 0
       ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПартииТоваровОстатки.СуммаБухОстаток, 0) / ЕСТЬNULL(ПартииТоваровОстатки.КоличествоОстаток, 0) / &Курс КАК ЧИСЛО(15, 2))
   КОНЕЦ КАК Закуп,
   ВЫРАЗИТЬ(ЕСТЬNULL(Цены.Цена, 0) * (1 + &Наценка / 100) КАК ЧИСЛО(15, 2)) КАК ЦенаПродТовара,
   ВЫРАЗИТЬ(ЕСТЬNULL(Цены.Цена, 0) * (1 + &Наценка / 100) * ЕСТЬNULL(Цены.Курс, 0) / &Курс КАК ЧИСЛО(15, 2)) КАК ЦенаПрод,    
   ВЫРАЗИТЬ(ЕСТЬNULL(ЦеныКонкурента.Цена, 0) * ЕСТЬNULL(ЦеныКонкурента.Курс, 0) / &Курс КАК ЧИСЛО(15, 2)) КАК ЦенаКонкурента,        
   ЦеныПоставщика.НоменклатураКонтрагента.Артикул КАК Артикул
ИЗ
   Справочник.Номенклатура КАК СправочникНоменклатура
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           Привязки.Номенклатура КАК Номенклатура,
           Привязки.НоменклатураКонтрагента КАК НоменклатураКонтрагента,
           ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена,
           ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта КАК Валюта,
           ЦеныНоменклатурыКонтрагентовСрезПоследних.Курс КАК Курс
       ИЗ
           РегистрСведений.Привязки КАК Привязки
               ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   ЦеныНоменклатурыКонтрагентовСрезПоследних.НоменклатураКонтрагента КАК НоменклатураКонтрагента,
                   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена,
                   ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта КАК Валюта,
                   КурсыВалютСрезПоследних.Курс КАК Курс
               ИЗ
                   РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
                           ,
                           Контрагент = &Поставщик
                               И НаборЦенНоменклатурыКонтрагента = &НаборЦенПоставщик) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
                       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсыВалютСрезПоследних
                       ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
               ПО Привязки.НоменклатураКонтрагента = ЦеныНоменклатурыКонтрагентовСрезПоследних.НоменклатураКонтрагента
       ГДЕ
           Привязки.НоменклатураКонтрагента.Владелец = &Поставщик) КАК ЦеныПоставщика
       ПО СправочникНоменклатура.Ссылка = ЦеныПоставщика.Номенклатура    
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
           ЦеныСрезПоследних.НаборЦен КАК НаборЦен,
           ЦеныСрезПоследних.Цена КАК Цена,
           ЦеныСрезПоследних.Валюта КАК Валюта,
           КурсыВалютСрезПоследних.Курс КАК Курс
       ИЗ
           РегистрСведений.Цены.СрезПоследних(, НаборЦен = &НаборЦен) КАК ЦеныСрезПоследних
               ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсыВалютСрезПоследних
               ПО ЦеныСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта) КАК Цены
       ПО СправочникНоменклатура.Ссылка = Цены.Номенклатура
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           Привязки.Номенклатура КАК Номенклатура,
           Привязки.НоменклатураКонтрагента КАК НоменклатураКонтрагента,
           ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена,
           ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта КАК Валюта,
           ЦеныНоменклатурыКонтрагентовСрезПоследних.Курс КАК Курс
       ИЗ
           РегистрСведений.Привязки КАК Привязки
               ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   ЦеныНоменклатурыКонтрагентовСрезПоследних.НоменклатураКонтрагента КАК НоменклатураКонтрагента,
                   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена,
                   ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта КАК Валюта,
                   КурсыВалютСрезПоследних.Курс КАК Курс
               ИЗ
                   РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
                           ,
                           Контрагент = &Конкурент
                               И НаборЦенНоменклатурыКонтрагента = &НаборЦенКонкурент) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
                       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсыВалютСрезПоследних
                       ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
               ПО Привязки.НоменклатураКонтрагента = ЦеныНоменклатурыКонтрагентовСрезПоследних.НоменклатураКонтрагента
       ГДЕ
           Привязки.НоменклатураКонтрагента.Владелец = &Конкурент) КАК ЦеныКонкурента
       ПО СправочникНоменклатура.Ссылка = ЦеныКонкурента.Номенклатура
21 H A D G E H O G s
 
24.12.12
22:40
(18) Счаст еще выясниться, что все через сеть, либо на худой канец через терминал.
22 H A D G E H O G s
 
24.12.12
22:40
(20) ну в принципе отлично.
23 Команданте
 
24.12.12
22:41
тут ещё нет левых по остаткам
но они, как я заметил, вообще не грузят запрос
вся байда в срезе последних через ж0пу
24 Mort
 
24.12.12
22:42
"ну по типу из 30 папок показывает только 10, а когда крутишь дальше, опять первые 10 идут, ну и прочие ужасные глюки"

уникальность не обеспечил, походу.
25 H A D G E H O G s
 
24.12.12
22:42
(20) В том смысле, что лютый писец.

Дело Евгения Щекина живет и пахнет, когда пишут богомерские запросы и пихают их в ДинСписок.
26 Команданте
 
24.12.12
22:43
(25) да я не спорю, что я не гуру в запросах
сожалею, что способствую делу Евгения Щекина
образумьте
27 Команданте
 
24.12.12
22:43
хотя бы навскидку
28 Команданте
 
24.12.12
22:44
запрос работает локально, сеть и терминал не участвуют
29 Команданте
 
24.12.12
22:44
если убираю левые по ценам и шпарю пяток левых по остаткам, то тормозов нет
30 ERWINS
 
24.12.12
22:45
Я бы с одной стороны выводил группы, а с другой
то что в группе не включая вложенные...

зак запросов будет хоть и больше, но все выбирать будут не так много данных
31 Команданте
 
24.12.12
22:46
(30) у меня щас так и сделано
но манагеры люто жалуются, что эта хрень (как и типовой подбор в ут 11) им нахрен не нужна
32 Команданте
 
24.12.12
22:46
вот я и подумал, а может замутить запись актуальных данных по срезу последних прямиком в справочник для выбора в оперативном режиме
33 ИсчадиеADO
 
24.12.12
22:48
а рели платформы какой? там же в каком-то было, чтоб срез последних на дату конца света хранился в отдельной таблице
34 Команданте
 
24.12.12
22:49
(33) ласт вершн
35 H A D G E H O G s
 
24.12.12
22:49
Как бы здесь великолепно смотрелся бы менеджер временных таблиц.
36 Команданте
 
24.12.12
22:50
короче, всё понятно
гуру покрутили пальцем у виска и пошли зажигать с ириской и сакурой
буду мутить свою идею
37 Команданте
 
24.12.12
22:50
(35) а что, ВТ в ДС поддерживаются?
38 H A D G E H O G s
 
24.12.12
22:51
Попробуй пакет написать
39 H A D G E H O G s
 
24.12.12
22:51
(37) Именно, что нет.
40 H A D G E H O G s
 
24.12.12
22:51
Напиши пакетный, вынеси в пакетные предзапросы свои Срезы
41 H A D G E H O G s
 
24.12.12
22:52
У РС Цены проиндексирую НаборЦен
42 Команданте
 
24.12.12
22:52
(40) кей, мэн, идея, вроде, рульная
43 H A D G E H O G s
 
24.12.12
22:55
44 ERWINS
 
24.12.12
22:55
по левым полям делаются отборы?
45 Команданте
 
24.12.12
22:56
(43) хм. интересно. респектую, браза
46 Команданте
 
24.12.12
22:57
(44) отборы в ДС не делаются, используются лишь параметры вирт. таблиц и условия запроса
47 H A D G E H O G s
 
24.12.12
22:58
(45) ksandr там еще индексы на ВТ накладывал, говорил помогало, но я чето не верю.
48 ИсчадиеADO
 
24.12.12
22:59
у тебя по запросу неск позиций одной номенклатуры будет, по 1 на каждого поставщика. это нормально, доктор?
49 ИсчадиеADO
 
24.12.12
23:00
а нет, там параметр
50 ИсчадиеADO
 
24.12.12
23:06
вот это не есть гуд
ГДЕ
           Привязки.НоменклатураКонтрагента.Владелец = &Поставщик) КАК ЦеныПоставщика



и ЦеныПоставщика.НоменклатураКонтрагента.Артикул КАК Артикул
51 Команданте
 
24.12.12
23:07
(50) о да, о да...
52 ИсчадиеADO
 
24.12.12
23:08
условие где, имхо убрать, оставить внутреннее соединение
53 ERWINS
 
24.12.12
23:26
попробуй убрать динамическое считывание данных
54 ИсчадиеADO
 
24.12.12
23:26
попробуй так, заместо центральной части своего запроса
55 ИсчадиеADO
 
24.12.12
23:27
//++
   ЛЕВОЕ СОЕДИНЕНИЕ
       (ВЫБРАТЬ
           НоменклатураКонтрагента.Ссылка, НоменклатураКонтрагента.Артикул,
           Привязки.Номенклатура,
           ЕСТЬNULL(ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена, 0) КАК Цена,
           ЕСТЬNULL(ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
           ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 0) КАК Курс        
                       
       ИЗ
           (ВЫБРАТЬ НК.Ссылка, НК.Артикул ИЗ Справочник.НоменклатураКонтрагентов КАК НК ГДЕ НК.Владелец = &Поставщик) КАК НоменклатураКонтрагента
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ
           РегистрСведений.Привязки КАК Привязки
       ПО
           НоменклатураКонтрагента.Ссылка = Привязки.Номенклатура
       ЛЕВОЕ СОЕДИНЕНИЕ
           РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
                           ,
                           Контрагент = &Поставщик
                               И НаборЦенНоменклатурыКонтрагента = &НаборЦенПоставщик) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
       ПО
           НоменклатураКонтрагента.Ссылка = ЦеныНоменклатурыКонтрагентовСрезПоследних.НоменклатураКонтрагента    
       ЛЕВОЕ СОЕДИНЕНИЕ
           РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсыВалютСрезПоследних
       ПО
           ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта
       ) КАК НечтоСтрашное
   ПО
       Номенклатура.Ссылка = НечтоСтрашное.Номенклатура    
   // --
56 ИсчадиеADO
 
24.12.12
23:30
и кстати, если есть однозначное соответствие между спр.номенклатура контрагентов и номенклатура, то зачем это держать в рег.св.?
57 Команданте
 
24.12.12
23:33
(56) вот вот я об этом и подумал
58 ИсчадиеADO
 
24.12.12
23:37
попробуй 55. там отбор более менее сразу накладывается, а не как в 20, сначала все соединения, потом уже отбор :)
59 ERWINS
 
24.12.12
23:43
нормально динамический список работает в временныеми таблицами!
60 ИсчадиеADO
 
24.12.12
23:45
правдаправда?
61 H A D G E H O G s
 
24.12.12
23:46
(59) Нет, не нормально :-)
Но работает.
62 ИсчадиеADO
 
24.12.12
23:50
(61) чет не понял, что значит работает?
63 H A D G E H O G s
 
24.12.12
23:58
(62) Когда ты помещаешь неосновную таблицу - все нормально, когда основную - ошибка
64 H A D G E H O G s
 
24.12.12
23:59
В случае автора - идеально - поместить Номенклатуру в ВТ, отобранную текущим скроллом.
Но такой запрос при выполнении - выдаст ошибку
65 H A D G E H O G s
 
25.12.12
00:02
Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Поле не найдено "DeletionMark"
66 ИсчадиеADO
 
25.12.12
00:05
(63) во блин, не знал, спасибо
тады извинения просим (59)
67 ERWINS
 
25.12.12
00:07
(65) достаточно дать английские имена полей
68 H A D G E H O G s
 
25.12.12
00:08
(67) ТААААААК
69 H A D G E H O G s
 
25.12.12
00:08
Черт побери, ЕКЛМН, как я сразу не допетрил!
70 H A D G E H O G s
 
25.12.12
00:10
ВЫБРАТЬ
   СправочникНоменклатура.Ссылка КАК ref,
   СправочникНоменклатура.ПометкаУдаления КАК DeletionMark
ПОМЕСТИТЬ Ном
ИЗ
   Справочник.Номенклатура КАК СправочникНоменклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Ном.ref,
   Ном.DeletionMark
ИЗ
   Ном КАК Ном


Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Поле не найдено "ref"
71 H A D G E H O G s
 
25.12.12
00:18
(67) Че делать то?
72 H A D G E H O G s
 
25.12.12
09:35
Подниму.

p.s. Автор, как там у тебя?
73 samozvanec
 
25.12.12
09:52
(6) симптомы напоминают двойную сортировку по ссылке. Когда-то давно (13-14 платформа) был такой, сейчас хз