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

Скорее всего у Вас он не создан
Фильтр NameByLike существет, но параметер у него "Name", хотя как я понимаю, это не важно, а ошибка все равно осталась.
Создавал свой фильтр и результат тот-же!
Спасибо Алимовой Анне помогла.
Реально важно чтоб имя параметра совпадало с именем фильтра