Имя: Пароль:
1C
1С v8
Тормозит простая функция с директивой &НаСервере [решено с помощью &НаСервереБезКонтекста]
0 Олдж
 
14.07.20
20:42
Добрый день, началось всё с того, что вроде бы простая обработка выполняется непозволительно долгое время.
Замер производительности показал 95% времени выполняется одна функция.
В этой функции одна единственная строка:

Возврат Справочники.Номенклатура.НайтиПоРеквизиту("Код77",КодНоменклатуры77).Ссылка;

Реквизит Код77 индексированный. В ходе эксперимента оставил в этой функции одну строку Возврат 0; - производительность не изменилась.
В самой функции время выполнения меньше секунды, а в процедуре на клиенте эта функция возвращает значение секунду и более.

Вопрос: как исправить ситуацию в лучшую сторону ?
1 acht
 
14.07.20
20:46
Уменьшить число контекстых вызовов, количество данных контекстф формы и т.п.
2 acht
 
14.07.20
20:47
1) Используй вместо &НаСервере &НаСервереБезКонтекста
2) Убери наъ .Ссылка от результата поиска по реквизиту
3 acht
 
14.07.20
20:48
3) Ищи сразу все нужные данные одним заходом на сервер, без дерганья в цикле
4 Олдж
 
14.07.20
20:50
(2) ага, без контекста помогло. Спасибо. А можно уточнить почему так ?
5 acht
 
14.07.20
20:52
(4) У тебя очень "толстая" форма, очевидно есть табличная часть с большим числом строк. При каждом контекстном вызове (который &НаСервере) это барахло едет на сервер. При возврате из функции - обратно на клиент.
6 acht
 
14.07.20
20:53
Вот ты производительности сериализатора и сети и замеряешь
7 Олдж
 
14.07.20
20:54
(5) Да так и есть.

Благодарю за разъяснение
8 Злопчинский
 
14.07.20
23:49
(2) "Убери наъ .Ссылка от результата поиска по реквизиту" - почему?
Возврат Справочники.Номенклатура.НайтиПоРеквизиту("Код77",КодНоменклатуры77).Ссылка - здесь возвращается ссылка
Возврат Справочники.Номенклатура.НайтиПоРеквизиту("Код77",КодНоменклатуры77) - здесь возвращается объект? -зачем нам обьект если допустим нужна только ссылка? илия неправильно понимаю?
9 Сергиус
 
14.07.20
23:54
(8)НайтиПоРеквизиту и так ссылку возвратит.
10 Злопчинский
 
14.07.20
23:58
(9) хм.. как однако непросто в снеговике.
объект по поиску среди объектов не возвращает? надо как-то принудительно объект получать?
11 Сергиус
 
15.07.20
00:00
(10)Ссылка.ПолучитьОбъект()

Собственно зачем при поиске сам объект то?
12 Злопчинский
 
15.07.20
00:02
(11) согласен. без надобности объект тянуть не надо.
спсб за пояснение
13 Сергиус
 
15.07.20
00:04
(13)было б за что..я смотрю ты в лоно 8-ки не торопишься особо))
14 Злопчинский
 
15.07.20
00:05
(13) а смысл...?
15 Злопчинский
 
15.07.20
00:06
(13) .. чтобы тривиальные вопросы типа в КА2: Списание ДС - задваиваются проводки - превращались в проблему?
16 Сергиус
 
15.07.20
00:12
(15)Отладчик в руки..хотя конечно в КА2 это то еще удовольствие(
17 Злопчинский
 
15.07.20
00:27
(16) в УТ11 или в ЕРП - лучше?
18 Сергиус
 
15.07.20
00:54
(17)В УТ 10.3 неплохо было)
19 Злопчинский
 
15.07.20
02:51
(18) но это ж древнее как г... мамонта ;-)
20 Сергиус
 
15.07.20
13:33
(19)а 7.7 ТиС как тогда?)
21 Злопчинский
 
15.07.20
16:21
(20) это как теплое ламповое железо. может и УТ10 когда-то таким станет, но вряд ли
Ошибка? Это не ошибка, это системная функция.