Под некоторыми пользователями долго выполняется поиск по табличной части документа
Добрый день, есть печатная форма реализованная через расширение и БСП, она выводит на печать реквизиты документа, так же в печатной форме есть реквизит который выводится при наличии в Табличной части определенного пункта. Поиск этого пункта выполняю через метод Найти. Так вот проблема в том что если я вывожу на печать этот документ из под учетки с полными правами, он выводится около секунды, а если вывожу под пользователем без полных прав, но с полными правами на этот документ, он выводится около 30 секунд. В замере производительности тормозит на методе Найти в табличной части. Хочется понять почему там поиск выполняется дольше в несколько десятков раз у остальных пользователей? Пробовал на одном компе. В какую сторону копать? Я уже не представляю даже. База клиент-серверная, на MSSQl/
По теме из базы знаний
- [8.3] Журнал документов по контрагенту для БП 3.0 + Восстановление последовательности проведения документов контрагента
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика
- Этюды по программированию: Хитрости создания расширений для конфигураций на БСП. Часть 3
Найденные решения
Как уже написали скорее всего рлс. Можно попробовать поставить привелигированный режим на время выполнения процедуры с проблемным кодом, что наверное закроет эту проблему, но не очень красиво
Правильный варинат - изменить подход к получению данных. Сделайте запрос по массиву входящих на печать объектов и там один раз получайте все данные, без переборов и постобработки далее. Как вариант реализации можно посмотреть на печать СФ в УТ
Правильный варинат - изменить подход к получению данных. Сделайте запрос по массиву входящих на печать объектов и там один раз получайте все данные, без переборов и постобработки далее. Как вариант реализации можно посмотреть на печать СФ в УТ
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Может указать колонку?
Табличная часть (Tabular section)
Найти (Find)
Синтаксис:
Найти(<Значение>, <Колонки>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Искомое значение.
<Колонки> (необязательный)
Тип: Строка.
Список имен колонок, в которых будет осуществляться поиск, разделенных запятыми.
Если параметр не указан, поиск осуществляется по всей табличной части.
Значение по умолчанию: Пустая строка.
ПоказатьНайти (Find)
Синтаксис:
Найти(<Значение>, <Колонки>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Искомое значение.
<Колонки> (необязательный)
Тип: Строка.
Список имен колонок, в которых будет осуществляться поиск, разделенных запятыми.
Если параметр не указан, поиск осуществляется по всей табличной части.
Значение по умолчанию: Пустая строка.
Может указать колонку?
МаршрутСварка = Спецификация.Маршруты.Найти(МаршрутыСварки.Сварка);
Если МаршрутСварка <> Неопределено Тогда
ПрисутствуетСварка = Истина;
КонецЕсли;
Обычный метод "Найти", "Спецификация" - элемент справочника, "Маршруты" - табличная часть, а "ПрисутствуетСварка" = булево.
"МаршрутыСварки.Сварка" это структура, в поиск передаю другой элемент справочника, который является реквизитом ТЧ Маршруты.
Просто мне непонятно почему от админа - быстро, под пользователем - долго.
(4) Да, в том и дело что под полными сразу летает, все одинаково и учетка 1С, компов пробовал несколько, пробовал напрямую на сервере по RDP, именно с правами админа летает, только убираю права админа, ничего больше не меняя, сразу медленнее. Пробовал и наоборот с перезагрузкой сервера, запускал без прав, потом давал права админа, пробовал делать несколько раз подряд, убирал/ставил права, один и тот же результат. Пробовал и с отладкой запускать под пользователем без прав, все равно медленно.
(6) Да я скорее всего так и буду делать, просто не понимаю почему стандартный метод так странно работает, при том что я пробовал давать права пользователю все права на документы и справочники которые связаны, а потом дал права на все документы и справочники которые связанны со связанными документами(простите за каламбур).
Как уже написали скорее всего рлс. Можно попробовать поставить привелигированный режим на время выполнения процедуры с проблемным кодом, что наверное закроет эту проблему, но не очень красиво
Правильный варинат - изменить подход к получению данных. Сделайте запрос по массиву входящих на печать объектов и там один раз получайте все данные, без переборов и постобработки далее. Как вариант реализации можно посмотреть на печать СФ в УТ
Правильный варинат - изменить подход к получению данных. Сделайте запрос по массиву входящих на печать объектов и там один раз получайте все данные, без переборов и постобработки далее. Как вариант реализации можно посмотреть на печать СФ в УТ
(12) У меня на самом деле используется рекурсия, т.к. в табличной части - ресурсные спецификации, у них разный уровень вложенности, поэтому получаю данные рекурсией, поэтому и не могу сразу получить все данные запросом. Сделал запрос в отдельной функции, вызываю его, получаю результат при каждой итерации.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот