Управление полнотекстовым поиском 1с 8.3 как отключить. Совет3: Отключить версионирование объектов

Реализовано в версии 8.3.5.1068.

Мы переработали механизм поиска в списках, сделав его более удобным и понятным.

Первое внешнее отличие заключается в том, что теперь в командной панели формы присутствуют два новых элемента: строка поиска и управление поиском :

Как и раньше, чтобы найти что-то, достаточно просто начать набирать на клавиатуре искомые слова. Курсор автоматически перейдет в строку поиска, и в ней будут отображаться набираемые вами символы.

Например, если вы хотите найти, что покупала «Шлюзовая ООО» оптом со среднего склада, то для этого просто наберите на клавиатуре: «шлюз опт сре»:

Видео загружается...

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

Очень удобной возможностью нового поиска является поиск по номеру без учёта лидирующих нулей. То есть, если вы хотите найти накладную с номером 000000011, для этого достаточно набрать на клавиатуре (или прямо в строке поиска) «11»:

Поиск по текущему значению

Мы вернули в платформу команду поиска по текущему значению. Искать по текущему значению можно было и раньше. Для этого нужно было вызвать диалог поиска и нажать Enter. Но без специальной отдельной команды многие пользователи этого не понимали.

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

Видео загружается...

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

Видео загружается...

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

Видео загружается...

Расширенный поиск

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

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

Видео загружается...

Выбор периода

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

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

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

Видео загружается...

Период в несколько месяцев вы можете выбрать легко. Для этого нужные месяцы надо просто выделить мышью:

Видео загружается...

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

Видео загружается...

Как выглядит новый поиск в конфигураторе

Для работы с новым механизмом поиска мы добавили в форму новый элемент. Он называется Дополнение элемента формы . Раньше у формы было 5 элементов: Поле , Таблица , Кнопка , Группа и Декорация . Теперь таких элементов шесть.

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

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

Видео загружается...

Совет1: Отключить полнотекстовый поиск*

Большинство бухгалтеров не знают о существовании данной функции и никогда ею не пользуются (Сервис - Поиск данных)

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

Механизм полнотекстового поиска в 1С по умолчанию включен. Чтобы отключить полнотекстовый поиск, нужно зайти Операции - Управление полнотекстовым поиском -Настройка и убрать признак «Разрешить полнотекстовый поиск »

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

Отключение механизма полнотекстового поиска дает увеличение производительности до 10%.

Совет2: Пересчет итогов*

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

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

Для того, чтобы выполнить пересчет итогов требуется зайти в Операции - Управление итогами, установить дату по которую рассчитать итоги (начало текущего месяца) у раздела «Все регистры» и нажать кнопку «Выполнить»

Пересчет итогов осуществляется в монопольном режиме (никто не должен работать в программе, кроме вас)**

Пересчет итогов дает увеличение производительности до 10%.

Совет3: Отключить версионирование объектов***

Большинство бухгалтеров не знают о существовании данной функции и не используют ее.

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

Настройка версионирования осуществляется через Операции - Настройки программы -Версионирование. Если настройка не требуется, то нужно убрать признак «Использовать версионирование объектов».

Если настройка нужна для определенного перечня документов, то зайти в «Настройку версионирования объектов» и правой кнопкой мышки установить настройку «Версионировать» для нужных объектов**

Отключение версионирования дает увеличение производительности до 5%.

_________________________________________________________________

*Для конфигураций на базе «1С:Управление Производственным предприятием», «1С:Комплексная автоматизация», «1С: Бухгалтерия предприятия 2.0», «1С:Управление Торговлей 10.3»

**Перед выполнением регламентных операций с базой обязательно создание копии базы.

***Для конфигураций на базе «1С:Управление Производственным предприятием», «1С:Комплексная автоматизация».

Добрый день, коллеги, сегодня я опишу поиск в списках 1С 8.3, используемые алгоритмы, основные проблемы, ошибки и рациональность использования ресурсов при поиске в списках.

Краткое описание элементов поиска

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

Таблицу в таком виде мы получаем с сервера 1с. Притом 1с сервер хранит эту таблицу в у себя в оперативной памяти а не в базе данных, для более быстрого доступа пользователей к ней. например скорость запроса к памяти проходит на скорости 32 GB/s, а запрос к диску максимум на 6 GB/s, то есть минимум в 5 раз медленнее. Это называется кэшированием – хранение части данных, которые запрашиваются чаще всего. В данном конкретном примере данные отсортированы по номеру, поэтому этот кэш достаточно статичен, то есть крайне редко изменяется и крайне часто запрашивается. Если бы таблица была отсортирована по дате по убыванию то каждый новый документ добавлялся в начало списка, тем самым изменяя данные в кэше.

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

Поиск с помощью строки поиска

Вернемся к 1с и попробуем что-то найти:

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

Тут мы нашли один результат, но если использовать реальные базы, то на этот запрос поиск выдал бы и 0000111 и 0144100111 и покупателя №11 и склад № 11, и комментарии содержащие число 11, в некоторых ситуациях связанных с настройкой конфигурации 1с и даты с 2011 года. Это порядочно увеличивает выходные данные и замедляет отклик, к тому же занимая память на сервер 1с, при этом представьте, что список содержит миллионы строк, что вы работаете на этом сервере вместе с другими сотрудниками, и на сервере при этом используются несколько баз. Для избежания этих проблем используется управляемый поиск.

Управляемый поиск

Тут используются три основных критерия

Где искать – выбор столбца таблицы

Что искать – цель поиска

Как искать – какой шаблон поиска использовать

Думаю первые два пункта понятны, при том что они построены как контекстное меню для столбцов и контекстное меню с поиском по значениям с переходом в параметры результата.

Третий же параметр выглядит так:

По началу строки:

Строка поиска:”1 ск”

Результаты: 1 ск лад, 1 СК , 1 Ск олково …..

По части строки:

Строка поиска: “скл”

Результаты: 1 скл ад, скл адское помещение №1, раскл адная кровать, …..

По точному совпадению:

Результат будет соответствовать строке поиска.

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

Индексы в 1с

Для ускорения поиска в базе данных 1с используют индексы. Тут нужно немного теории.

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

Этот индекс статичен, но допустим мы добавили новое слово в словарь или два или сто. Нумерация таблиц статического индекса тут не годится. Тут есть два варианта решения: первый полное перестроение индекса, то есть считывание всего словаря и составление нового оглавления, либо усложнение архитектуры индекса. Основной реализацией архитектуры индексов являются B-дерево, логически выглядит оно так.

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

Как видите на рисунке изображено трехуровневое b-дерево, но уровней может быть 10, 20 , 30…

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

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

Выводы

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

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

Рассмотрим небольшую инструкцию: как найти обработку в интерфейсе, как с помощью неё свернуть дублирующиеся элементы номенклатуры, контрагентов и других справочников.

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

Обработка для поиска дублей

Обработка Поиск и удаление дублей расположена на вкладке «Администрирование», в разделе «Поддержка и обслуживание»:

В самом низу:

Получите 267 видеоуроков по 1С бесплатно:

В обработке необходимо указать, какой справочник мы хотим «просканировать» (в нашем случае — номенклатура), по какому отбору (не помеченные на удаление) и что для нас будет являться фактом дубля (возьмем совпадение наименования по похожим словам). После настройки нажимаем «Найти дубли».

1С предложит варианты дублей:

На примере холодильника «СТИНОЛ»: система отметила элемент с окончанием «101» как оригинал, а элемент «103» как дубль. В окне справа мы видим, в каких документах участвует данных элемент номенклатуры.

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

Функциональность нового поиска основана на двух механизмах:
- полнотекстовый поиск (работает очень быстро и требует минимум вычислительных ресурсов);
- поиск средствами СУБД (в общем случае длительность поиска и затраты вычислительных ресурсов пропорциональны объему информации в таблице).

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

Если же полнотекстовый поиск включен в информационной базе, а индекс не обновлен совсем или частично (из моей практики 95% информационных баз Заказчиков), то пользователь при поиске получит либо недостоверный, либо пустой результат поиска.

Спрашиваем у Фирмы 1С - как быть? как гарантировать достоверность результатов поиска всегда?
Получаем ответ: Да, для того, чтобы результаты поиска при включенном полнотекстовом поиске были актуальными, нужно следить за тем, чтобы индекс полнотекстового поиска был актуальным.Других вариантов эффективного и актуального поиска пока нет ().

А существует ли вообще "актуальный полнотекстовый индекс"? Зависит от числа пользователей, интенсивности изменения информации в базе и частоты запуска обновления индекса. Обычно обновление индекса запускают раз в 60 секунд. Хорошо, если объектов было изменено не много, и процедура успела обработать все изменения за эти 60 секунд. А если сделали перепроведение группы документов, или массовую перезапись справочника? В этом случае никто не может гарантировать время, через которое поиск по индексу снова даст достоверные данные.
В принципе, это не особо критично, кроме нескольких ситуаций. Частый вариант работы пользователей - установить в списке отбор по какому-то значению, например "Контрагенту", ввести новый или скопировать существующий документ и записать. Со старым поиском новый документ моментально был виден в списке. Теперь пользователь его увидит только через N секунд в лучшем случае, где N скорее ближе к 50-60 секундам, нежели к 2-3.
Если не заметить, что нового документа нет и по отобранным результатам предоставить информацию кому-либо, то она будет заведомо недостоверной.

Это было в случае нормальной работы с информационной базой. А что будет в специфических ситуациях? Приведу пару примеров.
1) В рабочей базе полнотекстовый индекс включен и часто обновляется. Пользователь просит развернуть ему копию рабочей базы, что по ней заняться анализом данных.
Восстанавливаем бэкап и даем доступ. Вот только полнотекстовый поиск работать не будет, т.к. индекс хранится не в СУБД, а в отдельных файлах (и в файловом, и в клиент-серверном варианте). Индекса нет в dt-файле.
т.е. чтобы пользователь смог использовать поиск по спискам - надо выключить полнотекстовый индекс в этой базе. Правда пользователь будет слегка удивлен тому, что поиск будет выполняться гораздо дольше. Либо перестроить индекс по всей базе.

2) (Актуально для более менее больших баз). В рабочей базе полнотекстовый индекс включен и часто обновляется. Наступает конец месяца и начинается закрытие периода. Начинаем массово грузить и перепроводить документы. Для снижения нагрузки на систему блокируем выполнение регламентных заданий, соответственно, и обновление индекс останавливается. Пользователи будут, мягко говоря, в недоумении - чего же в списках нет новых или измененных документов. Единственный выход - отключить полнотекстовый поиск для информационной базы, и, соответственно, получить еще большую нагрузку на оборудование за счет тяжелого поиска по всем реквизитам.

Таким образом, как мне кажется, операция по обновлению индекса станет еще одной головной болью администраторов информационных баз.
Система, ранее гарантировавшая 100% достоверность и актуальность информации в любой момент, сейчас превращается скорее в справочную систему, в которой нельзя быть полностью уверенным.
А пользователи получают еще один повод для упрека ИТ-шников - "ваша система неправильно работает".