Полнотекстовый поиск - позволит найти текстовую информацию, размещенную практически в любом месте используемой конфигурации. При этом искать нужные данные можно либо по всей конфигурации в целом, либо сузив область поиска до нескольких объектов (например, определенных видов документов или справочников). Сами критерии поиска могут варьироваться в довольно широком диапазоне. То есть найти нужные данные можно, даже не помня точно, где они хранятся в конфигурации и как именно записаны.
Полнотекстовый поиск предоставляет следующие возможности:
Есть поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ 7.79-2000). Пример: "русская фраза" = "russkaya fraza".
Есть поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами). Пример: "руссrfz фраpf" (окончания каждого слова набраны латиницей, допустим, в результате ошибки оператора).
Есть возможность нечеткого поиска (буквы в найденных словах могут отличаться) с указанием порога нечеткости. Пример: указав в строке поиска слово "привет" и нечеткость 17 %, найдем все аналогичные слова с ошибками и без: "привет", "превет", "привед".
Есть возможность указать область выполнения поиска по выбранным объектам метаданных.
Полнотекстовое индексирование названий стандартных полей ("Код", "Наименование" и т. д.) производится на всех языках конфигурации.
Поиск выполняется с учетом синонимов русского, английского и украинского языков.
Морфологический словарь русского языка содержит ряд специфических слов, относящихся к областям деятельности, автоматизируемым с помощью системы программ "1С:Предприятие".
Стандартно в состав поставляемых словарей включены словарные базы и словари тезауруса и синонимов русского, украинского и английского языков, которые предоставлены компанией "Информатик".
Поиск можно осуществлять с использованием подстановочных символов ("*"), а также с указанием поисковых операторов ("И", "ИЛИ", "НЕ", "РЯДОМ") и спецсимволов.
Полнотекстовый поиск можно осуществлять в любой конфигурации на платформе 1С:Предприятие 8
Для того чтобы открыть окно управления полнотекстовым поиском необходимо выполнить следующее:
Обычное приложение - пункт меню Операции - Управление полнотекстовым поиском.
Управляемое приложение - пункт меню Главное меню - Все функции - Стандартные - Управление полнотекстовым поиском.
Обновить индекс – Создание индекса/Обновление индекса;
Очистить индекс – обнуление индекса(рекомендуется после обновления всех данных);
пункт Разрешить слияние индексов – отвечает за слияние основного и дополнительного индекса.
Полнотекстовый поиск осуществляется при помощи полнотекстового индекса. При отсутствии индекса полнотекстовый поиск как таковой не возможен. Для того чтобы поиск имел результат, все необходимые данные должны быть включены в полнотекстовый индекс. Если пользователем введены в базу новые данные, их следует включить в рассматриваемый индекс, иначе они не будут участвовать в поиске. Чтобы этого избежать, необходимо обновлять полнотекстовый индекс. При обновлении система анализирует только определенные типы данных: Строка, Данные ссылочного типа (ссылки на документы, справочники),Число, Дата, ХранилищеЗначения. Если пользователь не имеет прав доступа к определенной информации, то он не сможет увидеть ее в результатах поиска. Следует также помнить и о том, что в свойствах объектов, по которым будет происходить поиск должно быть установлено значение Полнотекстовый Поиск – Использовать, которое задано по умолчанию.
Как вы можете заметить свойство Использовать установлено для всего справочника Контрагенты, но сделать это можно и для каждого его реквизита соответствующего типа.
Рассмотрим более подробно полнотекстовый индекс, который состоит из двух частей (индексов): основного индекса и дополнительного. Высокая скорость поиска данных обеспечивается за счет основного индекса, но обновление его происходит относительно медленно, в зависимости от объема данных. Дополнительный индекс ему противоположен. Данные добавляются в него намного быстрее, но поиск осуществляется медленнее. Система осуществляет поиск одновременно в обоих индексах. Большая часть данных находится в основном индексе, а данные добавляемые в систему попадают в дополнительный индекс. Пока объем данных в дополнительном индексе небольшой, поиск по нему происходит относительно быстро. В тот момент, когда нагрузка на систему невелика, происходит операция слияния индексов, в результате чего дополнительный индекс очищается, а все данные помещаются в основной индекс. Слияние индексов предпочтительнее выполнять в тот момент времени, когда нагрузка на систему минимальна. С этой целью можно создавать регламентированные задания и задания по расписанию.
Специальные операторы, допустимые при задании поискового выражения
Механизм полнотекстового поиска допускает написание части символов русского слова одноклавишными латинскими символами. Результат поиска при этом не измениться.
Два оператора РЯДОМ
упрощенный. На расстоянии 8 слов друг от друга
РЯДОМ/[+/-]n – поиск данных в одном реквизите на расстоянии n-1 слов между ними.
Знак указывает в каком направлении от первого слова будет поиск второго. (+ - после, - до)
Групповой символ «*» может использоваться только в качестве замены конца слова
Оператор нечеткости «#». Если неизвестно точное написание названия, имени.
Программными средствами и средствами 1с: программирование.
Оператор синонимов «!». Позволяет найти слово и его синонимы
Как программно обновить индекс полнотекстового поиска?
Пример полнотекстового поиска данных
Определение переменной СписокПоиска
Кроме этого в процедуре обработки события ПриОткрыии формы определим, что эта переменная будет содержать список полнотекстового поиска, с помощью которого мы и будем осуществлять поиск в данных
Теперь для события нажатия на кнопку Найти напишем код, который позволит нам выполнять поиск в соответствии с тем выражением, которое задано в поле ПоисковоеВыражение
Сначала в этой процедуре мы устанавливаем поисковое выражение, введенное пользователем, в качестве строки поиска для полнотекстового поиска. Затем выполняем метод ПерваяЧасть(), который собственно запускает полнотекстовый поиск и возвращает первую порцию результатов. По умолчанию порция содержит 20 элементов. После этого мы анализируем количество элементов в списке поиска. Если он не содержит ни одного элемента, то мы выводим в форму соответствующее сообщение. В противном случае вызывается процедура ВывестиРезультатПоиска(), которая отображает полученные результаты пользователю.
Создадим в модуле формы процедуру с таким именем и напишем в ней код,
Действия, выполняемые в этой процедуре, просты. Сначала мы формируем сообщение о том, какие элементы отображены и сколько всего элементов найдено. Затем получаем результат полнотекстового поиска в виде HTML-текста и выводим этот текст в поле HTML-документа, расположенное в форме.
В заключение передаем управление в процедуру ДоступностьКнопок() для того, чтобы сделать доступными или, наоборот, запретить доступ к кнопкам Предыдущая порция и Следующая порция (в зависимости от того, какая порция полученных результатов отображена). Текст этой процедуры представлен в Коде
Теперь необходимо создать обработчики событий нажатия на кнопки ПредыдущаяПорция() и СледующаяПорция().
Заключительным «штрихом» будет создание обработчика события onclick поля HTML-документа, расположенного в форме. Дело в том, что результат полнотекстового поиска, представленный в виде HTML-текста, содержит гиперссылки на номера элементов списка поиска. И нам хотелось бы, чтобы при переходе пользователя на эту ссылку система открывала бы форму того объекта, который содержится в этом элементе списка. Для этого мы будем перехватывать событие onclick HTML-документа, содержащегося в поле HTML-документа, получать номер элемента списка из гиперссылки и открывать форму соответствующего объекта. Текст обработчика события onclick поля HTML-документа представлен в коде
Двумерные штрих-коды – символики, разработанные для кодирования большого объема информации (до нескольких страниц текста). Такой код считывается с помощью специального сканера и позволяет быстро и безошибочно считывать информацию с документов. Это сделано с целью повышения эффективности ввода данных с бумажных носителей, то есть для быстрого считывания бухгалтерской и налоговой отчетности, подготовленной на машиночитаемых бланках с нанесением двухмерного штрих-кода символики PDF417.
Для печати машиночитаемых форм налоговых деклараций с двухмерным штрих-кодом PDF417 необходимо, чтобы на компьютере пользователя был установлен единый модуль печати машиночитаемых бланков и шаблоны машиночитаемых бланков.
Поддержка технологии формирования машиночитаемых бланков с двухмерным штрих-кодом включена в комплект форм регламентированной отчетности 1С. Скачать последнюю версию модуля двухмерный штрих-код PDF417 можно на сайте ФГУП "ГНИВЦ ФНС России" по ссылке http://www.gnivc.ru/inf_provision/form_templates/
После загрузки установите модуль:
Теперь приступаем к печати необходимого документа.
Проделаем это на примере бухгалтерского баланса. Заходим в меню Отчеты, Регламентированные отчеты, выбираем бухгалтерский баланс. После заполнения баланса переходим к печати, нам необходимо выбрать из двух предлагаемых вариантов первый: «Печатать сразу бланк формы с двухмерным штрихкодом PDF417».
Если выбрать "Показать бланк формы с двухмерным штрихкодом PDF417", то после выполнения необходимых подготовительных процедур на экране откроется форма предварительного просмотра, в которой предусмотрены возможности для просмотра сформированных отчетов и их непосредственного вывода на печать. Вот так будет выглядеть баланс с двухмерным штрих-кодом:
Для корректной обработки подготовленной печатной формы в налоговом органе, необходимо соблюдать некоторые требования к печати:
- Документ должен печататься только с одной стороны листа, не допускается печать сразу двух страниц на одном листе.
- Следует обратить внимание на качество печати. Считывание информации производится специальным сканером и для правильного распознавания им информации печать должна быть четкой и контрастной. Пятна, полосы и размытости от принтера, а также дефекты бумаги в зоне штрих-кода могут привести к неправильному считыванию. В данном случае нет гарантии, что до приемки дойдет та информация, которую Вы отправили, несмотря на правильность составления, выгрузки и шифровки.
- Изменение геометрических размеров печатаемых форм недопустимо.
- Листы отчетности в виде машиночитаемых форм не надо скреплять степлером или подшивать в скоросшиватель - это может повредить блок двухмерного штрихкода. Подготовленную печатную форму в виде машиночитаемой формы необходимо подписать и поставить печать.
Подготовленную таким образом отчетность необходимо представить в вашу налоговую инспекцию так же, как вы обычно это делаете.
Второй экземпляр можно подготовить для того, чтобы инспектор поставил на титульном листе отметку о приеме. Однако мы рекомендуем оставить себе "обычную" печатную форму отчетности - в том виде, как она утверждена Минфином России, без двухмерного штрих-кода.
Применяется если требуется выполнять какое-то действие с определенной периодичностью. Например, резервное копирование БД или обновление индексов полнотекстового поиска.
Рассмотрим вариант обновления индексов. Индекс полнотекстового поиска сосотоит из дополнительного индекса и основного индекса. Дополнительный индекс следует обновлять достаточно часто. Это и будет нашим заданием.
Создание задания:
1) Создаем объект конфигурации РегламентноеЗадание(Общие).
2) Создаем новую процедуру в ОбщиеМодули. Она будет делать обновление индексов. Вот ее код:
3) Задаем расписание.
На практике мы используем файловый вариант 1С Предприятие. В этом варианте для осуществления выполнения заданий по расписанию небходима постоянно работающая обработка, запущения из клиентского режима.
Используйте готовые обработки: Регламентированные задания, запуск и настройка или создайте такую обработку сами:
Создадим объект конфигурации Обработка. На Форме добавим кнопку с действием ОбработкаЗаданий()
В модуль этой формы добавим код, запускающий выполнение заданий:
Эту процедуру необходимо запустить из клиентского режима 1С Предприятие. Пока окно приложения с этой процедурой открыто задания будут выполнятся. Другие действия рекомендуется проводить в другом окне 1С.
Регламентные задания представляют собой неотъемлемую часть конкретного прикладного решения и описываются на этапе конфигурирования.
Для каждого регламентного задания может быть задано расписание, в соответствии с которым регламентое задание будет автоматически запущено на исполнение. В системе 1С:Предприятие 8 поддерживаются однократные и периодические расписания. Можно задать дату начала и окончания выполнения, дневное, недельное и месячные расписания. Расписание можно задать как на этапе конфигурирования, так и на этапе выполнения (в режиме 1С:Предприятие).
В процессе запуска регламентное задание порождает фоновое задание, которое и выполняет реальную обработку. Регламентное задание может выполняться от имени заданного пользователя и имеет возможность перезапуска (например, в случае непредвиденного завершения работы).
В утилите администрирования клиент-серверного варианта работы автоматическое выполнение регламентных заданий может быть запрещено(в сойствах БД кластера - галочка Установить блокировку регламентных заданий) для конкретной информационной базы. Также имеется возможность блокировать запуск регламентных заданий при создании информационной базы на сервере из диалога запуска 1С:Предприятия.
В файловом варианте работы для автоматического запуска регламентных заданий необходимо наличие выделенного клиентского соединения, используемого в качестве планировщика заданий. В этом соединении должна быть запущена обработка ожидания, с некоторой периодичностью выполняющая вызов метода встроенного языка ВыполнитьОбработкуЗаданий()
После запуска данной обработки, при открытии ее формы, выполняется подключение в качестве обработчика ожидания процедуры "ОбработкаЗаданий", которая будет вызываться каждые 3 секунды и, в свою очередь, вызывать метод "ВыполнитьОбработкуЗаданий()". Данный метод проверяет, пришло ли время выполнять задания согласно их расписанию. Если да - то он запускает эти задания на выполнение. Открытие созданной обработки по запуску регламентных заданий не рекомендуется осуществлять в том же соединении, где выполняется основная работа с информационной базой. Для подобной задачи лучше использовать отдельное соединение с той же базой.
Посмотрите обработки Регламентированные задания, запуск и настройка