Под некоторыми пользователями долго выполняется поиск по табличной части документа

1. BullTi 18.07.24 12:19 Сейчас в теме
Добрый день, есть печатная форма реализованная через расширение и БСП, она выводит на печать реквизиты документа, так же в печатной форме есть реквизит который выводится при наличии в Табличной части определенного пункта. Поиск этого пункта выполняю через метод Найти. Так вот проблема в том что если я вывожу на печать этот документ из под учетки с полными правами, он выводится около секунды, а если вывожу под пользователем без полных прав, но с полными правами на этот документ, он выводится около 30 секунд. В замере производительности тормозит на методе Найти в табличной части. Хочется понять почему там поиск выполняется дольше в несколько десятков раз у остальных пользователей? Пробовал на одном компе. В какую сторону копать? Я уже не представляю даже. База клиент-серверная, на MSSQl/
По теме из базы знаний
Найденные решения
6. Sashares 35 18.07.24 14:40 Сейчас в теме
12. IDKFAIDDQD 19.07.24 02:20 Сейчас в теме
Как уже написали скорее всего рлс. Можно попробовать поставить привелигированный режим на время выполнения процедуры с проблемным кодом, что наверное закроет эту проблему, но не очень красиво

Правильный варинат - изменить подход к получению данных. Сделайте запрос по массиву входящих на печать объектов и там один раз получайте все данные, без переборов и постобработки далее. Как вариант реализации можно посмотреть на печать СФ в УТ
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. SAShikutkin 14 18.07.24 14:52 Сейчас в теме
(1)
Табличная часть (Tabular section)
Найти (Find)
Синтаксис:
Найти(<Значение>, <Колонки>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Искомое значение.
<Колонки> (необязательный)
Тип: Строка.
Список имен колонок, в которых будет осуществляться поиск, разделенных запятыми.
Если параметр не указан, поиск осуществляется по всей табличной части.
Значение по умолчанию: Пустая строка.
Показать


Может указать колонку?
9. BullTi 18.07.24 14:59 Сейчас в теме
(7) Не помогает к сожалению
2. user1880116 18.07.24 12:39 Сейчас в теме
Код, конечно, показывать никто не собирается.
3. BullTi 18.07.24 14:06 Сейчас в теме
МаршрутСварка = Спецификация.Маршруты.Найти(МаршрутыСварки.Сварка);
Если МаршрутСварка <> Неопределено Тогда
	ПрисутствуетСварка = Истина;
КонецЕсли;


Обычный метод "Найти", "Спецификация" - элемент справочника, "Маршруты" - табличная часть, а "ПрисутствуетСварка" = булево.

"МаршрутыСварки.Сварка" это структура, в поиск передаю другой элемент справочника, который является реквизитом ТЧ Маршруты.

Просто мне непонятно почему от админа - быстро, под пользователем - долго.
4. Vlan 36 18.07.24 14:22 Сейчас в теме
(3)
Просто мне непонятно почему от админа - быстро, под пользователем - долго.


А пользователю полные права давали, и стало быстро?
5. BullTi 18.07.24 14:40 Сейчас в теме
(4) Да, в том и дело что под полными сразу летает, все одинаково и учетка 1С, компов пробовал несколько, пробовал напрямую на сервере по RDP, именно с правами админа летает, только убираю права админа, ничего больше не меняя, сразу медленнее. Пробовал и наоборот с перезагрузкой сервера, запускал без прав, потом давал права админа, пробовал делать несколько раз подряд, убирал/ставил права, один и тот же результат. Пробовал и с отладкой запускать под пользователем без прав, все равно медленно.
6. Sashares 35 18.07.24 14:40 Сейчас в теме
8. BullTi 18.07.24 14:58 Сейчас в теме
(6) Да я скорее всего так и буду делать, просто не понимаю почему стандартный метод так странно работает, при том что я пробовал давать права пользователю все права на документы и справочники которые связаны, а потом дал права на все документы и справочники которые связанны со связанными документами(простите за каламбур).
11. user1880116 18.07.24 21:57 Сейчас в теме
(3)
Спецификация
Какой тип у этой переменной?
10. hobbit94 18.07.24 15:36 Сейчас в теме
12. IDKFAIDDQD 19.07.24 02:20 Сейчас в теме
Как уже написали скорее всего рлс. Можно попробовать поставить привелигированный режим на время выполнения процедуры с проблемным кодом, что наверное закроет эту проблему, но не очень красиво

Правильный варинат - изменить подход к получению данных. Сделайте запрос по массиву входящих на печать объектов и там один раз получайте все данные, без переборов и постобработки далее. Как вариант реализации можно посмотреть на печать СФ в УТ
13. BullTi 23.07.24 16:38 Сейчас в теме
(12) У меня на самом деле используется рекурсия, т.к. в табличной части - ресурсные спецификации, у них разный уровень вложенности, поэтому получаю данные рекурсией, поэтому и не могу сразу получить все данные запросом. Сделал запрос в отдельной функции, вызываю его, получаю результат при каждой итерации.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот