Имя: Пароль:
1C
1С v8
Быстродействие запроса в 1С ЗУП 2.5
0 inkvizitr
 
08.10.18
17:00
Задача стоит в том, чтобы вывести поля по физическим лицам, само физ. лицо, паспортные данные и контактную информацию, отчет формируется очень долго, как его можно оптимизировать, чтобы он работал быстрее?

ВЫБРАТЬ
    ФизическиеЛица.Ссылка КАК ФИО,
    ФизическиеЛица.ДатаРождения,
    ФизическиеЛица.МестоРождения,
    ФизическиеЛица.ИНН,
    ФизическиеЛица.СтраховойНомерПФР
ПОМЕСТИТЬ ВТ_ОбщееФизЛица
ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
    ФизическиеЛица.Родитель = &Родитель
    И ФизическиеЛица.ПометкаУдаления = ЛОЖЬ
    И ФизическиеЛица.ЭтоГруппа = ЛОЖЬ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия КАК СерияПаспорта,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер КАК НомерПаспорта,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи КАК ДатаВыдачи,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК КемВыдан,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения КАК КодПодразделения,
    ПаспортныеДанныеФизЛицСрезПоследних.ДатаРегистрацииПоМестуЖительства
ПОМЕСТИТЬ ВТ_ОбщееПаспортныеДанные
ИЗ
    ВТ_ОбщееФизЛица КАК ВТ_ОбщееФизЛица
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(
                ,
                ФизЛицо В
                    (ВЫБРАТЬ
                        ВТ_ОбщееФизЛица.ФИО
                    ИЗ
                        ВТ_ОбщееФизЛица КАК ВТ_ОбщееФизЛица)) КАК ПаспортныеДанныеФизЛицСрезПоследних
        ПО ВТ_ОбщееФизЛица.ФИО = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КонтактнаяИнформация.Вид КАК АресИлиТелефон,
    МАКСИМУМ(ПОДСТРОКА(КонтактнаяИнформация.Представление, 0, 200)) КАК Представление
ПОМЕСТИТЬ ВТ_КонтактнаяИнформация
ИЗ
    ВТ_ОбщееФизЛица КАК ВТ_ОбщееФизЛица
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО ВТ_ОбщееФизЛица.ФИО = КонтактнаяИнформация.Объект
            И (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
            И (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресФизЛица))

СГРУППИРОВАТЬ ПО
    КонтактнаяИнформация.Вид

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

ВЫБРАТЬ
    КонтактнаяИнформация.Вид,
    МАКСИМУМ(ПОДСТРОКА(КонтактнаяИнформация.Представление, 0, 200))
ИЗ
    ВТ_ОбщееФизЛица КАК ВТ_ОбщееФизЛица
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО ВТ_ОбщееФизЛица.ФИО = КонтактнаяИнформация.Объект
            И (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
            И (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонФизЛица))

СГРУППИРОВАТЬ ПО
    КонтактнаяИнформация.Вид
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ОбщееФизЛица.ФИО,
    ВТ_ОбщееФизЛица.ДатаРождения,
    ВТ_ОбщееФизЛица.МестоРождения,
    ВТ_ОбщееФизЛица.ИНН,
    ВТ_ОбщееФизЛица.СтраховойНомерПФР,
    ВТ_ОбщееПаспортныеДанные.ФизЛицо,
    ВТ_ОбщееПаспортныеДанные.ДокументВид,
    ВТ_ОбщееПаспортныеДанные.СерияПаспорта,
    ВТ_ОбщееПаспортныеДанные.НомерПаспорта,
    ВТ_ОбщееПаспортныеДанные.ДатаВыдачи,
    ВТ_ОбщееПаспортныеДанные.КемВыдан,
    ВТ_ОбщееПаспортныеДанные.КодПодразделения,
    ВТ_ОбщееПаспортныеДанные.ДатаРегистрацииПоМестуЖительства,
    ВТ_КонтактнаяИнформация.АресИлиТелефон,
    ВТ_КонтактнаяИнформация.Представление,
    СемейноеПоложениеФизЛицСрезПоследних.СемейноеПоложение
ИЗ
    ВТ_ОбщееФизЛица КАК ВТ_ОбщееФизЛица,
    РегистрСведений.СемейноеПоложениеФизЛиц.СрезПоследних(
            ,
            ФизЛицо В
                (ВЫБРАТЬ
                    ВТ_ОбщееФизЛица.ФИО
                ИЗ
                    ВТ_ОбщееФизЛица КАК ВТ_ОбщееФизЛица)) КАК СемейноеПоложениеФизЛицСрезПоследних,
    ВТ_ОбщееПаспортныеДанные КАК ВТ_ОбщееПаспортныеДанные,
    ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация
1 Amra
 
08.10.18
17:03
Зачем тебе данные по физикам, которые никогда не работали у вас, или которые были уволены при царе горохе?
2 ILM
 
гуру
08.10.18
17:05
Делай внутреннее соединение физлиц и регистров, нефиг в реестр передавать кучу физлиц.
3 timurhv
 
08.10.18
17:06
(0) Последний пакет - ад
4 lodger
 
08.10.18
17:07
(0) у вас последний пакет недописан.
5 lodger
 
08.10.18
17:07
(0) выбирать все по всем - признак хренового тз.
6 inkvizitr
 
08.10.18
17:09
(1) задача стоит пройтись по всем реквизитам физ лиц и проверить заполнены ли реквизиты, вот думаю как реализовать, да последний пакет действительно не дописан. извеняюсь
7 lodger
 
08.10.18
17:11
(6) у вас возможны ситуации, когда по физлицу данные на дату А заполнены, а на дату Б спустя N-времени уже не заполнены?
8 lodger
 
08.10.18
17:12
(7) если нет, тогда зачем по ним искать информацию каждый раз так, чтобы было важно быстродействие?
9 dka80
 
08.10.18
17:14
Выполнил твой запрос (кроме последнего недописанного) в базе из 1500 человек. Время выполнения - сотые секунды. Может проблема не запросе?
10 lodger
 
08.10.18
17:16
(0) самый скучный для субд запрос в этом пакете это контактная информация.
он сперва присоединит ко ВСЕМ ссылкам на физлица адреса, потом сгруппирует вокруг ссылки и сделает максимум, потом присоединит ко ВСЕМ ссылкам на физлица телефоны, потом потом сгруппирует вокруг ссылки и сделает максимум, потом объединит эти два колхоза.
вот его точно можно оптимизировать.
11 inkvizitr
 
08.10.18
17:17
(8) если вы про регистр сведений срез последних, то в моем случаи, если человек меняет фамилию, чтобы проверял по актуальной фамилии на последнею дату
12 inkvizitr
 
08.10.18
17:17
(9) Родителя указывал
13 inkvizitr
 
08.10.18
17:17
у тебя в родителе, 1500 человек
14 youalex
 
08.10.18
17:18
(3) +1
фулл джойн четырех таблиц. можно представить, что с базой происходит, если физиков порядочно.
15 dka80
 
08.10.18
17:20
(9) не указывал. Убрал это условие
16 dka80
 
08.10.18
17:21
+15 а сейчас указал. Монописуально запрос выполняется мнгновенно
17 inkvizitr
 
08.10.18
17:22
(16) Действительно, убрал контактную информацию, стал работать на ура, буду думать, че делать с контактной информацией
18 inkvizitr
 
08.10.18
17:22
и переписал последний пакет
19 youalex
 
08.10.18
17:38
(17) в КИ группировка не нужна, т.к. ты цепляешь по ключу Объект/Вид/Тип

И объединение не нужно, просто в результирующем запросе этот РС левосоединяешь два раза (по тел. и адресу) и все.