Расширенный поиск в динамическом списке
Всем привет. Ребят. Прошу помощи. Платформа 8.3.9.2170
Есть УТ 11.3. В ней есть справочник номенклатура. Скопировал форму списка. Изменил так как надо заказчику. Он просил сделать ему расширенный поиск.
Т.е. устанавливаешь курсор например в поле код динамического списка. И открывается это окно (см. скрин). Набираешь нужный код. Нажимаешь Ентер. Далее вновь вводишь необходимое значение. Так вот проблема заключается в том, что позиционирование сбивается. Т.е. визуально активный элемент остается код, но поиск не отрабатывает. Приходится мышкой щелкнуть на форму и поиск срабатывает вновь. В SQL версии поиск происходит исключительно 2 раза. В файловой по-разному. Может и 5, может и 10, может и 20 раз отработать прежде чем активный элемент уйдет.
P.S. Не спрашивайте: "А почему нельзя щелкнуть мышкой" и прочее. Заказчик хочет именно так.
В форме поведение клавиши ентер - Переход по элементам
Каждый элемент на форме ПропускатьПриВводе - стоит да. Кроме необходимого динамического списка разумеется.
Тестировалось на разных компах. На разных платформах. Даже на 8.3.10.1981. Поведение аналогичное.
Есть УТ 11.3. В ней есть справочник номенклатура. Скопировал форму списка. Изменил так как надо заказчику. Он просил сделать ему расширенный поиск.
Т.е. устанавливаешь курсор например в поле код динамического списка. И открывается это окно (см. скрин). Набираешь нужный код. Нажимаешь Ентер. Далее вновь вводишь необходимое значение. Так вот проблема заключается в том, что позиционирование сбивается. Т.е. визуально активный элемент остается код, но поиск не отрабатывает. Приходится мышкой щелкнуть на форму и поиск срабатывает вновь. В SQL версии поиск происходит исключительно 2 раза. В файловой по-разному. Может и 5, может и 10, может и 20 раз отработать прежде чем активный элемент уйдет.
P.S. Не спрашивайте: "А почему нельзя щелкнуть мышкой" и прочее. Заказчик хочет именно так.
В форме поведение клавиши ентер - Переход по элементам
Каждый элемент на форме ПропускатьПриВводе - стоит да. Кроме необходимого динамического списка разумеется.
Тестировалось на разных компах. На разных платформах. Даже на 8.3.10.1981. Поведение аналогичное.
Прикрепленные файлы:
По теме из базы знаний
- Поиск по наименованию в динамическом списке
- Полнотекстовый поиск в 1С. №1 Грабли в динамических списках
- Как ограничить поля отбора в динамическом списке и ничего не сломать
- Флажок в динамическом списке в 1С 8.3 (управляемые формы)
- История одного админа в мире 1С. Как поиски причины тормозов 1С привели к созданию нового продукта
Найденные решения
Ребят, всем спасибо за участие. Пришлось немного извратиться. В процедуре ПриАктивацииСтроки нужного табличного поля сделал принудительную активацию окна.
Только эксперименты привели к такому наблюдению.
В управляемом приложении нормально отрабатывает этот код.
А вот в интерфейсе ТАКСИ этот код уже не отрабатывает как надо. Пришлось сначала активировать начальное окно, а потом уже мое. И все нормально заработало.
Однако, поведение платформы непонятно в корне.
Только эксперименты привели к такому наблюдению.
В управляемом приложении нормально отрабатывает этот код.
ОткрытыеОкна = ПолучитьОкна();
Для Каждого ТекОкно Из ОткрытыеОкна Цикл
Если ТекОкно.Заголовок = "Подбор товаров: Номенклатура" Тогда
ТекОкно.Активизировать();
КонецЕсли;
КонецЦикла;
А вот в интерфейсе ТАКСИ этот код уже не отрабатывает как надо. Пришлось сначала активировать начальное окно, а потом уже мое. И все нормально заработало.
ОткрытыеОкна = ПолучитьОкна();
Для Каждого ТекОкно Из ОткрытыеОкна Цикл
Если ТекОкно.Заголовок = "Начальная страница" Тогда
ТекОкно.Активизировать();
КонецЕсли;
КонецЦикла;
Для Каждого ТекОкно Из ОткрытыеОкна Цикл
Если ТекОкно.Заголовок = "Подбор товаров: Номенклатура" Тогда
ТекОкно.Активизировать();
КонецЕсли;
КонецЦикла;
ПоказатьОднако, поведение платформы непонятно в корне.
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Константин, если я ничего не путаю - на картинке форма от типового функционала поиска.
Если уж форму поменяли - посмотрите вариант как организован поиск в бухгалтерии проф. обычной. при наборе текста в поле Поиска текст бьется автоматом без вызова доп.окон и поиск идет по колонке на которой курсор.
Если нужен одновременный перекрестный поиск по нескольким параметрам, тогда в форме списка делайте несколько полей
Если уж форму поменяли - посмотрите вариант как организован поиск в бухгалтерии проф. обычной. при наборе текста в поле Поиска текст бьется автоматом без вызова доп.окон и поиск идет по колонке на которой курсор.
Если нужен одновременный перекрестный поиск по нескольким параметрам, тогда в форме списка делайте несколько полей
(19) Еще раз перечитай (17) Посмотри как сделано в Бухии.
Там не открывается доп. окно. И там поиск начинает отрабатывать сразу.
Никто не мешает тебе ограничиваться одной колонкой или не ограничиваться одной.
В твоем варианте - в форму набора строки поиска передаешь параметры, в которых будет ИмяКолонкиПоиска, и при открытии из параметра берешь имя колонки.
описываешь Оповещение и вызываешь его при закрытии формы, по текущей активной колонке определяешь по каким реквизитам проводить поиск и фильтрацию.
Там не открывается доп. окно. И там поиск начинает отрабатывать сразу.
Никто не мешает тебе ограничиваться одной колонкой или не ограничиваться одной.
В твоем варианте - в форму набора строки поиска передаешь параметры, в которых будет ИмяКолонкиПоиска, и при открытии из параметра берешь имя колонки.
описываешь Оповещение и вызываешь его при закрытии формы, по текущей активной колонке определяешь по каким реквизитам проводить поиск и фильтрацию.
Прошу меня простить, Евгений, но во-первых, я к Вам на "ты" не обращался. Что за панибратство?! Во-вторых, в типовой БП версии 3.0.43.116, например, в справочнике Номенклатура поиск такой же как и у меня сейчас. При наборе появляется окно поиска. Не совсем понимаю, что Вы мне пытаетесь сказать. Если Вас не затруднит, объясните это пожалуйста нормальным языком.
Ребят, всем спасибо за участие. Пришлось немного извратиться. В процедуре ПриАктивацииСтроки нужного табличного поля сделал принудительную активацию окна.
Только эксперименты привели к такому наблюдению.
В управляемом приложении нормально отрабатывает этот код.
А вот в интерфейсе ТАКСИ этот код уже не отрабатывает как надо. Пришлось сначала активировать начальное окно, а потом уже мое. И все нормально заработало.
Однако, поведение платформы непонятно в корне.
Только эксперименты привели к такому наблюдению.
В управляемом приложении нормально отрабатывает этот код.
ОткрытыеОкна = ПолучитьОкна();
Для Каждого ТекОкно Из ОткрытыеОкна Цикл
Если ТекОкно.Заголовок = "Подбор товаров: Номенклатура" Тогда
ТекОкно.Активизировать();
КонецЕсли;
КонецЦикла;
А вот в интерфейсе ТАКСИ этот код уже не отрабатывает как надо. Пришлось сначала активировать начальное окно, а потом уже мое. И все нормально заработало.
ОткрытыеОкна = ПолучитьОкна();
Для Каждого ТекОкно Из ОткрытыеОкна Цикл
Если ТекОкно.Заголовок = "Начальная страница" Тогда
ТекОкно.Активизировать();
КонецЕсли;
КонецЦикла;
Для Каждого ТекОкно Из ОткрытыеОкна Цикл
Если ТекОкно.Заголовок = "Подбор товаров: Номенклатура" Тогда
ТекОкно.Активизировать();
КонецЕсли;
КонецЦикла;
ПоказатьОднако, поведение платформы непонятно в корне.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)