И еще раз здравсвуйте.

Опять же вопрос касается Lookup-полей, а именно поиска в окне выбора. Когда набираем текст в поле форма, а затем нажимаем ввода, то появляется окно выбора, в котором уже отработал поиск по введенном тексту. НО! Этот поиск всегда по-умолчанию отрабатывается по полю Наименование (по крайней мере в том справочнике банков). Можно ли как-то заставить этот поиск искать по другому полю?

Если более конкретно, то мы разделили поле МФО/БИК на два. Чтобы можно было работать с поиском банков по полю БИК. Например, в 1С очень удобно сделан выбор банка - в поле вводит БИК и по нажатию на Ввод появляется наименование банка. Хотелось бы чтобы в Террасофт было что-то похожее: встали в поле Банк, ввели БИК, нажали ввод, появилось окно справочника, поиск сработал по полю БИК, остается только проверить тот ли это банк по названию и нажать ОК.

Нравится

4 комментария

Добрый день, Алексей!

Насколько я понимаю, Вам необходимо выполнить некоторые изменения на детали Платежные реквизиты раздела Контрагенты, а именно: сделать так, чтобы в поле Банк отображался БИК банка, а не Название, как сделано в базовой версии.
В этом случае при выборе значения через LookupDataControl пользователь сможет набирать БИК, в окне выбора поиск будет по БИК, и в итоге Вы получаете то, о чем написали выше.
Перечень необходимых действий:
1. Сервис ds_Bank, указать свойство "Первичное поле для отображения" = поле БИК (назовем BIC). Для поля BIC указать признаки "Поле для поиска", "Поле для отображения". Сохранить сервис.
2. Сервис sq_AccountBillingInfo, убедиться, что колонка BIC считывается из таблицы банков. Сохранить сервис.
3. Сервис ds_AccountBillingInfo, поле BankID, указать колонку для отображения BIC. Сохранить сервис.

После выполнения указанных изменений в поле Банк детали можно будет вводить БИК, нажимать Enter, видеть в окне выбора список отфильтрованных по БИК записей, подтверждать выбор нажатием Enter.
Желаю успехов!

Не совсем так.
В справочнике банков уже внесены все изменения, там есть отдельное поле для ввода БИК. Его видно при отображении окна выбора из справочника. Просто хотелось, чтобы в полне "Название банка" можно было бы ввести БИК, по которому будет сделан поиск. Сейчас все срабатывает нормально, если вводишь любой текст в поле, нажимаешь Ввод, то открывает окно справочника и там уже включен фильтр по введенному тексту. НО! Этот фильтр по умолчанию срабатывает по полю "Название". И чтобы сделать поиск по БИКу, нужно в окне переключит поле, которому ведется поиск, а это лишняя операция.
Можно ли как-то сделать, чтобы поиск автоматически осуществлялся по полю БИК?

Я думаю, что если не получится сделать так, то видимо я просто вытащу все поля на форму (Название, БИК, корр.счет). Будем вводить БИК в поле БИКа, а все остальные будут заполняться из справочника. Как лучше осуществить этот вариант?

Можно сделать так, что при вводе некоторого текста в поле "Банк", и нажатии Enter или F2, открывалось окно выбора значения с поиском по БИК, а не по Названию. Предположим, что пользователь выбрал таким образом некоторый банк, нажал Enter в окне выбора, и в поле "Банк" в результате подставлено значение названия банка (для случая, если Вы не меняли первичное поле для отображения в ds_Bank).
Однако, в случае, если значение "Название" уже установлено в поле (например, пользователь открыл для редактирования существующую запись), и при попытке нажать на значок лупы или F2 в таком поле, пользователь увидит окно поиска, в котором ничего не найдено, т.к. система будет искать по текстовому значению, введенному в данный момент в поле. В итоге получим неприятный эффект.
Другими словами, осуществлять в окне выбора значения автоматический поиск не по первичному полю для отображения - идея, чреватая неудобством дальнейшего редактирования такого значения.
Не совсем понятно, чем Вам не подходит способ, описанный выше - раз пользователю важен именно БИК банка, пусть вводит БИК, ищет по БИК в списке, выбирает значение и устанавливает БИК выбранного банка в поле карточки. Рядом с полем БИК в карточке можно создать неактивное текстовое поле, в котором будет отображаться Название банка, чтобы видеть и БИК, и название.
Подводим итоги:
1. Способ, в котором поиск осуществляется по БИК, но в результате отображается название, реализовать можно, но будут трудности с редактированием. Этот способ не рекомендуется.
2. Более рационален вариант реализации со сменой первичного поля для отображения в ds_Bank (описан выше). При необходимости рядом реализовать неактивное поле "Название" выбранного банка. Заполнение поля Название можно сделать в обработчике события OnDatasetDataChange набора данных ds_AccountBillingInfo, в случае, если изменилось поле BankID, то считывать его значение, создать экземпляр сервиса и выполнить запрос:
select Name from tbl_Bank where ID = :BankID
получить название и установить его в поле набора данных карточки.

Так как повторить эффект 1С-ки возможности нет, то совершенно согласен, что второй вариант идеален для решения этой задачи. Так и сделаем.

Показать все комментарии