Имя: Пароль:
1C
1С v8
Необходимо ускорить выполнение запроса при проверке недействительных паспортов.
,
0 dust09
 
23.09.15
16:26
Необходимо ускорить выполнение запроса при проверке недействительных паспортов. Соответственно, оптимизировать запрос в соответствующей функции.

ВЫБРАТЬ РАЗЛИЧНЫЕ
                _арДанныеДокументовУчастниковСрезПоследних.ВидДокумента КАК ДокументВид,
                _арДанныеДокументовУчастниковСрезПоследних.Серия КАК ДокументСерия,
                _арДанныеДокументовУчастниковСрезПоследних.Номер КАК ДокументНомер,
                ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Серия, 1, 4) + ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Номер, 1, 6) КАК СерияНомер,
                _арДанныеДокументовУчастниковСрезПоследних.ДатаВыдачи КАК ДокументДатаВыдачи,
                _арДанныеДокументовУчастниковСрезПоследних.Участник КАК Участник,
                _арДанныеДокументовУчастниковСрезПоследних.Участник.ДатаРождения КАК ДатаРождения,
                _арДанныеДокументовУчастниковСрезПоследних.Участник.СНИЛС КАК СНИЛС
ИЗ
                РегистрСведений._арДанныеДокументовУчастников.СрезПоследних(&Период, ) КАК _арДанныеДокументовУчастниковСрезПоследних
ГДЕ
                _арДанныеДокументовУчастниковСрезПоследних.Серия <> ""
                И _арДанныеДокументовУчастниковСрезПоследних.Номер <> ""
                И ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Серия, 1, 4) + ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Номер, 1, 6) В (&СписокСерийНомеров)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
                _арПоследниеИзмененияСрезПоследних.ВидДокумента,
                _арПоследниеИзмененияСрезПоследних.ДокументСерия,
                _арПоследниеИзмененияСрезПоследних.ДокументНомер,
                ПОДСТРОКА(_арПоследниеИзмененияСрезПоследних.ДокументСерия, 1, 4) + ПОДСТРОКА(_арПоследниеИзмененияСрезПоследних.ДокументНомер, 1, 6),
                _арПоследниеИзмененияСрезПоследних.ДокументДатаВыдачи,
                _арПоследниеИзмененияСрезПоследних.Участник,
                _арПоследниеИзмененияСрезПоследних.ДатаРождения,
                _арПоследниеИзмененияСрезПоследних.СНИЛС
ИЗ
                РегистрСведений._арПоследниеИзменения.СрезПоследних(&Период, ) КАК _арПоследниеИзмененияСрезПоследних
ГДЕ
                _арПоследниеИзмененияСрезПоследних.ДокументСерия <> ""
                И _арПоследниеИзмененияСрезПоследних.ДокументНомер <> ""
                И ПОДСТРОКА(_арПоследниеИзмененияСрезПоследних.ДокументСерия, 1, 4) + ПОДСТРОКА(_арПоследниеИзмененияСрезПоследних.ДокументНомер, 1, 6) В (&СписокСерийНомеров)

УПОРЯДОЧИТЬ ПО
                Участник
АВТОУПОРЯДОЧИВАНИЕ
1 Апош
 
23.09.15
16:27
что будешь делать?
2 dust09
 
23.09.15
16:28
(1) Оптимизировать надо запрос, чтоб быстрее работал.
3 Fragster
 
гуру
23.09.15
16:28
сделать поле, которое бы сразу содержало _арДанныеДокументовУчастниковСрезПоследних.Серия, 1, 4) + ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Номер, 1, 6
4 Апош
 
23.09.15
16:28
(2) я готов
5 MSOliver
 
23.09.15
16:29
<> ""
значение(документ.тра-та-та.пустаяссылка)
6 vicof
 
23.09.15
16:30
Отбор из где в параметры вирт таблиц
7 MSOliver
 
23.09.15
16:30
(6) ну или справочник чё там у вас...
8 MSOliver
 
23.09.15
16:31
(6) на срезе?
9 Лефмихалыч
 
23.09.15
16:31
(0) запрос свой выкинь и пользуйся вот этим: http://services.fms.gov.ru/info-service.htm?sid=2000
10 MSOliver
 
23.09.15
16:32
(0) поставь отбор в виртуальные таблицы, я думаю даже дольше станет, тока отбор <>
11 MSOliver
 
23.09.15
16:33
(9) а он мож узбеков ловит)
12 dust09
 
23.09.15
16:33
(9) Отсюда и закачано в Регистр Сведений, а из него в таблицу СписокСерийНомеров
13 MSOliver
 
23.09.15
16:35
(12) делай (10) и станет всё понятно, не про индексы же говорить...
14 Лефмихалыч
 
23.09.15
16:35
(12) и нахрена? Какая религия мешает использовать первоисточник?
15 Fragster
 
гуру
23.09.15
16:36
(13) вы в курсе, как работает отбор в виртуальных таблицах РС по ресурсам?
16 Fragster
 
гуру
23.09.15
16:36
(14) могут забанить, если много запросов
17 Лефмихалыч
 
23.09.15
16:36
кстати, если убрать из запроса все ПОДСТРОКА(), это как повлияет на выполнение?
18 MSOliver
 
23.09.15
16:37
(14) тута ускорять запрос надобно, а не задавать разумные вопросы:"Зачем?"
19 Fragster
 
гуру
23.09.15
16:37
(17) очень хорошо повлияет, если сделать (3)
20 Лефмихалыч
 
23.09.15
16:37
(16) и от этого есть лекарство - просто так брать и не делать много запросов
21 Fragster
 
гуру
23.09.15
16:37
(19)+ и проиндексировать
22 MSOliver
 
23.09.15
16:40
(15) не совсем понятен вопрос, тут и разницы в РС между реквизитом и ресурсом спорная, и галка индексировать, и отбираться надобно по измерениям... у Вас уже ресурсы образовались...
23 dust09
 
23.09.15
16:42
(14) Не совсем понимаю, что есть "первоисточник" ???
Мне нужен запрос для отчёта группового по базе данных.
24 Fragster
 
гуру
23.09.15
16:42
(22) если условие отбора идет по измерениям - то в параметры ВТ пихать его можно, если по ресурсам/реквизитам - то нет. иначе срез последних будет показывать кривоту.
и что-то совсем не уверен, что номер/серия паспорта - это измерения.
25 dust09
 
23.09.15
16:42
(14) У нас Пенсионный Фонд.
26 MSOliver
 
23.09.15
16:45
(15) не кривоту а значение когда, ресурс был таким как в параметре, но это уже не срез
27 Fragster
 
гуру
23.09.15
16:46
(26) если Срез показывает не срез - то это кривота
28 MSOliver
 
23.09.15
16:48
(24) а если номер/серия паспорта - это измерения составного типа в том числе и строка, согласны ли вы что конструкция <> "" сильно обременит запрос, а если её ещё и в параметры засунуть то результат может быть ещё и хуже...
29 Fragster
 
гуру
23.09.15
16:50
(28) я надеюсь, что создатели РС _арДанныеДокументовУчастников и _арПоследниеИзменения не настолько мудаки
30 MSOliver
 
23.09.15
16:51
(29) ))
31 timurhv
 
23.09.15
16:59
(0) Так не устроит без изменения структуры РСВ?

ВЫБРАТЬ РАЗЛИЧНЫЕ
                _арДанныеДокументовУчастниковСрезПоследних.ВидДокумента КАК ДокументВид,
                _арДанныеДокументовУчастниковСрезПоследних.Серия КАК ДокументСерия,
                _арДанныеДокументовУчастниковСрезПоследних.Номер КАК ДокументНомер,
                ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Серия, 1, 4) + ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Номер, 1, 6) КАК СерияНомер,
                _арДанныеДокументовУчастниковСрезПоследних.ДатаВыдачи КАК ДокументДатаВыдачи,
                _арДанныеДокументовУчастниковСрезПоследних.Участник КАК Участник,
                _арДанныеДокументовУчастниковСрезПоследних.Участник.ДатаРождения КАК ДатаРождения,
                _арДанныеДокументовУчастниковСрезПоследних.Участник.СНИЛС КАК СНИЛС
ПОМЕСТИТЬ втТаблица
ИЗ
                РегистрСведений._арДанныеДокументовУчастников.СрезПоследних(&Период, ) КАК _арДанныеДокументовУчастниковСрезПоследних
ГДЕ
                _арДанныеДокументовУчастниковСрезПоследних.Серия <> ""
                И _арДанныеДокументовУчастниковСрезПоследних.Номер <> ""

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
                _арПоследниеИзмененияСрезПоследних.ВидДокумента,
                _арПоследниеИзмененияСрезПоследних.ДокументСерия,
                _арПоследниеИзмененияСрезПоследних.ДокументНомер,
                ПОДСТРОКА(_арПоследниеИзмененияСрезПоследних.ДокументСерия, 1, 4) + ПОДСТРОКА(_арПоследниеИзмененияСрезПоследних.ДокументНомер, 1, 6),
                _арПоследниеИзмененияСрезПоследних.ДокументДатаВыдачи,
                _арПоследниеИзмененияСрезПоследних.Участник,
                _арПоследниеИзмененияСрезПоследних.ДатаРождения,
                _арПоследниеИзмененияСрезПоследних.СНИЛС
ИЗ
                РегистрСведений._арПоследниеИзменения.СрезПоследних(&Период, ) КАК _арПоследниеИзмененияСрезПоследних
ГДЕ
                _арПоследниеИзмененияСрезПоследних.ДокументСерия <> ""
                И _арПоследниеИзмененияСрезПоследних.ДокументНомер <> ""

ИНДЕКСИРОВАТЬ ПО
    СерияНомер

;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
        втТаблица.ДокументВид КАК ДокументВид,
        втТаблица.ДокументСерия КАК ДокументСерия,
        втТаблица.ДокументНомер КАК ДокументНомер,
        втТаблица.СерияНомер КАК СерияНомер,
        втТаблица.ДокументДатаВыдачи КАК ДокументДатаВыдачи,
        втТаблица.Участник КАК Участник,
        втТаблица.ДатаРождения КАК ДатаРождения,
        втТаблица.СНИЛС КАК СНИЛС
ИЗ
    втТаблица КАК втТаблица
ГДЕ
        втТаблица.СерияНомер В (&СписокСерийНомеров)
УПОРЯДОЧИТЬ ПО
        Участник
АВТОУПОРЯДОЧИВАНИЕ
32 dust09
 
23.09.15
17:11
(31) Массив СписокСерийНомеров поместить во временную таблицу говорят надо.

Как это сделать бы???
33 MSOliver
 
23.09.15
17:15
(32) КЗ спасибо Чепелевичу
34 dust09
 
23.09.15
17:39
(31) Спасибо за этот вариант     :-)
35 dust09
 
23.09.15
17:39
(31) Но буду думать дальше.
36 alexlap
 
23.09.15
18:34
Включить итоги по РС, убрать из параметров ВТ период.
37 MadJhey
 
23.09.15
18:50
(31) сильно не поможет. Один черт полное сканирование РС.
38 MadJhey
 
23.09.15
18:56
(36) а вот включить итоги и брать уже готовую виртуальную таблицу поможет. Как бы еще индексы задействовать хотя бы частично. От "<>" надо избавляться. Может доп. измерение ПустаяСерия и ПустойНомер и условие на "=" и их поставить первыми.
Измерение1 + [Измерение2 +...]    Есть хоть одно измерение регистра.
Индекс, включающий все измерения в том порядке, в котором они заданы при конфигурировании.
ИзмерениеN + Измерение1 + [Измерение2 +...]    Измерению "ИзмерениеN" задано свойство "Индексировать" или свойство "Ведущее" и при этом это не первое и не единственное измерение.
Индекс, включающий все измерения. Первое поле - ИзмерениеN, затем все остальные измерения в том порядке, в котором они заданы при конфигурировании.
Реквизит + Измерение1 + [Измерение2 +...]    Реквизиту "Реквизит" задано свойство "Индексировать".
Индекс в котором первое поле - Реквизит, затем все измерения в том порядке, в котором они заданы при конфигурировании.
Ресурс + Измерение1 + [Измерение2 +...]    Ресурсу "Ресурс" задано свойство "Индексировать".
Индекс в котором первое поле - Ресурс, затем все измерения в том порядке, в котором они заданы при конфигурировании.
39 MadJhey
 
23.09.15
18:58
(38) это индексы для регистра сведений. Для таблицы итогов надо индексы посмотреть. Но думаю, что они такие же.
40 MadJhey
 
23.09.15
19:03
(38) "поставить первыми" - имею ввиду поставить первыми в списке измерений, чтобы для них применялся индекс - Измерение1 + [Измерение2 +...].
41 Смотрящий
 
23.09.15
19:50
(0) Денормализовать таблицу религия не позволяет ? Один чОрд закачивал ее с сервиса внешнего, ну добавь ты отдельное поле со значением ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Серия, 1, 4) + ПОДСТРОКА(_арДанныеДокументовУчастниковСрезПоследних.Номер, 1, 6)