Оптимизация поиска по номеру   

 

          Отсутствие ограничений для пользователей в технология поиска документа по номеру в 1С 7.7, с ростом информационных потоков,  может становиться узким местом системы с точки зрения производительности SQL сервера. Поиск организован так, что нажавший кнопку поиска пользователь может не думать, а сразу вводить номер и нажимать кнопку поиска. Единственное, что обычно могут делать или не делать «продвинутые» пользователи – снимать флаг ограничения поиска в пределах интервала журнала. Со временем пользователи просто ленятся подумать, в каком периоде находится искомый документ и просто в 100% случаев снимают этот флаг.
          С точки зрения работы с базой данных все это выливается в неоправданную нагрузку на сервер. Давайте подробнее рассмотрим механизм поиска по номеру:

          Как можно видеть, при открытии диалога поиска по номеру в общем или дополнительном журнале документов в таком журнале присутствует большое количество видов документов. При открытии формы все эти виды документов отмечены для поиска в них. Если после ввода нужного номера документа сразу нажать кнопку поиска – поиск пройдет по всем видам документов, включая те, что совершенно не нужны. Если это общий журнал и в конфигурации присутствует сотня видов документов – то, соответственно поиск будет производится по каждому виду документов в отдельности, что сильно сказывается на процессе поиска. Предположим, пользователь хочет найти приходную накладную с таким номеров. В результате он вводит номер и жмет кнопку поиска. Так как выделены все виды документов, то с нахождением нужной 1С 7.7 не останавливается, а продолжает искать и по другим видам документов. В результате нужный документ находится за 1-3 секунды, затем дополнительное количество времени тратится на уже ненужный поиск по видам документов.
В результате по чуть-чуть набегает значительное время.
Вторая существенная опция – флаг поиска «только в интервале журнала». Если его снять, поиск будет проходить за весь период существования базы данных. Это означает, что, предположим, база содержит документы за 5-7 лет. При указании номера и снятии этого флажка будет произведен поиск нужного номера за весь диапазон дат базы данных. Соответственно, такая операция неэффективна с точки зрения нагрузки на базу данных.
          При большом количестве пользователей в базе данных интенсивность поиска по номеру становится велика. Это, с учетом вышесказанных ограничений ведет к значительному повышению нагрузки на сервер. А именно: на процессоры, оперативную память, жесткие диски. В результате высокой загрузки может ухудшиться отклик системы на действия пользователей.
 
          К сожалению, стандартными средствами изменить ничего нельзя. Зачастую предпринимаются попытки внедрить свой диалог поиска по номеру из журнала, например с добавлением в форму журнала дополнительных диалоговых кнопок вызова поиска по номеру, с написанием простого алгоритма набора номера. Но пользователи уже привыкли работать со стандартным поиском, поэтому такие попытки редко имеют успех.
 
          Компания "СофтПоинт" разработала 2 варианта оптимизации. Один обеспечивает более жесткую политику, другой более либеральную. Данные механизмы являются дополнением программного продукта "Гибкие блокировки". Первый вариант:

          При открытии поиска по номеру список видов документов для поиска не содержит отмеченных документов, как в варианте по-умолчанию. Это позволяет отсечь злоупотребления выбором всех видов документов. Чтобы хитрый пользователь не вернул стандартную настройку назад – кнопка «Вкл. все» становится недоступной для пользователя. Таким образом, придется перед началом поиска обозначить список видов документов, которые требуется найти.
          Также стал недоступен флаг «Только в интервале журнала». Это позволяет ограничить поиск только тем интервалом журнала, который в данный момент установлен в активном журнале пользователя.
          Второй вариант:

          В этом варианте, также как и в предыдущем – сняты пометки со всех видов документов для поиска. Кнопка включения в поиск полного списка документов остается доступна, также как и флаг ограничения поиска в интервале журнала.
          Тем не менее, есть дополнительное отличие от стандартного диалога. При нажатии на кнопку включения всех документов выдается вопрос:

          Таким образом, проверяется необходимость пользователя воспользоваться именно таким вариантом поиска. Если нажать «Да», будут отмечены все виды документов, если «Нет» – все останется без изменений.
          Таким же точно образом организована реакция на снятие флага поиска только в интервале документов:

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

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

          Описанные средства являются надстройкой для программного продукта "Гибкие блокировки", что упрощает процесс внедрения для тех информационных систем, где уже используются механизмы повышения производительности от "СофтПоинт".