|
v7: Запросы Ø (GROOVY 31.10.2013 13:00) | ☑ | ||
---|---|---|---|---|
0
pofigos
31.10.13
✎
11:56
|
Добрый день...
Прошу ответить на очень глупый вопрос, но все же интересующий. 1. Есть ли разница что использовать СоздатьОбъект("ПрямойЗапрос") или СоздатьОбъект("ODBCRecordset"). Если есть разница, то в чем? 2. Так же заметил, что написанный запрос (а он вроде примитивный) просто грузит систему полностью. и пока он не сформируется пользователи сидят в полной транзакции. Возможно, параллельно запускают еще что-то, но нервы уже не выдерживают. Если кривой запрос. укажите в каком месте. ТекстЗапроса = " |SELECT | $ДокПриход.Контрагент [Поставщик $Справочник.Контрагенты] | , $Сотрудники.Филиал [Филиал $Справочник.Подразделение] | , COALESCE($ДокТТН.МОЛ, $ДокАкт.МОЛ, $ДокВозвр.МОЛ) [Склад $Справочник.Склады] | , $ДокТТН.Акция [Акция $Документ.Акция] | , РеализацияОбороты.Покупатель [Покупатель $Справочник.Контрагенты] | , РеализацияОбороты.ТипЦены [ТипЦены $Справочник.ТипыЦен] | , Товары.PARENTID [Родитель $Справочник.ВидыТоваров] | , РеализацияОбороты.Товар [Товар $Справочник.ВидыТоваров] | , Sum(РеализацияОбороты.СуммаПриходнаяОборот) СуммаПриходная | , Sum(РеализацияОбороты.СуммаОборот) СуммаСНДС | , Sum(РеализацияОбороты.СуммаБезНДСОборот) СуммаБезНДС | , Sum(РеализацияОбороты.КоличествоОборот) Количество |FROM $РегистрОбороты.Реализация(:НачДата,:КонДата~,Документ,,Фильтр,( Покупатель,Партия, Товар, ТипЦены, Менеджер),) AS РеализацияОбороты | |LEFT JOIN $Справочник.Сотрудники AS Сотрудники With (NOLOCK) on Сотрудники.id = РеализацияОбороты.Менеджер |LEFT JOIN $Справочник.ВидыТоваров AS Товары With (NOLOCK) on Товары.id = РеализацияОбороты.Товар |LEFT JOIN $Документ.ТТННаОрганизациюТовары as ДокТТН With (NOLOCK) ON RIGHT(РеализацияОбороты.ПозицияДокумента,9) = ДокТТН.IDDoc |LEFT JOIN $Документ.АктПриема as ДокАкт With (NOLOCK) ON RIGHT(РеализацияОбороты.ПозицияДокумента,9) = ДокАкт.IDDoc |LEFT JOIN $Документ.ВозвратИзОрганизацииТоваров as ДокВозвр With (NOLOCK) ON RIGHT(РеализацияОбороты.ПозицияДокумента,9) = ДокВозвр.IDDoc |LEFT JOIN $Справочник.Товары AS СпрТовары With (NOLOCK) on СпрТовары.id = РеализацияОбороты.Партия |LEFT JOIN $Документ.ПриходТоваров as ДокПриход With (NOLOCK) ON RIGHT($СпрТовары.Документ,9) = ДокПриход.IDDoc | |Условия |GROUP BY | $ДокПриход.Контрагент | , $Сотрудники.Филиал | , COALESCE($ДокТТН.МОЛ, $ДокАкт.МОЛ, $ДокВозвр.МОЛ) | , РеализацияОбороты.Покупатель | , РеализацияОбороты.ТипЦены | , Товары.PARENTID | , РеализацияОбороты.Товар | ,$ДокТТН.Акция |"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Условия",Условия); ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Фильтр",Фильтр); //} Запрос.УстановитьТекстовыйПараметр("НачДата", НачДата); Запрос.УстановитьТекстовыйПараметр("КонДата", КонДата); Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ИсхТаб,1); 3. Обращение напрямую к регистрам влияют как-то на блокировки? Нашел просто 2 отчета с запросом не к ВТ а напрямую к регистрам. Буду очень благодарен за помощь. |
|||
1
pofigos
31.10.13
✎
12:00
|
Забыл параметры сервера:
На данный момент Win2003+Sql2005+1C 7.7.27 (не секретный релиз). Intel Xeon E5645, 10 рейд, 40 гиг памяти. в SQL выставлено использование AWE. Память ограничена 30гигами. Паралеллизм стоит 0 |
|||
2
Гефест
31.10.13
✎
12:00
|
Используй nolock, Люк
|
|||
3
КонецЦикла
31.10.13
✎
12:02
|
Прямой запрос - это класс
Если у тебя просто SQL, то можно его не использовать По поводу вышеописанного надо проверить соединения и условия, пройтись профайлером Можно закоментить все кроме ВТ и подсоединять по очереди Настораживает отсутствие в селекте всех этих документов и справочников. Накуя они? В условиях? Может быть поместить это в ВТ? Если очень сложно - поместить в ВТ временную таблицу, собранную по условиям |
|||
4
pofigos
31.10.13
✎
12:04
|
(3) В селекл возвращается поле склад из документов (в регистрах отсутствует) COALESCE($ДокТТН.МОЛ, $ДокАкт.МОЛ, $ДокВозвр.МОЛ)
(2)может я ошибаюсь, но мне всегда казалось With (NOLOCK) и NOLOCK это одно и тоже. |
|||
5
КонецЦикла
31.10.13
✎
12:08
|
Вот поэтому надо начинать с отчетов когда проектируешь регистр :)
|
|||
6
pofigos
31.10.13
✎
12:10
|
(5) увы, проектировали регистры задолго до меня...
|
|||
7
pofigos
31.10.13
✎
12:45
|
Можно закрывать. Просто паника.
|
|||
8
floody
31.10.13
✎
12:54
|
"пользователи сидят в полной транзакции" - улыбнуло, опу так еще никто не называл
|
|||
9
floody
31.10.13
✎
12:57
|
терминал? какое значение имеет счетчик SQL Server:Memory Manager - Total Server Memory?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |