Отбор по полю составного типа в запросе. Оптимизация #530614


#0 by warit
Здравствуйте! Есть запрос: "ВЫБРАТЬ    _ЗагруженныеОбъекты.Объект КАК Объект ИЗ    Справочник._ЗагруженныеОбъекты КАК _ЗагруженныеОбъекты ГДЕ    _ЗагруженныеОбъекты.Объект.Дата МЕЖДУ &ДатаНач И &ДатаКон" Т.к. Объект - реквизит составного типа (20 видов документов), то запрос долго выполняется, хотя реквизит "дата" является общим для всех документов. Если хранить дату объекта в отдельном реквизите, то при каждой записи этого объекта (любого из 20 видов документов) реквизит нужно будет перезаписывать. Как можно оптимизировать данный запрос на отбор по реквизиту "дата" (без добавления нового реквизита в справочник "_ЗагруженныеОбъекты")?
#1 by warit
Платформа 8.1
#2 by F13
Попробуйте использовать РС в который пишет документ при проведении. Отбор по дате документа через точку - вот что тормозит.
#3 by Dmitrii
>> то при каждой записи этого объекта (любого из 20 видов документов) реквизит нужно будет перезаписывать. В этом нет ни чего страшного. Сделай одну подписку на твои 20 документов на событие ПередЗаписью. Можно еще подумать о создании регистра сведений. Но это уже зависит от конкретной задачи. >> Т.к. Объект - реквизит составного типа (20 видов документов), то запрос долго выполняется А что ты хотел от соединения с 20-тью таблицами? Со временем будет только хуже. Если заранее известен тип искомого документа, то можно попробовать добавить условие "ССЫЛКА".
#4 by warit
ясно что отбор по дате тормозит. В сосавном типе разные виды документов и двигают разные РС или регистры накопления.
#5 by warit
"Если заранее известен тип искомого документа, то можно попробовать добавить условие "ССЫЛКА"." Для всех документов используется отбор. "Сделай одну подписку на твои 20 документов на событие ПередЗаписью." При записи этих документов нужно будет проверять - входит ли этот документ в справочник "_ЗагруженныеОбъекты", т.е. делать запрос к БД, что не хорошо.
#6 by Maxus43
В сторону Жрунала документов посмотреть если? там тоже куча документов и отбор по периоду тоже есть для всех
#7 by warit
Т.е. закинуть все виды документов (из реквизита составного типа) в ноый журанл документов и соединять потом в запросе со справочником _ЗагруженныеОбъекты?
#8 by Dmitrii
>> При записи этих документов нужно будет проверять - входит ли этот документ в справочник "_ЗагруженныеОбъекты", т.е. делать запрос к БД, что не хорошо. Не вижу ни какой проблемы. Во-первых, такой запрос необходимо делать только если документ не новый. Во-вторых, записывая конкретный документ ты знаешь его тип и соответственно можешь сразу установить соответствующий отбор. Вариант второй - все-таки сделать регистр сведений.
#9 by НЕА123
интересно, а если явно, через ОБЪЕДИНИТЬ попробовать "ВЫБРАТЬ Док1.Ссылка ИЗ    Документ.Док1 КАК Док1        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Загруженные КАК Загруженные        ПО Док1.Ссылка = Загруженные.Объект И Док1.Дата МЕЖДУ &ДатаНач И &ДатаКон ОБЪЕДИНИТЬ ВСЕ Док2.Ссылка .........................."
#10 by Dmitrii
+1 кстати вариант. Правда документов многовато (20 шт), но можно попробовать.
#11 by warit
"Во-первых, такой запрос необходимо делать только если документ не новый. Во-вторых, записывая конкретный документ ты знаешь его тип и соответственно можешь сразу установить соответствующий отбор." Этот запрос нужно делать всегда. Пример: документ вида "Приходная накладная" может быть создан в БД пользователем и поэтому не записан в справочник "_ЗагруженныеОбъекты" (т.к. в этот справочник попадают документы только загруженные из внешней базы) "Вариант второй - все-таки сделать регистр сведений" Какой регистр сведений?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С