Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Быстродействие запроса в 1С ЗУП 2.5

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

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

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует