1с как поместить данные в строку поиска
Использован релиз 3.0.104
В программе «1С:Бухгалтерия 8» (ред. 3.0) реализован механизм полнотекстового поиска во всех полях любого справочника, документа, списка и др.:
- Сочетание клавиш «Ctrl» и «F» автоматически устанавливает курсор в поле «Поиск». Начните набирать текст и поиск будет запущен автоматически.
- По кнопке со значком лупы (или сочетанием клавиш «Alt» и «F») можно выбрать «Расширенный поиск» и установить параметры поиска (рис. 1).

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

Для автоматического обновления индексов, быстрой и корректной работы поиска должно быть настроено выполнение двух регламентных заданий – «Обновление индекса ППД» и «Слияние индекса ППД». Обычно эти регламентные задания настроены по умолчанию и выполняются в программе ежедневно по расписанию в автоматическом режиме (например, каждый день с 8.00 каждый час).
Внимание! При работе через облачные технологии регламентные задания выполняются автоматически, их настройка не требуется.
- Раздел: Администрирование – Обслуживание.
- Раскройте подраздел «Регламентные операции» и перейдите по ссылке «Регламентные и фоновые задания».
- В сформированном списке установите флажки у заданий «Обновление индекса ППД» и «Слияние индекса ППД».
- Поочередно двойным щелчком мыши откройте каждое задание, перейдите по ссылке «Расписание».
- В форме «Расписание» на закладке «Общее» указываются дата начала и завершения задания и режим повтора.
- На закладке «Дневное» укажите время начала задания и время повтора.
- На закладке «Недельное» и «Месячное» проверьте установку флажков по дням недели и по месяцам.
- Кнопка «ОК», затем кнопка «Записать и закрыть».

Смотрите также
Подпишитесь на новости
Не пропускайте последние новости — подпишитесь
на бесплатную рассылку сайта:
- десятки экспертов ежедневно мониторят изменения законодательства и судебную практику;
- рассылка бесплатная, независимо от наличия договора 1С:ИТС;
- ваш e-mail не передается третьим лицам;
1с как поместить данные в строку поиска
есть в табличной части неуправляемых форм штатный механизм поиска при вводе. Что то подобное мне надо реализовать на тонком клиенте. Написал кое какой код, вот только беда, при вводе постоянно затираются буквы что ввели, из за чего результаты поиска постоянно скачут.
Написал следующий код:
&НаКлиенте
Процедура ТоварыНаименованиеТовараИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
СтандартнаяОбработка=ложь;
Если ПустаяСтрока(Текст) ТОгда
ТекДанные = Элементы.Товары.ТекущиеДанные;
ТекДанные.НаименованиеТовара = ПолучитьНаименованиеТОвара(ТекДанные.Номенклатура);
товары.Сортировать(«НаименованиеТовара»);
Элементы.Товары.ТекущаяСтрока=товары[0];
Элементы.Товары.ОтборСтрок = Неопределено;
Иначе
найденнаяСтрока = СделатьОтбор(Текст);
Стр = новый Структура;
Стр.Вставить(«НаименованиеТовара»,найденнаяСтрока);
Строки = товары.НайтиСтроки(Стр);
Если Строки.Количество()>0 Тогда
Элементы.Товары.ТекущаяСтрока = Строки[0].НомерСтроки;
КонецЕсли;
//Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура(Стр);
&НаСервере
Функция СделатьОтбор(Текст)
МассивТип = новый Массив;
МассивТип.Добавить(Тип(«Строка»));
КвСтрока = новый КвалификаторыСтроки(100);
Описание = новый ОписаниеТипов(МассивТип. КвСтрока);
ТЗ = новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«НаименованиеТовара»,Описание);
Для каждого эл из товары ЦИкл
НС = ТЗ.Добавить();
ЗаполнитьЗначенияСвойств(НС,эл);
КонецЦикла;
Построитель = новый ПостроительЗапроса;
Построитель.ИсточникДанных = новый ОписаниеИсточникаДанных(ТЗ);
ТОтбор = Построитель.Отбор.Добавить(«НаименованиеТовара»);
Тотбор.ВидСравнения=ВидСравнения.Содержит;
ТОтбор.Значение = текст;
ТОтбор.Использование=Истина;
Построитель.Выполнить();
Результат = Построитель.Результат.Выгрузить();
//Результат.Сортировать(«НаименованиеТовара»);
Если Результат.Количество()>0 Тогда
Возврат Результат[0].НаименованиеТовара;
КонецЕсли;
(0) На тонком клиенте все работает через Менеджер того справочника, который ты редактируешь.
Метод «ОбработкаПолученияДанныхВыбора»
СправочникМенеджер..ОбработкаПолученияДанныхВыбора (CatalogManager..ChoiceDataGetProcessing)
СправочникМенеджер. (CatalogManager.)
ОбработкаПолученияДанныхВыбора (ChoiceDataGetProcessing)
Синтаксис:
Тип: СписокЗначений.
В обработчике можно сформировать и передать в этом параметре данные для выбора. При этом параметр должен быть установлен в Ложь.
В элемент списка значений можно помещать не только конкретное значение, но и структуру.
Анализ значения на предмет того, является ли она структурой или просто значением, используется полем ввода управляемой формы в случаях:
Выбора из списков, возвращаемых событиями поля ввода;
Выбора из списка в поле ввода, содержащегося в свойстве СписокВыбора.
В случае, если в значение элемента списка значений используется Структура, она должна иметь следующий состав свойств:
Значение (Value) – собственно значение (обязательный элемент структуры);
ПометкаУдаления (DeletionMark) – (Булево) содержит признак пометки значения на удаление. Если Истина, то при выборе такого элемента из списка значений выдаст стандартное предупреждение;
Предупреждение (Warning) – (Строка) содержит текст предупреждения, которое будет показано при выборе элемента из списка значений.
Тип: Структура.
Содержит параметры выбора.
Их можно дополнительно настроить в обработчике события.
Структура, в которой обязательно должны содержаться следующие ключи:
СтрокаПоиска (SearchString) — строка, используемая при поиске данных, Неопределено — осуществляется быстрый выбор;
Отбор (Filter) — отбор, используемый при поиске данных;
ВыборГруппИЭлементов (ChoiceFoldersAndItems) — указывается использование групп и элементов (только для иерархических данных); тип ИспользованиеГруппИЭлементов;
СпособПоискаСтроки (StringSearchMode) — указывается способ поиска при вводе по строке; тип СпособПоискаСтрокиПриВводеПоСтроке; параметр может отсутствовать;
ПолнотекстовыйПоиск (FullTextSearch) — указывается необходимость использования полнотекстового поиска при вводе по строке; тип — ПолнотекстовыйПоискПриВводеПоСтроке; параметр может отсутствовать;
РежимПолученияДанныхВыбора (ChoiceDataGettingMode) — указывает режим запуска поиска. Тип РежимПолученияДанныхВыбораПриВводеПоСтроке; параметр может отсутствовать.
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина.
Описание:
Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.
———————————————————————————
Параметры можно послать через Элемент на форме, «Параметры выбора ПараметрыВыбора, ChoiceParameters»
Оформляешь там свой параметр и в «ОбработкаПолученияДанныхВыбора» его обработываешь, как надо.
Минус. Если запрос должен быть быстрым.
Больше 50-ти элементов все ровно не отобразится, так что не имеет смысла искать больше.
+ Параметр можно задавать произвольный, это необходимо, что бы выборка работала в штатном режиме из других форм 🙂
Поиск в списках
Мы переработали механизм поиска в списках, сделав его более удобным и понятным.
Первое внешнее отличие заключается в том, что теперь в командной панели формы присутствуют два новых элемента: строка поиска и управление поиском:

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

Поиск по текущему значению
Мы вернули в платформу команду поиска по текущему значению. Искать по текущему значению можно было и раньше. Для этого нужно было вызвать диалог поиска и нажать Enter. Но без специальной отдельной команды многие пользователи этого не понимали.
Теперь вы можете легко найти все строки таблицы, в которых содержится то же значение, что и в выделенной ячейке. Проще всего для этого использовать команду, которая находится в контекстном меню таблицы:
Обратите внимание, что теперь над таблицей отображаются те значения, по которым найдены строки таблицы. Это удобно по двум причинам. Во-первых, теперь наглядно видно, что таблица показывает не все данные, а только некоторую часть. Во-вторых, значения, по которым выполнен поиск, вы теперь можете легко удалить или изменить на другие значения:
Также удобным моментом является то, что платформа запоминает текущие значения, по которым выполнялся поиск. Они сохраняются в истории поиска, которая доступна через кнопку управления поиском. Поэтому в любой момент вы можете вернуться обратно к тем значениям поиска, которые использовали раньше:
Расширенный поиск
Механизм поиска, существовавший в платформе раньше, остался, и называется теперь Расширенный поиск. Мы немного изменили внешний вид его диалога и добавили возможность поиска по началу строки.
Для вызова расширенного поиска мы сделали отдельную команду на тот случай, если у вас возникнет желание использовать именно его. И кроме этого платформа использует его тогда, когда вы меняете значения, по которым уже выполнен поиск:
Выбор периода
Мы значительно переработали диалог выбора периода. Этот диалог используется в отчётах, для задания периода, за который должны быть показаны данные. Этот же диалог используется в списках документов для поиска документов, относящихся к определенному периоду.
Отбор списка документов по периоду можно считать одним из способов их поиска — поиск по дате. Поэтому команду установки периода мы разместили в управлении поиском.
При первом открытии диалог предлагает выбрать один или несколько месяцев текущего, предыдущего или последующего года. По нашим оценкам это наиболее часто встречающийся сценарий поиска:
Период в несколько месяцев вы можете выбрать легко. Для этого нужные месяцы надо просто выделить мышью:
Если есть необходимость, можно тут же задать произвольный период, указав дату начала и дату окончания. Или же вы можете перейти на другую страницу диалога и выбрать один из стандартных периодов, имеющихся в платформе. Для того чтобы вам было легче ориентироваться в большом количестве стандартных периодов, мы сгруппировали их по интервалам: день, неделя, декада и т.д.:
Как выглядит новый поиск в конфигураторе
Для работы с новым механизмом поиска мы добавили в форму новый элемент. Он называется Дополнение элемента формы. Раньше у формы было 5 элементов: Поле, Таблица, Кнопка, Группа и Декорация. Теперь таких элементов шесть.
Для таблиц динамических списков платформа автоматически создаёт три таких элемента: Строка поиска, Состояние просмотра и Управление поиском. Появление этих элементов в форме регулируется тремя новыми свойствами таблицы: ПоложениеСтрокиПоиска, ПоложениеСостоянияПросмотра и ПоложениеУправленияПоиском.
При желании разработчик может не использовать стандартные элементы (Дополнение элемента формы), а создать собственные. Для этого достаточно добавить в форму Дополнение элемента формы и задать ему источник. В зависимости от конкретного источника этот элемент примет тот или иной внешний вид. На данный момент источники есть только у таблицы динамического списка (три источника), но в дальнейшем мы, возможно, будем расширять эту механику:
Особенности работы ввода по строке в поле ввода
1. Как переопределять работу поля ввода в части ввода по строке
Для переопределения работы поля ввода в части ввода по строке можно обрабатывать события поля ввода «АвтоПодборТекста» и «ОкончаниеВводаТекста».
1.1. Событие АвтоПодборТекста
Событие «АвтоПодборТекста» возникает во время начала ожидания ввода текста (когда в процессе набора текста сделана пауза). При стандартной отработке события происходит поиск по полям, указанным в свойстве «Ввод по строке» соответствующего объекта метаданных. Если найдено единственное значение, то производится автоподстановка окончания текста. Если введенному тексту соответствует несколько значений, то автоподстановки не происходит.
В этом примере при вводе в поле ввода буквы "п" и прерывании редактирования в поле ввода появился слово "пункт", при этом выделена будет его часть "ункт" (начало слова было уже введено и выделение на него не делается):
Выделение выставляется для того, чтобы подставленную часть текста можно было легко заменить следующим действием редактирования, если подставленный текст не подходит. Для отключения стандартного обработчика в значение параметра «СтандартнаяОбработка» записали «Ложь».
1.2. Событие ОкончаниеВводаТекста
Событие «ОкончаниеВводаТекста» вызывается системой в тех случаях, когда по введенному (отредактированному) в поле ввода тексту нужно сформировать значение, соответствующее этому тексту. При этом, если по имеющемуся в поле ввода тексту уже было ранее успешно сформировано значение, нового формирования значения по этому тексту выполняться не будет (т.е. не будет возникать событие «ОкончаниеВводаТекста»).
Необходимость формирования значения по тексту в поле ввода возникает в различных ситуациях, например при переходе из поля ввода к другому элементу управления, нажатии в поле ввода кнопки выбора (клавиша F4) и в ряде других ситуаций.
Стандартный (системный) обработчик события ищет некоторое значение, которое соответствует набранному тексту. Если найдено одно значение – оно сохраняется в качестве значения поля ввода. Если найдено несколько значений – в выпадающем списке предоставляется возможность выбрать из них нужное значение. Если не найдено ни одного значения – выдается сообщение о том, что в элементе управления введены некорректные данные.
В этом примере обеспечивается следующая функциональность для поля ввода: если в поле ввода набрать слово "одежда", то при формировании значения по имеющемуся в поле ввода тексту (например, при переходе из поля ввода к другому элементу управления в форме), пользователю будет предоставлена возможность выбрать одно из двух значений: "Рубашка" или "Брюки":
— введем в поле ввода слово «одежда»:
— нажмем на клавишу Tab для перехода к следующему элементу управления: при этом появится выпадающий список из двух значений:
— выберем в выпадающем списке первое значение с помощью клавиши «Enter». выбранное значение будет установлено в поле ввода, а мы перейдем к следующему элементу управления:
2. Использование результатов поиска по строке
При поиске значения по тексту могут быть следующие результаты поиска:
· не найдено ни одного значения;
· найдено одно значение;
· найдено больше одного, но не более некоторого количества значений (в системе используется константа — 50 значений);
· найдено некоторое количество значений или больше (т.е. > 50).
В каждом из этих случаев стандартные (системные) обработчики событий «АвтоПодборТекста» и «ОкончаниеВводаТекста» ведут себя определенным образом.
2.1. Работа стандартного (системного) обработчика события АвтоПодборТекста с результатами поиска по строке
1. По имеющемуся в поле ввода тексту ищется одно подходящее значение
2. Значение найдено?
2.1. Получается текстовое представление найденного значения
2.2. В поле ввода дописываются недостающие завершающие символы текстового представления найденного значения.
Пример : пусть поле ввода имеет тип «СправочникСсылка.Номенклатура»; в свойстве «Ввод по строке» указаны поля «Код», «Наименование»; в справочнике есть два элемента с наименованиями «Рубашка», «Брюки»:
Если мы введем воле ввода текст «Ру», он будет дополнен текстом «башка»:
2.2. Устройство механизма преобразования текста в поле ввода в значение и обработчик события ОкончаниеВводаТекста
Рассмотрим процесс формирования значения по тексту, введенному в поле ввода. Ниже приводится алгоритм преобразования текста в поле ввода в значение:
- Начало процесса формирования значения по тексту поля ввода.
- Получение текста из поля ввода.
- Вызов обработчика события «ОкончаниеВводаТекста».
В параметры вызываемой процедуры записывается:
Текст — текст из поля ввода;
Значение — Неопределено. В обработчике события в него можно записать значение или список значений;
СтандартнаяОбработка = Истина. - В обработчике события разрешили выполнение стандартной обработки?
- Через параметр «Значение» вернули список значений?
- Кнопка выбора (клавиша F4) нажата ?
- В переданном списке количество значений больше одного?
- Открытие выпадающего списка в поле ввода и выбор значения из списка. Если в выпадающем списке выбрано значение, оно выставляется в качестве значения в поле ввода, а в качестве текста в поле ввода устанавливается текстовое представление выбранного значения. Если же значение в выпадающем списке не выбрано, состояние поля ввода не меняется.
- В переданном списке храниться только одно значение?
- В качестве значения в поле ввода устанавливается единственное значение из переданного списка. В качестве текста в поле вода устанавливается текстовое представление устанавливаемого значения.
- В параметре «Значение» вернули не список значений, а конкретное значение?
- Установка в поле ввода значения по умолчанию того типа, который сейчас выставлен в поле ввода.
- В качестве значения в поле ввода устанавливается значение параметра «Значение», а в качестве текста — представление устанавливаемого значения.
- Вызов стандартного (системного) обработчика события «ОкончаниеВводаТекста».
- Конец процесса формирования значения по тексту поля ввода.
Из описанного алгоритма видно, что смысл подмены стандартного (системного) обработчика может состоять в том, чтобы сформировать свой список значений из одного и более элементов или одно конкретное значение для поля ввода в зависимости от того текста, который есть в поле ввода.
2.3. Работа стандартного (системного) обработчика события ОкончаниеВводаТекста с результатами поиска по строке
Стандартный (системный) обработчик события «ОкончаниеВводаТекста» работает следующим образом:
- Начало работы стандартного обработчика.
- Получение текста из поля ввода.
- Текст в поле ввода не пустой?
- Формирование списка значений на основе текста из поля ввода. Например — поиск товаров, у которых наименование товара начинается с имеющегося в поле ввода текста.
- В сформированном в пункте 4 списке значений есть элементы?
- Кнопка выбора (клавиша F4) нажата? Это условие проверяется, потому что если она нажата, то будет открываться форма выбора и выпадающих списков появляться не должно.
- В сформированном в пункте 4 списке значений есть только одно значение?
- Устанавливаем единственное значение из списка в поле ввода. В качестве текста в поле ввода устанавливается представление этого значения.
- В сформированном в пункте 4 списке значений более 50 элементов?
- Открывается выпадающий список у поля ввода. В качестве списка значений для него используется список, сформированный в пункте 4. Пользователь может выбрать в этом списке одно из значений.
- Вывод пользователю сообщения о том, что найдено слишком много значений.
- Установка в поле ввода значения по умолчанию того типа, который сейчас выставлен в поле ввода.
- Конец работы стандартного обработчика.
3. Настройка состава и порядка полей, используемых в стандартных (системных) обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста
Для определения состава полей, используемых стандартными (системными) обработчиками событий » АвтоПодборТекста» и «ОкончаниеВводаТекста» , и их порядка, ряд объектов метаданных поддерживают свойство «Ввод по строке», доступное для редактирования через палитру свойств и в форме редактирования объекта метаданных. К таким объектам метаданных относятся «Справочники», «Документы», «Планы видов характеристик», «Планы счетов», «Планы видов расчета», «Планы обмена», «Бизнес-процессы», «Задачи».
Состав полей объекта метаданных, которые могут участвовать в поиске, состоит из некоторых фиксированных полей и реквизитов, для которых указано, что они строкового или числового типа и их нужно индексировать или индексировать с дополнительным упорядочиванием.

При поиске по строке для числовых полей из строки формируется число, которое затем ищется в базе данных. При поиске по строке для строковых полей ищутся все записи из базы данных, у которых в соответствующем поле хранится текст, начинающийся с искомого.
В качестве значения по умолчанию для свойства «Ввод по строке» в 1С:Предприятии 8 используются следующие поля:
Отметим, что поле используется для поиска по строке только в том случае, если длина поля больше нуля. Так, например, если длина наименования в некотором справочнике равна нулю, то поиск по полю «Наименование» выполняться не будет.
Пример . Есть справочник товаров , описываемых кодом (число), наименованием (строка) и артикулом (строка).
Если принято использование артикулов товаров, можно указать в свойстве «Ввод по строке» поля «Артикул», «Наименование», «Код». При этом в выпадающем списке сначала будут идти товары, у которых в поле «Артикул» хранится хранится текст, начинающийся с введенного текста, затем — товары, у которых в поле «Наименование» хранится текст, начинающийся с введенного текста, затем — товары, у которых в поле «Код» хранится введенное значение (текст из поля ввода интерпретируется как число).
Если использование артикулов товаров не принято, можно указать в свойстве «Ввод по строке» поля » Наименование», » Код». При этом в выпадающем списке сначала будут идти товары, у которых в поле » Наименование» хранится текст, начинающийся с введенного текста, затем — товары, у которых в поле » Код» хранится введенное значение (текст из поля ввода интерпретируется как число).
4. Модальные действия в обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста
Механизм автоподбора текста в поле ввода и преобразования текста в значение не предусматривает возможности использования разработчиком конфигурации интерактивных действий в обработчиках событий. Кроме того, логика работы стандартных (системных) обработчиков событий достаточно сложная и в обработчиках этих событий не всегда можно узнать, по какому поводу он (обработчик) вызван. Например, обработчик события » ОкончаниеВводаТекста» будет вызываться не только при переходе из поля ввода на другой элемент управления формы, но и при нажатии в поле ввода кнопки выбора (клавиша F4).
Рекомендуется в обработчиках событий » АвтоПодборТекста» и » ОкончаниеВводаТекста» работать исключительно с параметрами обработчиков, формируя нужный текст и значения и отдавая их через параметры обработчиков.
5. Управление механизмом автопоиска и автоподбора с помощью прав
Управлять механизмом автопоиска и автоподбора можно на уровне прав пользователей. Для этого в списке прав для различных объектов метаданных существует право «Ввод по строке».

Если у пользователя нет права на ввод по строке для соответствующего объекта метаданных , в поле ввода запрещается редактирование текста и работа механизма автопоиска и автоподбора блокируется.
6. Работа механизма автопоиска и автоподбора с правами на уровне записей
Данные, используемые системой в обработчиках событий автопоиска и автоподбора, могут иметь ограничения на доступ к ним. Достичь этого можно с помощью механизма ограничения прав доступа к данным на уровне записей. В этой ситуации сама платформа 1С:Предприятие 8 выбирает только разрешенные записи и дополнительной поддержки на уровне обработчиков событий для этого не требуется.
Если же есть необходимость поиска подходящих данных в обработчиках событий автопоиска и автоподбора, в запросе нужно использовать служебное слово «РАЗРЕШЕННЫЕ», указывающее, что при встрече данных, доступ к которым ограничен, нужно их просто пропускать: в противном случае будет выдана ошибка времени исполнения.