По теме из базы знаний
- История оптимизации одного большого запроса средствами MSSQL Profiler и 1С
- Неоплаченные долги при распределении оплаты по правилу ФИФО одним запросом и намного быстрее, чем Вы думали
- Консоль запросов к базе Oracle для 1С, без использования специализированных программ
- Оптимизатор запроса. Часть первая
- Как читать чужой код? Часть 3. Разбор и доработка запросов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) KSy, Не могу вообще сформировать запрос. Такой запрос выдает все задачи по бизнес процессам, а мне надо только последнюю задачу привязанную к Бизнес процессу.
ВЫБРАТЬ
CRM_Продажа.Ссылка
ПОМЕСТИТЬ БП
ИЗ
БизнесПроцесс.CRM_Продажа КАК CRM_Продажа
ГДЕ
CRM_Продажа.Стартован = ИСТИНА
И CRM_Продажа.Завершен = ЛОЖЬ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
CRM_Задача.Ссылка,
БП.Ссылка КАК Ссылка1
ИЗ
БП КАК БП
ЛЕВОЕ СОЕДИНЕНИЕ Задача.CRM_Задача КАК CRM_Задача
ПО (CRM_Задача.БизнесПроцесс = БП.Ссылка)
Показать
(5) Dos_1985, попробуй так, только CRM у меня нет проверить не мог. Вместо "Дата" в CRM_Задача.Дата укажи реквизит в котором хранится дата исполнения задачи.
ВЫБРАТЬ
CRM_Задача.БизнесПроцесс,
МАКСИМУМ(CRM_Задача.Дата) КАК Дата
ПОМЕСТИТЬ БП
ИЗ
Задача.CRM_Задача КАК CRM_Задача
ГДЕ
CRM_Задача.БизнесПроцесс.Стартован
И НЕ CRM_Задача.БизнесПроцесс.Завершен
СГРУППИРОВАТЬ ПО
CRM_Задача.БизнесПроцесс
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
CRM_Задача.Ссылка,
БП.БизнесПроцесс КАК Ссылка1
ИЗ
БП КАК БП
ЛЕВОЕ СОЕДИНЕНИЕ Задача.CRM_Задача КАК CRM_Задача
ПО (CRM_Задача.БизнесПроцесс = БП.БизнесПроцесс И CRM_Задача.Дата = БП.Дата)
Показать
Оптимальнее во вложенный запрос (в SQL версии временные таблицы в TempDB на диске, а не в ОЗУ):
Это если без конструктора и конфы под рукой. Тут главное через точку лишний раз не обращаться.
Труден в отладке (только консолью запросов, которая покажет результат вложенного запроса), зато УПП будет летать. Еще проиндексировать по объединяемым полям вложенный запрос.
ВЫБРАТЬ
CRM_Задача.Ссылка КАК Задача1,
БПСсылка КАК БизнесПроцесс1
ИЗ
( ВЫБРАТЬ
CRM_Задача.БизнесПроцесс КАК БПСсылка,
МАКСИМУМ(CRM_Задача.Дата) КАК БПДата
ИЗ
Задача.CRM_Задача КАК CRM_Задача
ГДЕ
CRM_Задача.БизнесПроцесс.Стартован
И НЕ CRM_Задача.БизнесПроцесс.Завершен
СГРУППИРОВАТЬ ПО
CRM_Задача.БизнесПроцесс) КАК БП
ЛЕВОЕ СОЕДИНЕНИЕ Задача.CRM_Задача КАК CRM_Задача
ПО (CRM_Задача.БизнесПроцесс = БП.БПСсылка И CRM_Задача.Дата = БП.Дата)
ПоказатьЭто если без конструктора и конфы под рукой. Тут главное через точку лишний раз не обращаться.
Труден в отладке (только консолью запросов, которая покажет результат вложенного запроса), зато УПП будет летать. Еще проиндексировать по объединяемым полям вложенный запрос.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот