1. n_spb 29.12.18 11:31 Сейчас в теме

Помогите оптимизировать запрос.

ЗУП 3.1.7. Помогите оптимизировать запрос.
ВЫБРАТЬ
    ВЫРАЗИТЬ(ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор КАК Документ.ТабельУчетаРабочегоВремени) КАК Регистратор
ИЗ
    ВТФизичискиеЛицаПодразделения КАК ВТФизичискиеЛицаПодразделения
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК ДанныеТабельногоУчетаРабочегоВремениСотрудников
        ПО ВТФизичискиеЛицаПодраздкленияУПР.СотрудникФизическоеЛицо = ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник.ФизическоеЛицо
            И ВТФизичискиеЛицаПодразделения.ПодразделениеКод = ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.Подразделение.Код
            И ВТФизичискиеЛицаПодразделения.ПериодРегистрации = ДанныеТабельногоУчетаРабочегоВремениСотрудников.ПериодРегистрации
            И ВТФизичискиеЛицаПодразделения.ДатаНачалаПериода <= ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.ДатаНачалаПериода
            И ВТФизичискиеЛицаПодразделения.ДатаОкончанияПериода >= ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.ДатаОкончанияПериода
ГДЕ
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.Организация.ИНН = &ИНН 
СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор КАК Документ.ТабельУчетаРабочегоВремени)
Показать
Ответы
Избранное Подписка Сортировка: Древо
10. user700035_6550355 17 03.01.19 08:17 Сейчас в теме
(1) Обе таблицы во временные таблицы и индексируйте по полям соединения
13. bashirov.rs 19 05.01.19 23:07 Сейчас в теме
(10) Не всегда индексирование нужно, в некоторых случаях может быть обратный эффект. Надо к каждому случаю подходить отдельно. Хотя не призываю отказываться от индексирования временных таблиц.

(1) Обращение через точку порождают дополнительные неявные запросы. Сказал бы еще, что необходимо сделать как пишут в (2), но как я понимаю это еще не весь запрос, который вы оптимизируете, а его маленькая часть. Так что картину лучше смотреть всю.
2. DNN13 29.12.18 11:45 Сейчас в теме
1) выбрать во временную таблицу всех сотрудников по нужным физ. лицам
2) выбрать во временную таблицу все табели учета рабочего времени с отбором по подразделению и датам
3) из регистра выбирать с отбором по временным таблицам полученным на 1 и 2 шагах, + отбор по периоду регистрации и организации. Именно организации, а не ИНН, то есть при установке параметра нужно передавать ссылку на организацию, которую нужно найти по ИНН
user614822; +1 Ответить
5. n_spb 29.12.18 15:43 Сейчас в теме
(2) Посмотрите пожалуйста сделал так:
ВЫБРАТЬ
    ВЫРАЗИТЬ(ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор КАК Документ.ТабельУчетаРабочегоВремени) КАК Регистратор
ИЗ
    ВТФизЛицаИПодразделения КАК ВТФизЛицаИПодразделения
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК ДанныеТабельногоУчетаРабочегоВремениСотрудников
        ПО ВТФизЛицаИПодразделения.СотрудникФизическоеЛицо = ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник.ФизическоеЛицо
            И ВТФизЛицаИПодразделения.ПодразделениеРеглСсылка = ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.Подразделение
            И ВТФизЛицаИПодразделения.ПериодРегистрации = ДанныеТабельногоУчетаРабочегоВремениСотрудников.ПериодРегистрации
            И ВТФизЛицаИПодразделения.ДатаНачалаПериода <= ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.ДатаНачалаПериода
            И ВТФизЛицаИПодразделения.ДатаОкончанияПериода >= ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.ДатаОкончанияПериода
ГДЕ
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.Организация В
            (ВЫБРАТЬ
                ВТОрганизация.Ссылка КАК Ссылка
            ИЗ
                ВТОрганизация КАК ВТОрганизация)
 
СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор КАК Документ.ТабельУчетаРабочегоВремени)
Показать
Не понятно как отобрать по организации, в ВТОрганизация получаю ссылку из справочника организации по ИНН, как сделать равенство не знаю сделал через В.
Как правильно получить сотрудников по физ лицам пока тоже не придумал, подскажите?
3. user614822 25 29.12.18 12:12 Сейчас в теме
Погтому что тормозит именно из вот этого куска

ГДЕ
ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор.Организация.ИНН = &ИНН
6. triviumfan 10 29.12.18 19:17 Сейчас в теме
(3) Думаю, что там у каждого регистратора есть организация, поэтому точно не "этот кусок":)
4. IgorXml 575 29.12.18 15:02 Сейчас в теме
вместо "ДанныеТабельногоУчетаРабочегоВремениСотрудников" писать "РН"
7. triviumfan 10 29.12.18 19:21 Сейчас в теме
Хоть бы назвал что за конфа, структуру регистров, логику...
8. n_spb 30.12.18 09:21 Сейчас в теме
(7) Первое сообщение начинается с названия конфигурации. ЗУП 3.1.7.
9. timeforlive 12 01.01.19 11:10 Сейчас в теме
В вашем регистре накопления точно нет поля "Организации", чтобы условие поставить в параметры регистра?

Если прямо таки вам нужно обратиться к Регистратор.Организации, то попробуйте сначала сформировать временную таблицу, в которой через внутреннее соединение Регистра накопления и справочника "Организации" получите весь список данных.

Обязательно во временной таблице вытащите поля:
Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо 
Регистратор.Подразделение КАК Подразделение
Регистратор.ДатаНачалаПериода КАК ДатаНачалаПериода 
Регистратор.ДатаОкончанияПериода КАК ДатаОкончанияПериода


чтобы не обращаться к ним через точку, иначе 1С будет формировать неявно новые запросы.

Удачи!
11. dmarenin 204 05.01.19 09:25 Сейчас в теме
(0) может с плана запроса стоит начать?
14. n_spb 10.01.19 09:51 Сейчас в теме
(11) Напишите пожалуйста подробней.
20. dmarenin 204 10.01.19 16:50 Сейчас в теме
(14) прежде чем что-то делать нужно понять в чем проблема. что касается вопроса оптимизации запроса нужно понять как он строится в этом может помочь план запроса(в нем видно какие операции выполняются, сколько это занимает времени и тд)
12. vlad-k 05.01.19 13:02 Сейчас в теме
зачем брать данные из регистра и регистратора этого регистра одновременно? Нужно что-то одно.Допустим из регистратора-
"ВЫБРАТЬ
|	ТабельФизЛица.Ссылка КАК Регистратор
|ИЗ
|	ВТФизичискиеЛицаПодразделения КАК ВТФизичискиеЛицаПодразделения
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ТабельУчетаРабочегоВремени.ФизическиеЛица КАК ТабельФизЛица
|		ПО ВТФизичискиеЛицаПодразделения.ПодразделениеКод = ТабельФизЛица.Ссылка.Подразделение.Код
|			И ВТФизичискиеЛицаПодразделения.ПериодРегистрации = ТабельФизЛица.Ссылка.ПериодРегистрации
|			И ВТФизичискиеЛицаПодразделения.ДатаНачалаПериода <= ТабельФизЛица.Ссылка.ДатаНачалаПериода
|			И ВТФизичискиеЛицаПодразделения.ДатаОкончанияПериода >= ТабельФизЛица.Ссылка.ДатаОкончанияПериода
|			И ВТФизичискиеЛицаПодразделения.СотрудникФизическоеЛицо = ТабельФизЛица.ФизическоеЛицо
|ГДЕ
|	ТабельФизЛица.Ссылка.Проведен
|	И ТабельФизЛица.Ссылка.Организация В
|			(ВЫБРАТЬ
|				ВТОрганизация.Ссылка КАК Ссылка
|			ИЗ
|				ВТОрганизация КАК ВТОрганизация)"
Показать


Тут есть варианты этого запроса.Но кардинально думаю поймете в чем речь.Непосредственно связываем таблицу физлиц тебеля с вашей временной.Ну и на реквизиты условия.Возможно для оптимальности можно кое-что поменять местами,но по сути ,примерно так.
15. n_spb 10.01.19 09:55 Сейчас в теме
(12) Слышал мнение, что обращаться напрямую к документам это ошибка и нужно брать данные из регистров. Так ли это?
16. vlad-k 10.01.19 11:55 Сейчас в теме
(15)сбросьте источник информации
17. SlavaKron 10.01.19 12:23 Сейчас в теме
(16)
Получение расчетных данных не из регистра.
Единственной достоверной информацией в системе учета следует считать информацию регистров. Информация из документов может рассматриваться лишь как вспомогательная и не может быть абсолютно достоверной.

http://static.1c.ru/rus/partners/training/files/ATT83PL.rtf
19. vlad-k 10.01.19 13:27 Сейчас в теме
(17)да,согласен.В общем случае.Но если досконально знаешь прикладную часть этой темы.И как формируются движения,то тот небольшой процент достоверности можно учесть.
Мало того,иногда записи регистров некорректные.Посмотрите за посл.10 дней проблемы по зарплате здесь,по возвратам по уходу-2 раза были проблемы.У меня не раз такое было.Документ верен,записи состояний не верны.
Это моя большая ложка дегтя на вашу статейную бочку меда.

Я бы не стал так заверять и обнадеживать пользователей и программистов(начинающих).Теоретически ошибки везде могут быть и при формировании записей регистров тоже.
18. n_spb 10.01.19 12:51 Сейчас в теме
(16) Именно из этого документа что в 17.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 120 000 руб.
Полный день

Аналитик 1С
Санкт-Петербург
зарплата от 80 000 руб.
Полный день

Программист 1С
Самара
зарплата от 50 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день