Здравствуйте!
Пытаюсь разобраться с бизнес-процессами.
Версия 3.3.2.
Нужно создать окно поиска по абонентам. И отобразить грид с результатом.
Я правильно понимаю, что у меня должно быть два action "Открытие окна", одно с окном поиска, другое с окном грида?
Из окна поиска мне нужно получить то, что ввели и сделать поиск по абонентам. И на основе отфильтрованной датасет уже делать грид?
Где делать сам поиск?
В скрипте поиска или передать параметры того что ввели куда-то еще, там сделать поиск и по получившемуся датасет строить грид?
С передачей параметров тоже не очень выходит. Создала параметр Name у диаграммы и у действия, связала их, но достать то, что ввели из Action1OnAfterExecute не получается.
Помогите, пожалуйста.
Нравится
Здравствуйте, Светлана.
Посмотрите, может вам подойдет по функционалу окно wnd_SelectData (поиском найдите этот сервис в администраторе).
Это окно используется при выборе какого-либо значения из справочника в любое справочное поле. В нем возможна фильтрация по одному из полей и сразу же выводиться результат в гриде.
Здравствуйте Светлана,
Предлагаю вам создать сервис окна (Window) поместить в него компонент Edit, кнопку поиска и DataGrid, вызывать данное окно в БП можно с помощью действия "Открытия окна", далее выберете опцию "Другое окно" и выбирете сервис окна.
По нажатию кнопки проводить фильрацию датасета, согласно строке поиска.
Пример :
var Dataset = dlData.Dataset; Dataset.Close(); ApplyDatasetFilter(Dataset, 'NameLike',edtFind.Value, true); Dataset.Open();
где NameLike - имя фильтра в датасете,
edtFind - имя контрола Edit
Здравствуйте,
Хочу добавить поле поиска на вкладку контрагенты.
Добавил на wnd_AccountsWorkspace
как советовал Алексей компонент Edit, кнопку поиска.
В обработчике события вставил код
var Dataset = dlAccounts.Dataset; Dataset.Close(); ApplyDatasetFilter(Dataset, 'Name',admSerch.Value, true); Dataset.Open(); if (ShowConfirmationDialog("Событие по нажатию кнопки поиска") != wmrYes) { return; }
Больше нигде ничего не менял.
Поиск не выполняется, подскажите как реализовать
Здравствуйте Владимир,
В случае с контрагентами, срабатывает событие отключения фильтров, так сделано для того что бы срабатывали представления (которые реализованы как фильтры)
В Вашем случае следует сделать так:
function btnSrchClick(Control) { dlData.Dataset.DisableEvents(); dlData.Dataset.Close(); //MessageBox(edtAccountName.Value); if (edtAccountName.Value != '') { ApplyDatasetFilter(dlData.Dataset,'Name',edtAccountName.Value,true); } else {ApplyDatasetFilter(dlData.Dataset,'Name',edtAccountName.Value,false); } dlData.Dataset.Open(); dlData.Dataset.EnableEvents(); }
Если значение в edtAccountName есть включаем фильтр, если значения нет, выключаем фильтр, что бы оторражалось все так как в наших представлениях в Контрагентах
Спасибо Все зарабртало.
Сменил имя датасета и едитов и все гуд!
Сейчас идет строгий поиск а я хочу сделать поиск на основе фильтра "Содержит"
Конечная цель, убрать кнопку поиска. Применение фильтра вставить в обработчик событий едита.онченж. Когда пользователь вводит более 3х символов начинается фильтроватся таблица контрагентов по имени. Если имя содержит в любом месте даный набор символов то оно отображается
Владимир, здравствуйте!
Для реализации Вашей задачи рекомендую создать функцию:
function searchName() { var Dataset = dlData.Dataset; Dataset.DisableEvents(); Dataset.Close(); ApplyDatasetFilter(Dataset, 'NameByLike', edtEdit.Value, true); Dataset.Open(); Dataset.EnableEvents(); }
где NameByLike - фильтр типа Like. (tbl_Account.Name содержит Parameter: NameByLike).
Далее, на событии OnChange для Edit контрола, прописать приблизительно следующий код:
function edtEditOnChange(Edit) { if (edtEdit.Value.length > 2) { searchName(); } if (edtEdit.Value.length == 0) { var Dataset = dlData.Dataset; Dataset.DisableEvents(); Dataset.Close(); ApplyDatasetFilter(Dataset, 'NameByLike', edtEdit.Value, false); Dataset.Open(); Dataset.EnableEvents(); } }
Спасибо за ответ.
У меня ругается на
ApplyDatasetFilter(Dataset, 'NameByLike', edtEdit.Value, true);
Если я ставлю фильтр 'Name' то все работает.
Где можно посмотреть список фильтров, может это поможет решить вопрос
Здравствуйте Владимир,
"Олейник Дмитрий" написал:где NameByLike - фильтр типа Like. (tbl_Account.Name содержит Parameter: NameByLike).
NameByLike в примере Дмитрия, это названия фильтра, который предварительно необходимо создать
Скорее всего у Вас он не создан
Фильтр NameByLike существет, но параметер у него "Name", хотя как я понимаю, это не важно, а ошибка все равно осталась.
Создавал свой фильтр и результат тот-же!
Спасибо Алимовой Анне помогла.
Реально важно чтоб имя параметра совпадало с именем фильтра