1с основная форма поиска

1с основная форма поиска

Использован релиз 3.0.104

В программе «1С:Бухгалтерия 8» (ред. 3.0) реализован механизм полнотекстового поиска во всех полях любого справочника, документа, списка и др.:

%D1%80%D0%B8%D1%81 1

Если работа поиска по каким-то причинам нарушена, либо осуществляется медленно, рекомендуется очистить индексы и затем обновить их (рис. 2). Эти действия доступны только пользователям с правами «Администратор».

Внимание! При работе через облачные технологии операции по очистке и обновлению индексов выполняются автоматически.

%D1%80%D0%B8%D1%81 2

Для автоматического обновления индексов, быстрой и корректной работы поиска должно быть настроено выполнение двух регламентных заданий – «Обновление индекса ППД» и «Слияние индекса ППД». Обычно эти регламентные задания настроены по умолчанию и выполняются в программе ежедневно по расписанию в автоматическом режиме (например, каждый день с 8.00 каждый час).

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

%D1%80%D0%B8%D1%81 3

Смотрите также

Источник

Полнотекстовый поиск в 1С (что это и пример использования)

Полнотекстовый поиск предоставляет следующие возможности:

Полнотекстовый поиск можно осуществлять в любой конфигурации на платформе 1С:Предприятие 8

Для того чтобы открыть окно управления полнотекстовым поиском необходимо выполнить следующее:

b3375639a4f70e7be25e50b5919161ae

dbd5f051729b371da809ff95643697d5

ca0e4c80fd0dd3b31ff477eda1a80860Полнотекстовый поиск осуществляется при помощи полнотекстового индекса. При отсутствии индекса полнотекстовый поиск как таковой не возможен. Для того чтобы поиск имел результат, все необходимые данные должны быть включены в полнотекстовый индекс. Если пользователем введены в базу новые данные, их следует включить в рассматриваемый индекс, иначе они не будут участвовать в поиске. Чтобы этого избежать, необходимо обновлять полнотекстовый индекс. При обновлении система анализирует только определенные типы данных: Строка, Данные ссылочного типа (ссылки на документы, справочники),Число, Дата, ХранилищеЗначения. Если пользователь не имеет прав доступа к определенной информации, то он не сможет увидеть ее в результатах поиска. Следует также помнить и о том, что в свойствах объектов, по которым будет происходить поиск должно быть установлено значение Полнотекстовый Поиск – Использовать, которое задано по умолчанию.

Как вы можете заметить свойство Использовать установлено для всего справочника Контрагенты, но сделать это можно и для каждого его реквизита соответствующего типа.

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

Специальные операторы, допустимые при задании поискового выражения

Механизм полнотекстового поиска допускает написание части символов русского слова одноклавишными латинскими символами. Результат поиска при этом не измениться.

1d24bc36f8c5a5c6b939bbb9ad761d14

Два оператора РЯДОМ

Групповой символ «*» может использоваться только в качестве замены конца слова

Оператор нечеткости «#». Если неизвестно точное написание названия, имени.

Программными средствами и средствами 1с: программирование.

Оператор синонимов «!». Позволяет найти слово и его синонимы

Как программно обновить индекс полнотекстового поиска?

Пример полнотекстового поиска данных

Определение переменной СписокПоиска

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

Теперь для события нажатия на кнопку Найти напишем код, который позволит нам выполнять поиск в соответствии с тем выражением, которое задано в поле ПоисковоеВыражение

Сначала в этой процедуре мы устанавливаем поисковое выражение, введенное пользователем, в качестве строки поиска для полнотекстового поиска. Затем выполняем метод ПерваяЧасть(), который собственно запускает полнотекстовый поиск и возвращает первую порцию результатов. По умолчанию порция содержит 20 элементов. После этого мы анализируем количество элементов в списке поиска. Если он не содержит ни одного элемента, то мы выводим в форму соответствующее сообщение. В противном случае вызывается процедура ВывестиРезультатПоиска(), которая отображает полученные результаты пользователю.

Создадим в модуле формы процедуру с таким именем и напишем в ней код,

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

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

Теперь необходимо создать обработчики событий нажатия на кнопки ПредыдущаяПорция() и СледующаяПорция().

Заключительным «штрихом» будет создание обработчика события onclick поля HTML-документа, расположенного в форме. Дело в том, что результат полнотекстового поиска, представленный в виде HTML-текста, содержит гиперссылки на номера элементов списка поиска. И нам хотелось бы, чтобы при переходе пользователя на эту ссылку система открывала бы форму того объекта, который содержится в этом элементе списка. Для этого мы будем перехватывать событие onclick HTML-документа, содержащегося в поле HTML-документа, получать номер элемента списка из гиперссылки и открывать форму соответствующего объекта. Текст обработчика события onclick поля HTML-документа представлен в коде

Источник

Полнотекстовый поиск в «1С:Предприятии 8.1»

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

Полнотекстовый поиск предоставляет следующие возможности.

Полнотекстовый поиск можно осуществлять в любой конфигурации на платформе «1С:Предприятие 8.1».

Это касается и конфигураций, которые были сконвертированы из версии 8.0. Для включения возможностей использования полнотекстового поиска, достаточно зайти в меню «Операции» вашей конфигурации и выбрать пункт «Управление полнотекстовым поиском», после чего включить эту возможность (см. рис. 1).

doc 1187 1m

Если вы используете типовые конфигурации на платформе 8.1, то, скорее всего, в них уже встроена обработка «Поиск данных» (меню «Сервис»/»Поиск данных»). Если же такая обработка отсутствует в используемой конфигурации, не беда.

Ее всегда можно найти на диске ИТС. В этой статье мы будем использовать для демонстрации возможностей полнотекстового поиска примеры работы именно этой обработки в демонстрационной конфигурации «Бухгалтерия предприятия» (ред. 1.6).

Как уже было сказано, поиск может осуществляться по нескольким словам, с использованием поисковых операторов и по точной фразе. Кроме того, место поиска можно ограничивать конкретными объектами конфигурации (например, документы «Акт об оказании производственных услуг») или списком/набором объектов конфигурации.

При поиске данных допускается использование поисковых операторов в строке поиска (все операторы необходимо указывать только ЗАГЛАВНЫМИ буквами и без кавычек), указанных в таблице.

doc 1187 tm

Имейте ввиду: если не указаны никакие операторы (слова набраны через пробел), программа осуществляет поиск всех слов из запроса с использованием оператора «И».

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

doc 1187 2m

Рис. 3 демонстрирует пример более сложного поиска с использованием конструкции «ИЛИ» в строке поиска и ограничения области поиска по справочнику «Номенклатура» и документам «Поступление товаров и услуг», «Реализация товаров и услуг». Наглядно видно, что поиск отразил всю номенклатуру, в названиях которой присутствует либо слово «чайник», либо слово «BINATONE», а также все документы указанных видов, содержащие всю подходящую номенклатуру.

Источник

Полнотекстовый поиск в 1С. №2 Самое основное для разработчика

Продолжаем

d7e33e4e57286b86e23c64b2832fc351Продолжаем развивать тему штатного полнотекстового поиска платформы 1С. До этого был представлен инструмент для обслуживания полнотекстового индекса «Мастер полнотекстового поиска» c расширенными возможностями и подробно рассмотрены нюансы работы поиска в динамических списках в публикации «Полнотекстовый поиск в 1С. №1 Грабли в динамических списках».

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

Индексировать все

e9b485803b8aeb462d952e02c23888d7

Эта настройка позволяет включить / исключить объект из полнотекстового индекса. При создании объектов по умолчанию поиск включен для всех объектных типов, а для регистров выключен. Настройка доступна почти для всех объектов метаданных.

Также доступно свойство «Полнотекстовый поиск» для отдельных полей (реквизитов, ресурсов, измерений) вне зависимости (почти) от их типа (кроме ссылок на внешние источники данных разве что). Да, полнотекстовый индекс можно использовать даже для регистров, но используется это редко. Какой смысл искать данные через индекс ППД в регистре накопления? Наверное, для регистров сведений еще это как-то можно применить, и то в особых случаях. Например в 1С:Документооборот что-то подобное применялось.

32554fe233e1a98c1ea7f86a317cb079

cfa9a2ed279df62ccbb5099723bd1b35Кроме этого, есть еще настройки поиска данных при вводе по строке. В разделе настроек «Поле ввода» объектных типов можно найти настройку «Полнотекстовый поиск» для ввода по строке. Эта настройка имеет описание на ИТС.

9f19e5f6a46438f27ac4399baef1e204Позволяет выполнять поиск не средствами СУБД, как это делается обычно, а с помощью индекса ППД. Также управлять использованием ППД при вводе можно в событии «ОбработкаПолученияДанныхВыбора» модуля менеджера объекта.

Для событий ввода по строке в технологический журнал даже были добавлены события «INPUTBYSTRING» для анализа его работы. Подробнее есть информация здесь.

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

Первая проблема и обслуживание

Основные настройки мы рассмотрели, но появилась и первая проблема. Если в конфигурации множество объектов, а на стороне базы в этих объектах большое количество записей, то сразу возникает вопрос: а что, если полнотекстовый поиск мне нужно использовать только для одного справочника?

На небольших и средних базах такой вопрос может вообще не возникнуть, но если база «весит» сотни гигабайт или терабайты, то просто так взять и проиндексировать ее штатными средствами платформы 1С практически невозможно. Или же это займет несколько дней, неделю (делайте ставки). Для любознательных: краткое описание процесса поддержки полнотекстового индекса.

В общих чертах, сам процесс поддержки индекса ППД выглядит следующим образом:

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

297559dab173e975eb7d95c1a15ff895Файлы со списком изменений находятся в каталоге полнотекстового индекса 1Cv8FTxt. Для файловой базы находится рядом с базой, а клиент-серверный режим сохраняет каталог полнотекстового индекса в специальном каталоге сервера:

. \srvinfo\ \1Cv8FTxt

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

6483d5ebf46ebcaf6872310141a7ae02Примерно тот же принцип используется для формирования списка объектов к индексированию в инструменте «Мастер полнотекстового поиска».

2. Далее в базе работают два регламентных задания: обновление индae9f42ba45f6ac72d835a71d36f4fddeекса ППД, которое в течении дня с некоторой периодичностью (обычно 1 минута) обрабатывает список измененных данных и актуализирует частичный индекс ППД. После обновления, конечно же, список изменений очищается. Также обычно присутствует второй задание «Слияние индекса ППД», которое объединяет частичный и основной индекс для эффективной работы поиска.

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

Но сделать последнее не так просто, ведь групповой обработки изменения свойства «Полнотекстовый поиск» нет, а «прокликивать» каждый объект это та еще задача (хотя определенным образом ее можно решить с помощью EDT, но. ). Плюс за всеми изменениями не уследишь. В итоге самым простым способом является отключение полнотекстового поиска для всех объектов через выгрузку конфигурации в файлы и последующее его включение только для нужных объектов и свойств:

На всякий случай это можно сделать на отдельной конфигурации. А позже применить изменения на основную конфигурацию через сравнение / объединение с проверками.

Теперь проблема индексирования всех объектов базы будет решена. Мы оставим в полнотекстовом индексе только те данные, те объекты, которые нам действительно нужны. К сожалению, через расширения изменять настройку использования полнотекстового поиска пока нет возможности, поэтому придется изменять все в самой конфигурации. Но, возможно, это временное ограничение. Идеальным решением была бы возможность настраивать индексирование объектов в режиме 1С:Предприятие, но пока такой возможности также не предоставляется.

Добавлю, что в будущем необходимо следить, чтобы для новых объектов конфигурации устанавливались корректные настройки использования полнотекстового поиска. Как говорилось ранее, для новых объектов метаданных ссылочных типов полнотекстовый поиск включен по умолчанию. Это может быть нежелательным поведением, не зря же мы все отключали до этого. Поэтому можно написать пару unit-тестов и отслеживать корректность настроек индекса ППД с божьей их помощью.

Программный поиск

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

Внимание. Все данные из примеров вымышленные. Любое сходство с реальными людьми случайно :) Для примера было сгенерировано порядка 1 млн. записей в справочнике «Физические лица», который есть во многих типовых конфигурациях.

Самый простой пример

Выполнять операции поиска данных через индекс ППД можно через объект «СписокПолнотекстовогоПоиска», который создается следующим образом:

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

С их помощью мы можем установить фильтры на объекты метаданных, по которым выполняется поиск, а также указать использование представления объектов в поиске.

Опции «ПолучитьОписание» и «ПолучатьПредставление» позволяет к результату поиска добавить контекстные данные и представления объектов, но это может снизить производительность. Следует использовать при необходимости. Если установить обе опции в «Ложь», то иногда можно заметно ускорить поиск.

Когда все параметры заданы, мы можем получить первую порцию результатов. Есть несколько вариантов:

Это может быть получение либо первой порции данных, либо новой порции от предыдущего результат поиска (следующую или предыдущую). Также можно использовать метод «Получить» для получения конкретного элемента результата поиска, который был получен в текущей порции. Фактически эти методы позволяют обходить результаты запроса постранично. Никто, кстати, не мешает обойти результаты текущей порции простым циклом.

Когда порция получена, мы можем извлечь дополнительную информацию о результате поиска:

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

Для получения результата поиска в виде HTML или XML платформа 1С предоставляет метод «ПолучитьОтображение».

Именно этим способом в типовых конфигурациях реализуется отображение результата поиска в обработке «ПолнотекстовыйПоискДанных» из БСП. Вот так выглядит эта обработка.

a5c82d42867ce0cb5459a2d9be10da60

Это практически все средства для программной работы, которые имеет платформа 1С из коробки. Мы не рассматриваем процедуры обслуживания и настройки индекса ППД. Это Вы можете посмотреть в других публикациях, ссылки на которые были пару раз упомянуты выше. Теперь мы рассмотрим еще примеры работы со строкой поиска, чтобы увидеть всю мощь работы полнотекстового поиска.

Магия строки поиска

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

Логические операторы

Самоотверженный Валун Кубрикович

то фактически используются операторы И между словами:

Самоотверженный И Валун И Кубрикович

Это стандартное поведение. В результат попадут все объекты, в тексте которых присутствуют все три слова. При этом если поменять местами искомые слова, то результат будет тот же.

Самоотверженный И Кубрикович И Валун

Таким же образом мы можем использовать оператор ИЛИ:

Самоотверженный ИЛИ Валун ИЛИ Кубрикович

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

И, конечно же, для поиска можно использовать оператор НЕ, чтобы исключать из результатов те объекты, в текстовых данных которых содержится определенное слово. Например, такой запрос:

Самоотверженный Лемович НЕ Меридиан

найдет все объекты, в которых содержатся слова «Самоотверженный» и «Лемович», но при этом нет слова «Меридиан».

Есть один нюанс: эти операторы не используются как унарные в начале строки поиска. То есть нельзя сделать вот такой запрос:

НЕ Меридиан

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

b1ff51a01495c166840e313fa6997c0b

Теперь мы можем перейти к следующему оператору.

Рядом

Гордый РЯДОМ/2 Фарадеевич

при этом этот запрос будет эквивалентен:

Фарадеевич РЯДОМ/2 Гордый 2005

Мы найдем все объекты, где после слова «Гордый» через одно слово идет «Фарадеевич». При этом поиск выполняется как в левую, так и в правую сторону. Можно комбинировать поиск с другими операторами. Например, так мы найдем тех же физ. лиц, но с годом рождения 2005.

Гордый РЯДОМ/2 Фарадеевич 2005

Также этот оператор позволяет указывать направление поиска слов. Для это перед параметром n нужно указать знак + (для поиска после первого слова) или (для поиска до первого слова). Изменим предыдущее выражение:

Гордый РЯДОМ/+2 Фарадеевич

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

Гордый РЯДОМ/-2 Фарадеевич

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

5050d152587ebaca5098514735026250

Теперь мы можем перейти к другим операторам.

Точный поиск

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

найдет все значения, в которых есть эта фраза целиком. Если же сделать поиск по:

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

03e64053ca545c0970f97b8fc7cec43a

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

Группировка слов

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

(Самоотверженный И Валун) ИЛИ (Яростный И Эрудит)

найдет все объекты, в текстовом содержимом которых есть вместе слова «Самоотверженный» и «Валун» или «Яростный» и «Эрудит». Очень полезно для сложных условий поиска.

7a189dbcc7d0ab2dbd948a3160839ad9Идем дальше.

Групповой символ

Групповой символ * используется для поиска по началу строки. Например, есть физ. лицо с ИНН 739780874266. Его можно найти явно, указав ИНН, или с помощью выражений:

7397808742*

7397808*

739780*

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

*39780874266

Поиск по началу строки часто может быть очень эффективным инструментом поиска данных.

e57f19d18a2a21b8cb5b857d6f16d787

При использовании этого оператора может быть найдено огромное количество слов, поэтому в платформе 1С реализовано ограничение: максимальное количество слов для группового поиска равно 300.

Еще кое-что8ede99553bf8877439dfd5005f9a7d4b

— нечеткий поиск слов с указанным количеством отличий (по умолчанию равен 1).

Здесь приведу пример из синтаксис-помощника. Например, запрос «

Система» найдет «систама», «сивтема», а запрос «Система

2″ найдет «ситтама», «сеттема».

При использовании этого оператора может быть найдено огромное количество слов, поэтому в платформе 1С реализовано ограничение: максимальное количество слов для группового поиска равно 300.

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

Кстати, в платформе 8.3.16 добавился поиск с помощью индекса ППД по хештегам (строки вида #Слово, от символа # до первого пробела). Еще не приходилось использовать на практике.

Все это достаточно специфические возможности и на моей практике их приходилось использовать очень редко. Если вообще приходилось.

Подводные камни

Вот так, от вопросов обслуживания и настройки полнотекстового индекса, проблем его использования в самом распространенном кейсе и до вопросов разработки и особенностей работы мы прошли небольшой путь. Так были затронуты почти все вопросы, связанные со штатным механизмом полнотекстового поиска платформы 1С. Но это еще не все!

При работе с ним можно встретиться с некоторыми подводными камнями, о которых стоит знать заранее:

В общем, полнотекстовый поиск полезен, но нужно быть готовым к решению проблем.

Вместо заключения

Это вторая публикация в серии статей про полнотекстовый поиск, в которой был сделан упор на вопросы разработки и использования индекса ППД и связанные нюансы его работы. Немного поговорили и о сопровождении. Подведем итог и соберем основные плюсы и минусы штатного механизма полнотекстового поиска.

А что Вы думаете о штатном полнотекстовом поиске?

В следующих статьях мы подробней поговорим о производительности полнотекстового индекса и практические примеры его использования в рамках оптимизации производительности. Рассмотрим несколько кейсов его применения в рамках highload (да, такое возможно).

Другие ссылки

Авторские разработки (все разработки на одной странице)

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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с определить откуда открыта форма
  • 1с оповещение формы о событии