Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Реализовано в версии 8.3.15.1489.
В клиентском приложении мы реализовали новый механизм – глобальный поиск. Вместе с этим мы решили изменить интерфейс клиентского приложения. В результате интерфейс стал более простым, и, мы думаем, удобным, а глобальный поиск позволяет не только находить информацию, но и выполнять некоторые действия. Но, обо всем по порядку.
Поскольку эта статья описывает не тестовую и даже не бета-версию платформы, дизайн конкретных элементов носит рабочий, предварительный характер. Однако конструктивные решения, о которых пойдёт речь, скорее всего так и перейдут в «боевую» версию платформы. Хотя и тут мы не исключаем возможных изменений.
Первое отличие, которое бросается в глаза – это стандартный заголовок главного окна и отдельная главная панель, содержащая все необходимые инструменты:
Теперь отсутствует такие элементы интерфейса, как «панель инструментов» и «системная командная панель». Всё что нужно для работы, находится в главной панели:
Главное меню содержит, в том числе, и те команды, которые раньше находились в системной командной панели.
Если команды прибавления, вычитания и копирования чисел в буфер обмена нужны часто, вы можете нажать «Показать М, М+, М-», и эти команды появятся в главной панели перед строкой поиска.
Также мы изменили внешний вид вспомогательных окон.
Поле поиска, которое находится в главной панели, является основным и единственным интерфейсным элементом нового механизма глобального поиска. Пользователь вводит в это поле «что-то», что он хочет найти или сделать, и платформа показывает результат в списке, раскрывающемся под этим полем.
Новый механизм глобального поиска работает «из коробки», и не требует от вас какой-либо настройки и программирования. В большинстве случаев его стандартное поведение покрывает все необходимые сценарии, а при желании вы можете настроить его на выполнение специфических задач.
Стандартно глобальный поиск работает следующим образом. Например, если пользователь хочет найти всё, в чем встречается некоторая строка, поиск будет выполняться по избранному, истории, …
… а также по меню функций, по обсуждениям и сообщениям системы взаимодействия, по данным (полнотекстовый поиск) и по справке. При этом каждый найденный элемент обозначается соответствующей пиктограммой.
Поиск в разных источниках в большинстве своём выполняется параллельно, например, в сообщениях и обсуждениях системы взаимодействия, в меню функций, в данных.
Во все поля ввода, таблицы, в текстовый, форматированный, табличный документ и в сообщения системы взаимодействия мы добавили контекстную команду Искать везде. По этой команде выбранное значение подставляется в поле поиска и сразу же выполняется поиск.
Кроме поиска механизм позволяет переходить по ссылкам. Это могут быть, например, ссылки на элементы данных. В заголовок управляемой формы мы добавили кнопку получения ссылки.
Один пользователь может скопировать эту ссылку, и послать её другому пользователю.
Другой пользователь просто вставляет её в строку поиска, и сразу может открыть нужный элемент данных.
Также можно переходить и по внешним гиперссылкам. В следующем примере нажатие на первой строке приведет к тому, что у пользователя в стандартном браузере откроется сайт компании «1С».
Помимо поиска и перехода по ссылкам новый механизм может вычислять выражения, то есть работать как формульный калькулятор.
При этом поддерживаются все функции работы с числами, которые определены во встроенном языке. Например, возведение в квадрат:
Если вы хотите «чего-то особенного» или стандартное поведение глобального поиска вас не устраивает, вы можете настроить его работу под свои задачи.
Во встроенном языке мы реализовали объектную модель для работы с глобальным поиском. Она позволяет перехватывать многие события глобального поиска и изменять его стандартное поведение.
Например, справочник Товары у вас «особенный». В обычной ситуации для работы с элементами этого справочника вы используете форму ФормаЭлемента. Но когда пользователь находит элементы этого справочника с помощью глобального поиска, вы хотите, чтобы они открывались в другой форме, «особенной».
В этом вам поможет событие ПриВыбореРезультатаГлобальногоПоиска(). Оно возникает в момент нажатия на одну из найденных ссылок в списке, расположенном под полем ввода. Обработать это событие вы можете в модуле приложения.
Например, вы не хотите, чтобы глобальный поиск выдавал результаты, найденные в справке.
В этом случае вы можете при начале работы системы настроить менеджер глобального поиска. Менеджер доступен через свойство глобального контекста ГлобальныйПоиск. У менеджера есть план поиска – это коллекция, которая содержит те виды поиска, которые будут выполняться.
Если вы не хотите, чтобы выполнялся поиск в справке, просто удалите этот вид поиска из коллекции.
Например, у вас есть собственный интернет-ресурс, на котором вы публикуете материалы для пользователей вашего прикладного решения. Вы можете добавить в результаты глобального поиска ссылку, которая покажет пользователю результаты, найденные на вашем сайте.
Для этого, как и в предыдущем примере, вы можете при начале работы системы настроить менеджер глобального поиска. В план поиска первым элементом вы вставите собственный элемент. Алгоритм его работы написан в процедуре ПоискНаИТС(), которая находится в общем модуле МодульГлобальногоПоискаКлиент.
В этой процедуре вы просто формируете URL, содержащий нужные параметры поиска. Затем вы добавляете его в результат глобального поиска.
Когда пользователь наберёт в строке поиска искомое слово, на первом месте он увидит ссылку на ваш интернет-ресурс.
Нажатие на эту ссылку приведет к тому, что у пользователя в стандартном браузере откроются результаты, найденные на вашем сайте.
Например, пользователи часто ищут приходные накладные по номеру. Вы можете определить, что в поле поиска введен фрагмент номера, выполнить поиск накладной с подходящим номером и показать результаты в начале списка.
Для этого, как и в предыдущем примере, вы можете при начале работы системы настроить менеджер глобального поиска. В план поиска первым элементом вы вставите собственный элемент. Алгоритм его работы написан в процедуре ПоискНакладныхПоНомеру(), которая находится в общем модуле МодульГлобальногоПоискаСервер.
В этой процедуре вы находите накладную с подходящим номером. Затем вы добавляете её в результат глобального поиска, выделяя жирным шрифтом.
Когда пользователь введёт в строке фрагмент номера накладной, в первой строке результатов он увидит подходящую накладную, если такая существует.
Например, в вашем прикладном решении довольно частой задачей является поиск товаров по фрагменту артикула. Глобальный поиск «из коробки» справляется с этой задачей, однако возвращает очень много результатов (т.к. ищет везде), и делает это недостаточно быстро (т.к. использует полнотекстовый поиск в данных).
В такой ситуации вы можете выделить задачу поиска по артикулу в отдельный «вид поиска», и реализовать для него собственный алгоритм. Допустим, вы решили поступить следующим образом: если пользователь хочет найти товар по фрагменту артикула, то первым символом в поисковую строку он должен ввести «№», а затем тот фрагмент артикула, который он ищет. Например: №2.
После этого вы можете воспользоваться событием ПриГлобальномПоиске(). Это событие возникает тогда, когда в процессе набора текста в поле поиска сделана пауза. Это событие вы можете обработать в модуле приложения.
Если в строке поиска первый символ «№», вы удаляете все элементы из плана поиска и добавляете свой собственный элемент. Алгоритм его работы написан в процедуре ПоискПоАртикулу(), которая находится в общем модуле МодульГлобальногоПоискаСервер.
Сам алгоритм поиска по артикулу заключается в том, что запросом вы получаете только те товары, в артикуле которых содержится искомый фрагмент строки. Затем в результат глобального поиска вы добавляете собственные элементы. Каждый из них содержит ссылку на найденный товар и представление, в котором выделен тот фрагмент, который пользователь ищет.
Чтобы быстро получить такое представление, вы можете использовать функцию СтрВыделитьОформлением(). В первом параметре вы передаёте ей ту строку, которую будете показывать, а во втором параметре – тот фрагмент, который надо выделить в этой строке.
В результате, когда пользователь введёт в строку поиска «№2», он быстро получит список только тех товаров, у которых в артикуле есть «2». Если пользователь не будет вводить «№» первым символом в поисковую строку, глобальный поиск будет работать как обычно, «из коробки».
Например, вы добавили в глобальный поиск возможность поиска по артикулу. Но не все сотрудники знают, как этим воспользоваться.
Глобальный поиск имеет описание, которое открывается по ссылке «Что искать». Вы можете добавить в него свою подсказку.
Для этого вам снова понадобится менеджер глобального поиска.
В результате пользователь увидит такое описание:
Кроме описания вы можете установить и собственную подсказку ввода, которая будет отображаться в пустом поле поиска. Для этого у менеджера глобального поиска существует метод УстановитьПодсказкуВвода().
В этой статье мы описали только некоторые, наиболее простые возможности настройки глобального поиска. На самом деле с помощью этого механизма и своей фантазии вы можете заставить глобальный поиск не только искать данные, но и выполнять команды.
Например, если пользователь вводит «+» это значит, что он хочет добавить новые данные. В ответ на это вы можете предлагать ему список тех объектов, которые он может создать. Или, если в результатах поиска есть ссылка на товар, вы можете в результаты поиска добавлять ссылку, по которой автоматически выполнится отчёт «Остатки товаров» по этому товару.