|
Долгое выполнение запроса по свойствам Контрагента в УПП | ☑ | ||
---|---|---|---|---|
0
ANDRU48
25.08.11
✎
19:41
|
Создал документ в УПП по заданию заказчика, есть табличная часть в ней контрагент и дальше три свойства контрагента, к примеру центр продаж, канал сбыта и территория.
Хочу,чтобы при изменении контрагента остальные три поля заполнились автоматически. Пишу запрос к РегиструСведений ЗначениеСвойствОбъектов, там есть все это. Из запрос беру значение свойства по условию, что Объект регистра равен, тому контрагенту, которго мы выбрали перед (ПриИзменении), и название Свойства равно переменной (вначале в переменную заношу соответственно строку, к примеру "Центр продаж"). И так три запроса со своими параметрами к трем свойствам контрагента. Выбирает правильно, но запрос выполняется очень долго. Посмотрел записи в регистре их там много (не только для Контрагентов, но и для Номенклатура, вообщем везде, где можно заводить дополнительное свойство). Все поперетыкал, как ускорить запрос, чтобы клиент не ждал после выбора контрагента (когда же у него заполнятся остальные части!). Что посоветуете? Если надо могу завтра сам запрос скинуть для наглядности. |
|||
1
ANDRU48
25.08.11
✎
19:43
|
А ещё вот что, если в консоли отлаживаю, то выбирает не очень долго. А если через обычный запуск, то долго.
|
|||
2
Drock
26.08.11
✎
04:57
|
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Объект", Номенклатура); Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("7.СрокХранения")); Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект, | ЗначенияСвойствОбъектов.Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект = &Объект | И ЗначенияСвойствОбъектов.Свойство = &Свойство"; РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Область.Параметры.СрокХранения = "1 год."; Иначе Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.Прямой); Пока ВыборкаМестаРаботы.Следующий() Цикл Область.Параметры.СрокХранения = Выборка.Значение; КонецЦикла; КонецЕсли; |
|||
3
Drock
26.08.11
✎
04:59
|
а вообще отладчик в руки + замер производительности - увидиш где грабли в коде.
|
|||
4
guitar_player
26.08.11
✎
05:43
|
>>>И так три запроса со своими параметрами к трем свойствам контрагента.
сдела |
|||
5
guitar_player
26.08.11
✎
05:43
|
*й один запрос.
Не ищи по наименованию, будь мужиком бл*ать! |
|||
6
guitar_player
26.08.11
✎
05:44
|
и вообще код в студию
|
|||
7
ANDRU48
26.08.11
✎
15:34
|
(3) сегодня с утра час танце с отладчиком и консолью и вуяля все получилось, почти как в (1) и тоже ситуация, как в (4). В итоге запрос получился как в (2), только после запроса, я в цикле проверяю и присваиваю значение, а то в запросе такого параметра "ЗначенияСвойствОбъектов.Свойство.Наименование" не было, а мне именно такой надо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |