|
Отчет СКД в УП выполняется за 6 секунд, в ОП за 1 секунду. |
☑ |
0
dj_serega
16.12.13
✎
13:19
|
База на MS SQL.
Есть набор данных Партии.
Если выполнять запрос через форму обычного приложения, результат выводится через 1 секунду.
Если выполнять через управляемую форму, на построение запроса требуется больше 6 секунд.
Запрос, как по мне, элементарный. Стек вызовов на УП показал шесть запросов в базу. Каждый больше секунды.
В условиях нет отборов, так как записей в регистре около 30ти.
Текст запроса:
ВЫБРАТЬ
ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования КАК ДокументПартии
{ВЫБРАТЬ
Склад,
Номенклатура,
ДокументПартии}
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты КАК ПартииТоваровНаСкладахОстаткиИОбороты
{ГДЕ
ПартииТоваровНаСкладахОстаткиИОбороты.Склад,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования}
Как такое может быть?
Какое-то СКД в управляемом приложении неуправляемое ;(
|
|
1
Hmster
16.12.13
✎
13:21
|
возможно делается через фоновое задание.
Проверь по журналу
|
|
2
dj_serega
16.12.13
✎
13:22
|
(1) что именно делается через фоновое задание?
|
|
3
Ёпрст
гуру
16.12.13
✎
13:24
|
Это, условия в параметры ВТ не хочешь вложить ?
|
|
4
dj_serega
16.12.13
✎
13:24
|
(2) Фоновое задание выполяет чтото за 3 секунды ;(
|
|
5
banco
16.12.13
✎
13:29
|
|
|
6
dj_serega
16.12.13
✎
13:44
|
УП такое УП.
Для решение текущей задачи пришлось программно формировать отчет.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = ЛОжь;
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
//Создадим и инициализируем процессор компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
//Создадим и инициализируем процессор вывода результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
//Обозначим начало вывода
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
КонецПроцедуры
Итог: 2 вызова - 0,44 секунды.
Спасибо ;)
|
|