индекс ппд 1с что это
Обновление индекса ППД 1с 8.3 — что это?
В программе 1С:Бухгалтерия предприятия есть много различных регламентных заданий — это операции, которые выполняются по расписанию. Одной из таких операций в 1С 8.3 является «Обновление индекса ППД». Давайте разберемся, что это за задание.
Полнотекстовый поиск
Указанное регламентное задание влияет на полнотекстовый поиск. Для начала рассмотрим, что такое полнотекстовый поиск и как его настроить.
Где находится полнотекстовый поиск
Поиск доступен по нажатию значка с лупой (или по нажатию клавиши CTRL+SHIFT+F).
Откроется окно. Здесь вводим любой текст и нажимаем «Найти».
Программа найдет все объекты, в которых используется указанный текст.
Настройка поиска
Получите понятные самоучители по 1С бесплатно:
Рассмотрим, как настроить поиск.
Зайдем в меню «Администрирование — Настройки программы — Общие настройки».
В разделе «Поиск данных» можем включить и отключить поиск. По умолчанию он включен. Отключить можно, если поиск вообще не нужен, либо мы хотим немного увеличить скорость работы 1С.
По ссылке «Настроить» откроются дополнительные настройки.
Если поиск работает некорректно, по кнопке «Очистить индекс» удаляем файлы полнотекстового поиска. Затем обновляем индекс по кнопке «Обновить индекс». По кнопке «Проверить индекс» проверяется текущее состояние индекса.
Обновление индекса ППД
Теперь перейдем к регламентному заданию. Оно позволяет автоматически обновлять индекс полнотекстового поиска. При этом есть 2 задания: Обновление индекса ППД и Слияние индекса ППД.
Они находятся в меню «Администрирование — Настройки программы — Обслуживание».
Открываем пункт «Регламентные и фоновые задания».
Находим в списке соответствующие пункты.
Открыв задание, его можно отключить, либо изменить расписание.
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Почему тормозит 1С. Регламентные задания
Начнем с реального случая. Не так давно к нам обратился один наш клиент с жалобой на «тормоза» 1С у одного из его сотрудников. Симптомы выражались в том, что через некоторый промежуток времени конфигурация Управление Торговлей 10 начинала сильно тормозить, а проще говоря подвисала на какое-то время.
При более подробном разборе ситуации выяснилось, что это происходит только у одного сотрудника, причем на любом рабочем месте, происходит давно, но если раньше «тормоза» продолжались около секунды, то теперь, после обновления, они могут продолжаться до 15-20 секунд, что делает работу крайне некомфортной.
В принципе, исходных данных уже достаточно, чтобы сделать первые выводы. Приведем их еще раз:
Чтобы подтвердить свои догадки заглянем в Настройки параметров учета:
Действительно, «проблемный» пользователь указан как пользователь для выполнения регламентных заданий. Как выяснилось, когда-то давно от имени этого пользователя работало задание автообмена РИБ. Осталось посмотреть, что именно являлось причиной эпизодического «торможения». Это тоже несложно сделать:
Обычное приложение
В конфигурациях на основе обычного приложения единого инструментария для управления регламентными заданиями нет. Во многом это связано с тем, что на момент их первоначальной разработки сама концепция регламентных заданий была развита довольно слабо.
Управление многими регламентными заданиями производится через настройку связанных с ними подсистем. Например, настройки регламентных заданий, связанных с обменом данными следует искать в настройках обмена, связанные с ЕГАИС в настройках торговлей алкоголем и т.д.
В этом случае следует воспользоваться внешней обработкой КонсольЗаданий (JobsConsole), которая входит в набор стандартных обработок на диске ИТС. Обработка предоставляет единый интерфейс для всех заданий и позволяет выполнять их централизованную настройку, а также контролировать выполняющиеся в текущее время задания.
Данный список нужно тщательно изучить, все ненужные задания следует отключить, а у нужных привести расписание в соответствие с насущными потребностями и здравым смыслом. Например, в нашем случае, нет никакой необходимости обрабатывать ответы ЕГАИС раз в 30 секунд (эта настройка сделана для тестирования) и в рабочем режиме вполне достаточно будет делать это скажем раз в полчаса.
Управляемое приложение
В конфигурациях на основе управляемого приложения регламентным заданиям отведена более значительная роль, с их помощью могут выполняться различные задания по обслуживанию информационной базы и поддержанию ее в актуальном состоянии, но в тоже время именно регламентные задания чаще всего становятся причиной «тормозов».
Прежде всего отключаем то, что явно ненужно, с чем вы не работаете. Потом оптимизируем расписание редко используемых функций, скажем обновление классификатора банков в Рознице, как и проверку контрагентов, можно проводить раз в неделю в нерабочее время или в конце (начале) рабочего дня.
Отдельное внимание следует уделить всему, что связано с поисковым индексом. Полнотекстовый поиск безусловно удобная вещь, но работа с его индексом является весьма и весьма ресурсоемкой задачей. Поэтому не стоит впадать в крайность и отказываться от него, но следует серьезно пересмотреть и настроить его параметры.
А теперь подумаем, как часто в базе добавляется либо обновляется информация, по которой вы наиболее часто проводите поиск? Явно не каждую минуту, поэтому вполне достаточно будет обновлять индекс гораздо реже: раз час, раз в день или вообще раз в неделю.
Тоже самое относится и к слиянию индекса ППД, если вы обновляете индекс раз в день, то следует настроить слияние на выполнение раз в неделю, при этом выбрав в качестве начала задания наименее мешающее работе время.
Эти несложные операции позволят вам без особого ущерба для функциональности конфигурации поднять комфортность работы с ней на новый уровень за счет отказа от частого выполнения достаточно ресурсоемких операций. Только не следует впадать в крайности, грамотно рассудите, насколько вам необходимы те или иные возможности и как часто следует выполнять связанные с ними задания.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Полнотекстовый поиск в 1С
1. Механизм полнотекстового поиска в 1C
В программных продуктах 1С реализована возможность полнотекстового поиска данных, которая позволяет выполнять быстрый поиск в 1С необходимой информации по базе. Такой поиск очень эффективен, если информационная база 1С содержит большой объем информации, а также в случаях, когда точно неизвестно где находятся интересующие нас данные, либо мы не знаем их точного названия. Также полнотекстовый поиск поддерживает следующие возможности:
· транслитерацию текста (ввод латиницей русских слов);
· замещение (ввод символов в русских словах латиницей);
· поиск, учитывающий синонимы русского и английского языка;
2. Обновление индекса ППД 1С
Для правильной работы полнотекстового поиска требуется постоянная актуализация индекса полнотекстового поиска данных. Актуальность индекса обеспечивается двумя регламентными заданиями – «Обновление индекса ППД» и «Слияние индекса ППД», которые выполняются один раз в минуту и один раз в сутки соответственно.
Иногда возникает ситуация, что по каким-то причинам работоспособность механизма поиска нарушена, либо он осуществляется очень медленно. В таких ситуациях требуется очистить и обновить индекс ППД 1С вручную.
Данные действия доступны только пользователю с правами «Администратор» в 1С. Переходим в «Администрирование → Общие настройки → Полнотекстовый поиск данных» и нажимаем «Настроить».
Рис. 1 Ручная настройка ППД в 1С
Откроется вкладка «Управление полнотекстовым поиском и извлечение текстов». Отмечу, что полнотекстовый поиск всегда включен по умолчанию. Если вам необходимо повысить производительность программы и пользователи не так часто пользуются полнотекстовым поиском, то данный функционал целесообразно отключить.
Рис. 2 Полнотекстовый поиск данных в 1С активирован по умолчанию
3. Проверка индекса
Также имеется возможность ограничить максимальный размер данных. По умолчанию это ограничение равно 1мб, но это значение можно менять в сторону увеличения или уменьшения в зависимости от доступных ресурсов компьютера.
Рис. 3 Настройка максимального размера индексируемых файлов
Ниже мы видим кнопки обновления, очистки и проверки индекса.
Рис. 4 Кнопки обновления, очистки и проверки индекса в 1С
Для того чтобы устранить проблемы с поиском, для начала нам необходимо удалить все индексные файлы по кнопке «Очистить индекс».
Далее необходимо заново построить индекс, для чего выбираем «Обновить индекс» (данная кнопка доступна только в том случае, если статус индекс «Требуется обновление).
После выполнения данных операций требуется нажать кнопку «Проверить индекс», чтобы убедиться, что он содержит корректные данные.
Таким образом, выполнив эти несложные манипуляции с индексом, мы восстановим работоспособность и быстродействие полнотекстового поиска
Полнотекстовый поиск в 1С. №2 Самое основное для разработчика
Продолжаем
Продолжаем развивать тему штатного полнотекстового поиска платформы 1С. До этого был представлен инструмент для обслуживания полнотекстового индекса «Мастер полнотекстового поиска» c расширенными возможностями и подробно рассмотрены нюансы работы поиска в динамических списках в публикации «Полнотекстовый поиск в 1С. №1 Грабли в динамических списках».
Сегодня мы как раз и рассмотрим вопросы и проблемы, связанные с разработкой и использованием полнотекстового индекса, а также некоторые нюансы его работы. Начнем с настроек метаданных объектов конфигурации.
Индексировать все
Эта настройка позволяет включить / исключить объект из полнотекстового индекса. При создании объектов по умолчанию поиск включен для всех объектных типов, а для регистров выключен. Настройка доступна почти для всех объектов метаданных.
Также доступно свойство «Полнотекстовый поиск» для отдельных полей (реквизитов, ресурсов, измерений) вне зависимости (почти) от их типа (кроме ссылок на внешние источники данных разве что). Да, полнотекстовый индекс можно использовать даже для регистров, но используется это редко. Какой смысл искать данные через индекс ППД в регистре накопления? Наверное, для регистров сведений еще это как-то можно применить, и то в особых случаях. Например в 1С:Документооборот что-то подобное применялось.
Кроме этого, есть еще настройки поиска данных при вводе по строке. В разделе настроек «Поле ввода» объектных типов можно найти настройку «Полнотекстовый поиск» для ввода по строке. Эта настройка имеет описание на ИТС.
Позволяет выполнять поиск не средствами СУБД, как это делается обычно, а с помощью индекса ППД. Также управлять использованием ППД при вводе можно в событии «ОбработкаПолученияДанныхВыбора» модуля менеджера объекта.
Для событий ввода по строке в технологический журнал даже были добавлены события «INPUTBYSTRING» для анализа его работы. Подробнее есть информация здесь.
Пожалуй, это практически все настройки полнотекстового поиска, которые может использовать разработчик для определения состава данных, которые платформа 1С добавила в индекс ППД, а также некоторых действий при поиске.
Первая проблема и обслуживание
Основные настройки мы рассмотрели, но появилась и первая проблема. Если в конфигурации множество объектов, а на стороне базы в этих объектах большое количество записей, то сразу возникает вопрос: а что, если полнотекстовый поиск мне нужно использовать только для одного справочника?
На небольших и средних базах такой вопрос может вообще не возникнуть, но если база «весит» сотни гигабайт или терабайты, то просто так взять и проиндексировать ее штатными средствами платформы 1С практически невозможно. Или же это займет несколько дней, неделю (делайте ставки). Для любознательных: краткое описание процесса поддержки полнотекстового индекса.
В общих чертах, сам процесс поддержки индекса ППД выглядит следующим образом:
1. Пользователь изменяет данные, для которых включено использование индекса ППД. Платформа регистрирует эти данные для последующего помещения в индекс, добавляя записи вида «числовой идентификатор типа + уникальный идентификатор» (для регистров вместо гуида комбинация значений ключевых полей) в служебный файл.
Файлы со списком изменений находятся в каталоге полнотекстового индекса 1Cv8FTxt. Для файловой базы находится рядом с базой, а клиент-серверный режим сохраняет каталог полнотекстового индекса в специальном каталоге сервера:
. \srvinfo\ \1Cv8FTxt
Подробнее о числовом идентификаторе и идентификаторе ссылки можно узнать здесь, а также попробовать инструмент для поиска значения по ссылке. Вот так выглядит информация об этом значении:
Примерно тот же принцип используется для формирования списка объектов к индексированию в инструменте «Мастер полнотекстового поиска».
2. Далее в базе работают два регламентных задания: обновление индекса ППД, которое в течении дня с некоторой периодичностью (обычно 1 минута) обрабатывает список измененных данных и актуализирует частичный индекс ППД. После обновления, конечно же, список изменений очищается. Также обычно присутствует второй задание «Слияние индекса ППД», которое объединяет частичный и основной индекс для эффективной работы поиска.
Именно на этапе обновления или слияния индекса платформа 1С может значительно «подвиснуть», если данных к индексированию в базе очень много. Не спасет даже многопоточное обновление индекса несколькими фоновыми заданиями, которое появилось в платформе. Именно поэтому в таких случаях нужно выбрать конкретные объекты метаданных, для которых будет использоваться полнотекстовый поиск, а для каких нет.
Но сделать последнее не так просто, ведь групповой обработки изменения свойства «Полнотекстовый поиск» нет, а «прокликивать» каждый объект это та еще задача (хотя определенным образом ее можно решить с помощью EDT, но. ). Плюс за всеми изменениями не уследишь. В итоге самым простым способом является отключение полнотекстового поиска для всех объектов через выгрузку конфигурации в файлы и последующее его включение только для нужных объектов и свойств:
На всякий случай это можно сделать на отдельной конфигурации. А позже применить изменения на основную конфигурацию через сравнение / объединение с проверками.
Теперь проблема индексирования всех объектов базы будет решена. Мы оставим в полнотекстовом индексе только те данные, те объекты, которые нам действительно нужны. К сожалению, через расширения изменять настройку использования полнотекстового поиска пока нет возможности, поэтому придется изменять все в самой конфигурации. Но, возможно, это временное ограничение. Идеальным решением была бы возможность настраивать индексирование объектов в режиме 1С:Предприятие, но пока такой возможности также не предоставляется.
Добавлю, что в будущем необходимо следить, чтобы для новых объектов конфигурации устанавливались корректные настройки использования полнотекстового поиска. Как говорилось ранее, для новых объектов метаданных ссылочных типов полнотекстовый поиск включен по умолчанию. Это может быть нежелательным поведением, не зря же мы все отключали до этого. Поэтому можно написать пару unit-тестов и отслеживать корректность настроек индекса ППД с божьей их помощью.
Программный поиск
Мы рассмотрели основные настройки состава индекса ППД и проблему для больших баз данных, немного погрузились во внутренности механизма обслуживания и привели некоторые полезные ссылки. Это то, что точно следует знать разработчику о полнотекстовом поиске для эффективной работы. Теперь рассмотрим примеры программного использования индекса ППД и ключевые возможности функционала.
Внимание. Все данные из примеров вымышленные. Любое сходство с реальными людьми случайно 🙂 Для примера было сгенерировано порядка 1 млн. записей в справочнике «Физические лица», который есть во многих типовых конфигурациях.
Самый простой пример
Выполнять операции поиска данных через индекс ППД можно через объект «СписокПолнотекстовогоПоиска», который создается следующим образом:
В этот момент список не содержит каких-либо результатов поиска. Это лишь служебных объект с установленной строкой поиска и размером порции получаемых данных. Далее можно установить дополнительные настройки, которые не являются обязательными.
С их помощью мы можем установить фильтры на объекты метаданных, по которым выполняется поиск, а также указать использование представления объектов в поиске.
Опции «ПолучитьОписание» и «ПолучатьПредставление» позволяет к результату поиска добавить контекстные данные и представления объектов, но это может снизить производительность. Следует использовать при необходимости. Если установить обе опции в «Ложь», то иногда можно заметно ускорить поиск.
Когда все параметры заданы, мы можем получить первую порцию результатов. Есть несколько вариантов:
Это может быть получение либо первой порции данных, либо новой порции от предыдущего результат поиска (следующую или предыдущую). Также можно использовать метод «Получить» для получения конкретного элемента результата поиска, который был получен в текущей порции. Фактически эти методы позволяют обходить результаты запроса постранично. Никто, кстати, не мешает обойти результаты текущей порции простым циклом.
Когда порция получена, мы можем извлечь дополнительную информацию о результате поиска:
По этим параметрам можно судить сколько данных найдено, сколько вообще порций данных нужно обработать, начало текущей порции и точность результата.
Для получения результата поиска в виде HTML или XML платформа 1С предоставляет метод «ПолучитьОтображение».
Именно этим способом в типовых конфигурациях реализуется отображение результата поиска в обработке «ПолнотекстовыйПоискДанных» из БСП. Вот так выглядит эта обработка.
Это практически все средства для программной работы, которые имеет платформа 1С из коробки. Мы не рассматриваем процедуры обслуживания и настройки индекса ППД. Это Вы можете посмотреть в других публикациях, ссылки на которые были пару раз упомянуты выше. Теперь мы рассмотрим еще примеры работы со строкой поиска, чтобы увидеть всю мощь работы полнотекстового поиска.
Магия строки поиска
Строка поиска позволяет указывать как именно этот самый поиск должен выполняться. При этом есть возможность делать как четкий поиск, так и более гибкий с разными допущениями и условиями. Все примеры далее будем делать с использованием стандартной обработки поиска из БСП, которую Вы также можете использовать для изучения работы механизма.
Логические операторы
Самоотверженный Валун Кубрикович
то фактически используются операторы И между словами:
Самоотверженный И Валун И Кубрикович
Это стандартное поведение. В результат попадут все объекты, в тексте которых присутствуют все три слова. При этом если поменять местами искомые слова, то результат будет тот же.
Самоотверженный И Кубрикович И Валун
Таким же образом мы можем использовать оператор ИЛИ:
Самоотверженный ИЛИ Валун ИЛИ Кубрикович
Порядок слов в условиях также не имеет значения. В результат попадут все объекты, в текстовых данных которых есть хотя бы одно из искомых слов.
И, конечно же, для поиска можно использовать оператор НЕ, чтобы исключать из результатов те объекты, в текстовых данных которых содержится определенное слово. Например, такой запрос:
Самоотверженный Лемович НЕ Меридиан
найдет все объекты, в которых содержатся слова «Самоотверженный» и «Лемович», но при этом нет слова «Меридиан».
Есть один нюанс: эти операторы не используются как унарные в начале строки поиска. То есть нельзя сделать вот такой запрос:
НЕ Меридиан
Таким образом, с помощью операторов можно выполнять поиск вхождения слов по текстовому содержимому объектов. Вот так выглядят все примеры выше.
Теперь мы можем перейти к следующему оператору.
Рядом
Гордый РЯДОМ/2 Фарадеевич
при этом этот запрос будет эквивалентен:
Фарадеевич РЯДОМ/2 Гордый 2005
Мы найдем все объекты, где после слова «Гордый» через одно слово идет «Фарадеевич». При этом поиск выполняется как в левую, так и в правую сторону. Можно комбинировать поиск с другими операторами. Например, так мы найдем тех же физ. лиц, но с годом рождения 2005.
Гордый РЯДОМ/2 Фарадеевич 2005
Также этот оператор позволяет указывать направление поиска слов. Для это перед параметром n нужно указать знак + (для поиска после первого слова) или — (для поиска до первого слова). Изменим предыдущее выражение:
Гордый РЯДОМ/+2 Фарадеевич
Если же поставить знак —, то результат поиска будет пустым, т.к. нет подходящих записей.
Гордый РЯДОМ/-2 Фарадеевич
Оператор может быть полезен для более точного поиска данных.
Теперь мы можем перейти к другим операторам.
Точный поиск
В случаях, когда нужно найти текст по конкретной фразе, то можно указать это через двойные кавычки. Например, поиск по:
найдет все значения, в которых есть эта фраза целиком. Если же сделать поиск по:
то результат поиска будет пустым, т.к. нигде такой фразы не встречается.
Таким образом, если нужен поиск конкретной фразы, то этот оператор в помощь.
Группировка слов
Отдельно стоит упомянуть возможность группировки слов с неограниченным уровнем вложенности с помощью скобок: ( и ). Например, выражение:
(Самоотверженный И Валун) ИЛИ (Яростный И Эрудит)
найдет все объекты, в текстовом содержимом которых есть вместе слова «Самоотверженный» и «Валун» или «Яростный» и «Эрудит». Очень полезно для сложных условий поиска.
Идем дальше.
Групповой символ
Групповой символ * используется для поиска по началу строки. Например, есть физ. лицо с ИНН 739780874266. Его можно найти явно, указав ИНН, или с помощью выражений:
7397808742*
7397808*
739780*
Чем меньше значащих символов в начале строки, тем больше подобный поиск может найти данных. А вот такое выражение, как Вы уже поняли, вообще ничего не найдет:
*39780874266
Поиск по началу строки часто может быть очень эффективным инструментом поиска данных.
При использовании этого оператора может быть найдено огромное количество слов, поэтому в платформе 1С реализовано ограничение: максимальное количество слов для группового поиска равно 300.
Еще кое-что
— нечеткий поиск слов с указанным количеством отличий (по умолчанию равен 1).
Здесь приведу пример из синтаксис-помощника. Например, запрос «
Система» найдет «систама», «сивтема», а запрос «Система
2″ найдет «ситтама», «сеттема».
При использовании этого оператора может быть найдено огромное количество слов, поэтому в платформе 1С реализовано ограничение: максимальное количество слов для группового поиска равно 300.
Еще добавлю, что в корне конфигурации можно настраивать дополнительные словари полнотекстового поиска. Но все это уже другая история.
Кстати, в платформе 8.3.16 добавился поиск с помощью индекса ППД по хештегам (строки вида #Слово, от символа # до первого пробела). Еще не приходилось использовать на практике.
Все это достаточно специфические возможности и на моей практике их приходилось использовать очень редко. Если вообще приходилось.
Подводные камни
Вот так, от вопросов обслуживания и настройки полнотекстового индекса, проблем его использования в самом распространенном кейсе и до вопросов разработки и особенностей работы мы прошли небольшой путь. Так были затронуты почти все вопросы, связанные со штатным механизмом полнотекстового поиска платформы 1С. Но это еще не все!
При работе с ним можно встретиться с некоторыми подводными камнями, о которых стоит знать заранее:
В общем, полнотекстовый поиск полезен, но нужно быть готовым к решению проблем.
Вместо заключения
Это вторая публикация в серии статей про полнотекстовый поиск, в которой был сделан упор на вопросы разработки и использования индекса ППД и связанные нюансы его работы. Немного поговорили и о сопровождении. Подведем итог и соберем основные плюсы и минусы штатного механизма полнотекстового поиска.
А что Вы думаете о штатном полнотекстовом поиске?
В следующих статьях мы подробней поговорим о производительности полнотекстового индекса и практические примеры его использования в рамках оптимизации производительности. Рассмотрим несколько кейсов его применения в рамках highload (да, такое возможно).
Другие ссылки
Авторские разработки (все разработки на одной странице)
Диагностика контекста выполнения (внешняя компонента) — небольшая экспериментальная внешняя компонента для получения дополнительной информации о контексте выполнения.