![]() |
|
Объект не найден. Запрос. | ☑ | ||
---|---|---|---|---|
0
Dno1C
03.12.19
✎
21:49
|
Добрый вечер господа.
Подскажите как грамотно решить данную задачу без внесений изменений в конфигурацию. Есть типовая Корфа от франча имя которого начинается на р и заканчивается на ус. В ней есть док который содержит реквизиты организация, подразделение, контрагент. Включено использование РЛС. У документа настроено ограничние "прочие поля" - организация, подразделение. Делаю запрос выбрать разрешённые организация, подразделение, контранент. Получаю несколько строк где контрагент - объект не найден. Как отсекать такие доки из результата запроса? Приходит вариант с использование ВТ в которую выбираю разрешённых контрагентов и потом присоединяю её к основному запросу. Но есть проблема в базе контрагентов дохрена выборка в вт занимает много времени. Как грамотно решить задачу без внесения изменений? |
|||
1
RomanYS
03.12.19
✎
21:51
|
>>контрагентов дохрена выборка в вт занимает много времени
Сколько? Покажи запрос |
|||
2
Dno1C
03.12.19
✎
21:54
|
Милионны.
Запрос прост выбрать разрешенные организация , подразделение, контрагент из док Если с ВТ то соответственно добавляется левое соединение с выбрать разрешенные ссылка из контрагенты |
|||
3
OnNeOn
03.12.19
✎
21:56
|
(2) В студию запрос поддаван, отцы сейчас совещаться будут. Смотри и учись.
|
|||
4
Dno1C
03.12.19
✎
21:56
|
Вернее внутренне. Сейчас оформим запрос. Ван секонд
|
|||
5
RomanYS
03.12.19
✎
21:57
|
(2) миллионы.. без внесения изменений.. Успехов! Может расширения помогут
|
|||
6
Dno1C
03.12.19
✎
22:09
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПоступлениеИнформации.Организация КАК Организация, ПоступлениеИнформации.Подразделение КАК Подразделение, ПоступлениеИнформации.Контрагент КАК Контрагент ПОМЕСТИТЬ ДокПоступлениеИнформации ИЗ Документ.ПоступлениеИнформации КАК ПоступлениеИнформации ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ Контрагенты.Ссылка КАК Ссылка ПОМЕСТИТЬ ВТ_Контрагенты ИЗ Справочник.Контрагенты КАК Контрагенты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДокПоступлениеИнформации.Организация КАК Организация, ДокПоступлениеИнформации.Подразделение КАК Подразделение, ДокПоступлениеИнформации.Контрагент КАК Контрагент ИЗ ДокПоступлениеИнформации КАК ДокПоступлениеИнформации ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Контрагенты КАК ВТ_Контрагенты ПО (ДокПоступлениеИнформации.Контрагент = ВТ_Контрагенты.Ссылка) |
|||
7
OnNeOn
03.12.19
✎
22:09
|
(4) Нет запроса, тогда поднимайте веб сервис. Он поможет
|
|||
8
Dno1C
03.12.19
✎
22:10
|
(7) втф?
|
|||
9
OnNeOn
03.12.19
✎
22:11
|
В последнем запросе напиши выбрать разрешенные
|
|||
10
Dno1C
03.12.19
✎
22:12
|
(9) зачем? В первом и втором и так уже есть, результат от этого не изменится
|
|||
11
OnNeOn
03.12.19
✎
22:12
|
у тебя после соединения должны выйти те записи, которые доступны пользователю и после наложения РЛС на док, и на справочник тоже. тут собака зарыта.
|
|||
12
OnNeOn
03.12.19
✎
22:12
|
(10) Ты 3.14 завтра на работе будешь, а тут будешь учиться засранец!
|
|||
13
Dno1C
03.12.19
✎
22:13
|
(11) этот запрос и так возражает что надо. Проблема в том, что контрагентов милионны и создание вт занимает уйму времени, есть ли другие варианты решения задачи?
|
|||
14
OnNeOn
03.12.19
✎
22:13
|
Батька говорит делать, значит надо делать, какой результат? Докладывай сынок!
|
|||
15
OnNeOn
03.12.19
✎
22:14
|
Ты почему не идексировал таблицы сынок???
|
|||
16
Dno1C
03.12.19
✎
22:14
|
(12) дак если ты не прав, признай это или обоснуй
|
|||
17
OnNeOn
03.12.19
✎
22:14
|
Индексировать кто будет? Иван федорович крузернштейн?
В ВТ надо сделать индексацию! Миллионы записей тебе в запрос. Ха |
|||
18
Hmster
03.12.19
✎
22:14
|
(6) Проиндексируй "Контрагент" в двух первых и используй вместо соединения ГДЕ Контрагент в (ВЫБРАТЬ ....)
|
|||
19
Dno1C
03.12.19
✎
22:15
|
(15) потому что у меня проблема не в этом, а проблема со скоростью создания вт, ускорение соединения с индексом для меня сейчас роли не играет
|
|||
20
OnNeOn
03.12.19
✎
22:16
|
(16) Зачем ему вообще вторая ВТ если потом внутреннее соединение? Сынок!!!! Ответь за вторую таблицу! Зачем она?
|
|||
21
Dno1C
03.12.19
✎
22:16
|
Вт на несколько милионнов - узкое место, а не соединение или поиск с или в этой вт
|
|||
22
Hmster
03.12.19
✎
22:16
|
(19) вот это сколько по времени выполняется?
ВЫБРАТЬ РАЗРЕШЕННЫЕ Контрагенты.Ссылка КАК Ссылка ПОМЕСТИТЬ ВТ_Контрагенты ИЗ Справочник.Контрагенты КАК Контрагенты |
|||
23
Dno1C
03.12.19
✎
22:16
|
(20) затем чтобы выбрать разрешённых контрагентов
|
|||
24
OnNeOn
03.12.19
✎
22:16
|
Народ, зачем вторая ВТ? В чем смысл этого велосипеда? потом внутренее соединение, ау народ!
|
|||
25
Dno1C
03.12.19
✎
22:17
|
(22) около 15 сек, что критично в данном случаи
|
|||
26
OnNeOn
03.12.19
✎
22:18
|
По мне бред какой то. Зачем это надо, левым соединением клеить надо, к первой таблице, а не внутреннем да еще и без индексов
|
|||
27
Dno1C
03.12.19
✎
22:19
|
(26) Твой уровень понятен..
|
|||
28
Hmster
03.12.19
✎
22:19
|
(25) а под полными правами?
|
|||
29
OnNeOn
03.12.19
✎
22:20
|
ну ладно, почитаю, умничать не буду, может ума добавится. не тяну тему ((( признаю, туповат еще.
|
|||
30
Dno1C
03.12.19
✎
22:21
|
(28) под полными чуть быстрее, но хотелось бы понять, есть ли другие способы решения проблемы без полного выбора разрешенных контрагентов из справочника.
|
|||
31
Dno1C
03.12.19
✎
22:25
|
(28) как минимум есть ещё одно решение, оставить только запрос к документу а в условии проверять, не Контрагент.представление есть null. Работает быстро, но сейчас такой код можно получить по рукам.
|
|||
32
Dno1C
03.12.19
✎
22:25
|
Но за такой*
|
|||
33
Hmster
03.12.19
✎
22:27
|
(30) не должен он долго выполняться под полными правами, может с железом что не то?
|
|||
34
Hmster
03.12.19
✎
22:28
|
(31) там изначально походу логика хромает, если напишешь комментарий с ответом почему так - думаю поймут
|
|||
35
Dno1C
03.12.19
✎
22:30
|
(33) Верно, железо не самое лучше, что приходиться крутиться на то что есть.
Как я думал задача банальная и есть красивое решение для таких случаев |
|||
36
Hmster
03.12.19
✎
22:35
|
а пробовал в первом запросе делать соединение со справочником Контрагенты? И получать в запросе код или наименование?
Вообще странно почему у документа нет ограничения в рлс по полю контрагент |
|||
37
OnNeOn
03.12.19
✎
22:38
|
(36) Не подсказывай ему. надо превозмочь.
|
|||
38
Dno1C
03.12.19
✎
22:40
|
(36) Попробовал, строки где контрагент объект не найден так же выводятся, код и наименование Null
|
|||
39
Dno1C
03.12.19
✎
22:41
|
(37) С тобой уже разобрались, ты не шаришь
|
|||
40
Hmster
03.12.19
✎
22:42
|
(38) а по времени как идет? а если сразу в ГДЕ написать НЕ Контрагент.Код ЕСТЬ NULL
|
|||
41
Fram
03.12.19
✎
22:46
|
(25) че то жесть какая то прям. а количество какое выбирается?
|
|||
42
Dno1C
03.12.19
✎
22:47
|
НЕ Контрагент.Код ЕСТЬ NULL такой вариант отрабатывает значительно быстрее, думаю что максимально быстро, что можно получить данном случаи.
ГДЕ написать НЕ Контрагент.Код ЕСТЬ NULL - это решение подходит, но оч сильно смущает в плане говнокода |
|||
43
Dno1C
03.12.19
✎
22:47
|
(41) несколько миллионов контрагентов
|
|||
44
Dno1C
03.12.19
✎
22:50
|
(28) Приношу прощение за дезинформацию, под полными правами создание ВТ контрагентов укладывается в 1-2 сек
|
|||
45
Fram
03.12.19
✎
22:51
|
(43) так и запишем тогда.. РЛС и несколько миллионов = жопа
А если серьезно.. база на MSSQL?.. tempdb и временные сеансовые данные на отдельном быстром ССД лежат? |
|||
46
OnNeOn
03.12.19
✎
22:52
|
(44) Тогда надо запрос, что в РЛС смотреть, видимо там косяк.
|
|||
47
Dno1C
03.12.19
✎
22:55
|
(45) Ну как сказать быстром ССД... Рейд 10 sas
|
|||
48
Dno1C
03.12.19
✎
22:55
|
(45) база да mssql
|
|||
49
H A D G E H O G s
03.12.19
✎
22:55
|
Приведи текст запроса без ВТ.
|
|||
50
Dno1C
03.12.19
✎
23:03
|
(49)
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПоступлениеИнформации.Организация КАК Организация, ПоступлениеИнформации.Подразделение КАК Подразделение, ПоступлениеИнформации.Контрагент КАК Контрагент ИЗ Документ.ПоступлениеИнформации КАК ПоступлениеИнформации ГДЕ ПоступлениеИнформации.Контрагент В (ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты) |
|||
51
Fram
03.12.19
✎
23:03
|
(47) если есть возможность, перенесите. не знаю точно что за рейд у вас, но может в разы ускориться.
|
|||
52
OnNeOn
03.12.19
✎
23:08
|
А почему вот это говнокод:
ГДЕ написать НЕ Контрагент.Код ЕСТЬ NULL - это решение подходит, но оч сильно смущает в плане говнокода ? Можно мнения отцов? |
|||
53
H A D G E H O G s
03.12.19
✎
23:09
|
Ну допустим так
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПоступлениеТоваровУслуг.Контрагент, ПоступлениеТоваровУслуг.Организация ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО ПоступлениеТоваровУслуг.Контрагент = Контрагенты.Ссылка ГДЕ ВЫБОР КОГДА ПоступлениеТоваровУслуг.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА ИСТИНА ИНАЧЕ НЕ Контрагенты.Ссылка ЕСТЬ NULL КОНЕЦ |
|||
54
H A D G E H O G s
03.12.19
✎
23:10
|
(52) Оно не учитывает доки с пустым контром
|
|||
55
OnNeOn
03.12.19
✎
23:14
|
(54) Ясно, но пустого контра отобрал технично, молодец.
|
|||
56
OnNeOn
03.12.19
✎
23:49
|
(54) А как думаешь, если сделать в первом вт соединение с контрагентами, РЛС не отработает по контрагентам? ведь по сути то должно будет, и не будет второй вт?
|
|||
57
PR
04.12.19
✎
01:01
|
(31) Почему? Нормальный код
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |