Некоторые замечания по ускорению работы управляемых форм

Началось все с того, что к нам обратился клиент для проведения аудита производительности. Были жалобы на общую производительность системы, а также были обозначены отдельные конкретные операции, которые выполняются долго. О некоторых этих операциях, и о том, как их удалось ускорить и хочу рассказать.

Началось все с того, что к нам обратился клиент для проведения аудита производительности. Были жалобы на общую производительность системы, а также были обозначены отдельные конкретные операции, которые выполняются долго. О некоторых этих операциях, и о том, как их удалось ускорить и хочу рассказать.

Операция 1. Рабочее место менеджера по отгрузке

Есть обработка на управляемых формах, в которой основной элемент – это динамический список.  Данная обработка является критичной для бизнеса, т.к. используется она довольно часто и ее медленная работа влияет на скорость всего бизнес-процесса отгрузки.

Медленно выполняется операция по открытию и обновлению этого динамического списка. Среднее время выполнения этой операции у пользователя с включенным RLS составляло примерно 60 секунд. Данное поведение стабильно воспроизводилось и на копии базы. При работе без RLS скорость увеличивалась до 40 секунд.

Начали делать анализ с замера производительности 1С, однако это не дало никакой информации, т.к. операции по обновлению динамического списка в него не попадают. Тогда стали анализировать с помощью SQL Profiler. Обнаружили, что в этой операции выполняется два долгих запроса, т.к. на данной форме располагаются два динамических списка. Второй динамический список располагался на второй закладке, которая не отображалась при открытии, однако данные тот список получал и при открытии, и при выполнении команды «Обновить» из первого списка.

Также этот второй список получал данные даже дольше первого.

Проанализировав текст запроса, мы увидели, что и для первого, и для второго запроса тексты были громоздкими. В первом запроса было соединено шесть таблиц и вложенные запросы, а во втором использовалось пять таблиц. 
В динамические списки не стоит задавать сложные запросы, т.к. он читает данные курсорным способом (выбирая данные порционно), а на сложных запросах, в которых участвует много таблиц, чтение курсорным способом может не быть выполнена оптимально оптимизатором СУБД. Рекомендация для таких случаев создавать регистр, в который заносить данные для этого динамического списка. Однако мы продолжили дальнейшее исследование.

В тексте второго запроса нашли возможность оптимизации запроса. В тексте использовалось разыменование поля составного типа. Используя конструкцию «ВЫРАЗИТЬ» удалось ускорить операцию открытия списка формы, однако незначительно.

Текст до изменения:

После:

Список до сих пор открывался долго.

В большинстве случаев оператор работали только с первой закладкой, а на вторую даже не переходили, а она отнимала у них время работы.

Мы решили отключить этот список, и включать его только при открытии пользователем этой закладки. Попробовали сначала отключать его с помощью сброса флажка видимость, однако это не помогло. Запрос все равно получал данные, даже не смотря на то, что список был невидим.

Тогда решили заменять текст запроса на «пустышку», и устанавливать его назад, при выборе страницы. Тогда при открытии формы, данные для второго дин.списка не будут получаться до тех пор, пока мы не откроем эту закладку.

В итоге, скорость открытия данной формы возвросла после доработок с 50-60 секунд до 7-10 при проверки открытия пользователем с ограничением по RLS.
Операция 2. Вывод характеристик при подборе товара

Обработка подбора, при выборе номенклатуры, и двойном щелчке на ней, обработка «проваливалась» в выбор остатков по характеристике этой номенклатуры.

Просмотр списка номенклатуры был на приемлемом уровне производительности, однако переход к выбору характеристик мог занимать до 10 секунд. Снятие замеров времени выполнения показало, что среднее время перехода составляет почти 5 секунд, при том что было выполнено почти 5 тысяч операций.

Замер производительности 1С показал, что получаение остатков не занимает много времени, однако при переходе контектса выполнения на сервер уходит бОльшая часть времени выполнения операции.

При анализе кода обработки, мы увидели возможность заменить контекстный вызов функции «ВывестиХарактеристики» на внеконтекстный. Это позволило сократить объем передаваемого трафика между клиентом и сервером и на наших замерах позволило добиться улучшения в два раза, с 5-6 секунд до 2-3.

Операция 3. Динамический список с остатками

Данная операция была определена с помощью сервиска querytj. Она была в топе долгих запросов на первом месте. Вот некоторые данные о самых долгих операциях выполнения данного запроса. Открытие списка доходило до 500 секунд!

Определив по контексту место данного запроса, определили его текст в терминах 1С.

Оказалось, что это довольно-таки простой запрос. Соединение с  виртуальной таблицей остатков не должно было вызывать проблем, т.к. этот запрос должен был соединяться с таблицей текущих остатков. Также по логике работы текущие остатки должны быть незначительными, т.к. заказы должны закрываться, и в остатках должны оставаться только незакрытые строки.

Однако он выполнялся долго. Просматривая текст запроса, мы нашли участок, приводящий к замедлению. Это было как раз обращение к таблице итогов регистра «ЗаказыНаПеремещение».

«Узкое место»

Причиной этого удалось быстро найти. Это были нулевые итоги в этой таблице. Так из 238 тысяч записей текущих итогов, 236 тысяч были нулевыми. Это очень замедляло выполнение данного запроса. Подробнее об этом вопросе рассказано тут.


Для решения этой проблемы нужно было сделать пересчет итогов. Так до пересчета итогов – мы наблюдали долгое открытие списка документов Перемещение товаров, иногда задержка составляла более 60 секунд. Но после пересчета итогов, данный список стал открываться за время менее секунды.

Выводы:

Динамические списки очень удобны для разработчиков, однако не стоит их нагружать слишком сложными запросами. Помните, что они расчитаны на работу с простыми запросами, в которых можно эффективно использовать курсорное чтение (читать данные порциями).

Также, по возможности, используйте внеконтекстные вызовы для форм, особенно, когда эти формы содержать много данных.

Начать дискуссию

НДФЛ

Налоговики не будут штрафовать, если просрочка НДФЛ произошла из-за технических ограничений

Штрафовать за просрочку из-за технических сбоев инспекторы не будут. Инспекторы разъяснили, что делать, если неквалифицированная электронная подпись (НЭП) для подачи декларации НДФЛ не сгенерировалась.

Курсы повышения
квалификации

20
Официальное удостоверение с занесением в госреестр Рособрнадзора

Финансовые мошенники могут первое время реально выплачивать доход

В Москве сотрудники полиции задержали подозреваемого в многомиллионном мошенничестве под предлогом инвестирования.

Маркетинг

На майских праздниках хотят запретить продажу алкоголя

Чтобы снизить число преступлений и защитить здоровье населения, депутат предложил по всей стране запретить продажу спиртного во время майских праздников.

Лучшие спикеры, новый каждый день
Отпуска

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

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

Налоговой системе грозит модернизация: Минфин пообещал «донастройку» налогов. ⚡«Ночной бухгалтер» № 1672

Антон Силуанов сообщил, что в стране назрела необходимость налоговой «донастройки» и конкретные предложения по ней Минфин будет обсуждать с бизнесом в середине мая этого года. Интересно, бухгалтеров на обсуждение позовут?

Иллюстрация: Вера Ревина / Клерк.ру

Минфин: Россия занимает 3-е место по майнингу

Министерство финансов ожидает, что Госдума примет законопроекты, которые разрешат применять криптовалюту для расчетов по внешнеэкономическим контрактам.

Опытом делятся эксперты-практики, без воды

Предпринимателя вызывают на опрос в полицию. Тактика успешного прохождения и защиты

Все изложенное в данной статье можно использовать и при вызове для дачи пояснений в рамках доследственной проверки, проводимой в отношении предпринимателя.

Клиенты провели более 2,5 млрд операций через СБП

Пользователи Системы быстрых платежей оплатили 700 млн покупок на общую сумму 1,2 трлн рублей.

Через сервис поиска попутчиков можно никуда не уехать и остаться без денег

В Алтайском крае осудят участников группы, похитивших почти 1 млн рублей у 53 клиентов сервиса поиска попутчиков.

Какие распространенные страхи кандидатов перед собеседованием нерациональны

Собеседование является неотъемлемой частью процесса поиска работы, и многие кандидаты испытывают страх перед ним. Однако, некоторые из этих страхов являются нерациональными и необоснованными. В этой статье предлагаю рассмотреть несколько распространенных страхов кандидатов и расскажу, как их преодолеть.

Иллюстрация: создано с помощью ИИ OpenAI © Вера Ревина/Клерк.ру
Бесплатно с Больничные

Как ИП в 2024 году оформить право на пособия по больничным

В общем случае ни ИП, ни самозанятые права на оплату больничных не имеют. Но ИП могут оформить добровольное страхование в СФР. Самозанятые – тоже, но только если они ИП на НПД.

Как ИП в 2024 году оформить право на пособия по больничным
Бесплатно с Самозанятые

Обязательные и необязательные документы в работе с самозанятыми. Мини-курс

Какие обязательные и необязательные документы оформить при сотрудничестве с самозанятыми, рассказываем в мини-курсе.

Обязательные и необязательные документы в работе с самозанятыми. Мини-курс
Миникурсы, текстовые и видеоинструкции для бухгалтеров

⚡️ Итоги дня: в поезде появился спа-вагон, в Дагестане начали выращивать голубику, а собака родила зеленого щенка

Подготовили обзор главных событий дня — 25 апреля 2024 года. Все самое интересное, что писали и обсуждали в сети, в одной подборке.

Вскрыта афера с получением вычетов за стоматологию

В Смоленской области направлено в суд уголовное дело о мошенничестве при получении социальных налоговых вычетов по НДФЛ за лечение.

Как продать заблокированные активы

Появился механизм, который позволит инвесторам продать ценные бумаги, заблокированные из-за санкций. Рассказываем, как это будет происходить.

Иллюстрация: Вера Ревина/Клерк.ру

Аномальная нагрузка на электросеть помогла выявить майнинг криптовалюты

В Новосибирской области полицейские задержали подозреваемых в незаконном потреблении электроэнергии для майнинга криптовалюты.

Медосмотры офисных работников: для кого обязательны, как проводить, ответственность

Многих работодателей интересует вопрос: обязательно ли проводить для своих офисных сотрудников медицинские осмотры? Какие риски с этим связаны и как все организовать, рассмотрим в статье.

Иллюстрация: freepik/freepik

Как правильно и выгодно «продать» себя на собеседовании

Советы по трудоустройству дают, как правило, HR или психологи. Но не менее полезной информацией обладают эксперты с солидным опытом в сфере продаж. Как сделать так, чтобы потенциальный работодатель из всех кандидатов выбрал именно вас, а какой компании стоит точно отказать рассказала Гульнара Гумарова, коммерческий директор Wazzup.

Как правильно и выгодно «продать» себя на собеседовании

💪 Известен размер вычета НДФЛ за сдачу норм ГТО. Подготовиться к сдаче норм может выйти и дороже, считает эксперт

Налоговый вычет по НДФЛ можно будет получить за сдачу норм ГТО.

Интересные материалы

«Мегамаркет» начал продавать автомобили LADA

При оформлении заказа с покупателем свяжется менеджер «СберАвто», чтобы уточнить технические моменты и варианты доставки.