1.
khabibullin.tu
9503.10.18 11:44 Сейчас в теме+1 $m
Всем привет ! На форме есть динамический список, есть дополнение элемента формы (СтрокаПоиска), как можно получить значение в этой строке поиска и его заменить ?
(2) судя по всему никак. Только переопределять строку поиска на форме и запускать поиск самому по событиям поля ввода.
Допустим я добавлю поле ввода, как программно запустить поиск ? Полнотекстовый программный поиск по регистру сведений всегда возвращает 0 найденных значений, а передать значение поиска никак нельзя
(13) именно полнотекстовым видимо никак - это механизм платформы, к которому доступа нет. Самому как вариант только подменять запрос динамического списка добавляя условия "Список.Реквизит1 ПОДОБНО %СтрокаПоиска% ИЛИ Список.Реквизит2 ПОДОБНО %СтрокаПоиска%", после чего обновлять список.
Для работы с новым механизмом поиска мы добавили в форму новый элемент. Он называется Дополнение элемента формы. Раньше у формы было 5 элементов: Поле, Таблица, Кнопка, Группа и Декорация. Теперь таких элементов шесть.
Для таблиц динамических списков платформа автоматически создаёт три таких элемента: Строка поиска, Состояние просмотра и Управление поиском. Появление этих элементов в форме регулируется тремя новыми свойствами таблицы: ПоложениеСтрокиПоиска, ПоложениеСостоянияПросмотра и ПоложениеУправленияПоиском.
При желании разработчик может не использовать стандартные элементы (Дополнение элемента формы), а создать собственные. Для этого достаточно добавить в форму Дополнение элемента формы и задать ему источник.
Для работы с новым механизмом поиска мы добавили в форму новый элемент. Он называется Дополнение элемента формы. Раньше у формы было 5 элементов: Поле, Таблица, Кнопка, Группа и Декорация. Теперь таких элементов шесть.
Для таблиц динамических списков платформа автоматически создаёт три таких элемента: Строка поиска, Состояние просмотра и Управление поиском. Появление этих элементов в форме регулируется тремя новыми свойствами таблицы: ПоложениеСтрокиПоиска, ПоложениеСостоянияПросмотра и ПоложениеУправленияПоиском.
При желании разработчик может не использовать стандартные элементы (Дополнение элемента формы), а создать собственные. Для этого достаточно добавить в форму Дополнение элемента формы и задать ему источник.
Я видел это и ничего мне это не дает, как достучаться то до значения поиска ?
Для таблиц динамических списков платформа автоматически создаёт три таких элемента: Строка поиска, Состояние просмотра и Управление поиском. Появление этих элементов в форме регулируется тремя новыми свойствами таблицы: ПоложениеСтрокиПоиска, ПоложениеСостоянияПросмотра и ПоложениеУправленияПоиском.
(18) так это не реквизит. Чтобы убедиться - в отладчике покажите ) То, что в конфигураторе вы связали дополнение элемента формы со строкой поиска списка, не означает наличия программного доступа к введенному в это поле значения.
еще как вариант, напишите свой обработчик поиска! создайте свое поле. у вас полный доступ к нему будет, и свой поиск быстрее отрабатывает.
замечено, стандартный/интрефейсный поиск капитально тупит!
тут делов-то на пару часов!
(24)
У меня вышла проблема в этом: https://forum.infostart.ru/forum9/topic215541/ Как выбрать номенклатуру не учитывая конкретную последовательность введенных пользователем ключевых слов для поиска?
(24) это технически сложно сделать так как это делает платформа, надо ведь реализовать подкрашивание красным цветом найденных символов в строках динамического списка.
Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных() - тип настройки компановки данных... можно вытащить оттуда или сразу загрузить эти настройки...
Минус этого метода - может найти значение пользовательского отбора.
Можно их исключить, вычислив пользовательские отборы в "Список.КомпановщикНастроек.ПользовательскиеНастройки.Элементы"
Здесь это не продемонстрировано.
&НаСервере
Процедура ОпределитьТекстПоиска()
//Поиск работает хитро, поэтому нужно понять, для каких целей нужна строка поиска.
//Ради примера - для создания нового элемента справочника в наименование нужно поместить текст поиска.
ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Ссылка.Наименование");
ЭлементыОтбора = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных().Отбор.Элементы;
Результат = "";
ПолучитьЗначениеОтбора(ЭлементыОтбора, ПолеКомпоновкиДанных, Результат);
Сообщить(Результат);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПолучитьЗначениеОтбора(ЭлементыОтбора, ПолеКомпоновкиДанных, Результат)
Для каждого ЭлементОтбора Из ЭлементыОтбора Цикл
Если ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
ПолучитьЗначениеОтбора(ЭлементОтбора.Элементы, ПолеКомпоновкиДанных, Результат)
Иначе
Если ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиДанных Тогда
Результат = ЭлементОтбора.ПравоеЗначение;
Прервать;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Результат) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
//Поиск работает хитро, поэтому нужно понять, для каких целей нужна строка поиска.
//Ради примера - для создания нового элемента справочника в наименование нужно поместить текст поиска.
ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Ссылка.Наименование");
ЭлементыОтбора = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных().Отбор.Элементы;
Результат = "";
ПолучитьЗначениеОтбора(ЭлементыОтбора, ПолеКомпоновкиДанных, Результат);
Если ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиДанных Тогда
Результат = ЭлементОтбора.ПравоеЗначение;
Прервать;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Результат) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
Сделал пустую внешнюю обработку, в ней ТЗ со строкой поиска. Набрал что-то в строку поиска, нажал кнопку (любую созданную для этого) и перехватил в отладчик.
ПолучитьИсполняемыеНастройкиКомпоновкиДанных() - содержит "Неопределено"