На странице редактирования записи раздела A есть деталь Samples.

Для работы с данными этой детали на странице редактирования разработана специальная функциональность.

Добавлено строковое виртуальное поле [Sample ID] (скрин во вложении). Пользователь бипирует образец с нужным штрихкодом, который вносится в это поле, потом нажимает кнопку [Find sample] и выполняется некоторая функциональность по обработке образца с таким номером, если он найден на данной детали.

Проблема заключается в том, что иногда на детали очень много образцов и нужная запись не всегда находится 'на глазах' у пользователя. Если пользователь будет вручную её искать, то на это будет уходить много времени.

Решением такой проблемы может быть, например, чтобы при нажатии на кнопку [Find sample] накладывался фильтр по полю Sample детали.

При этом важно, чтобы фильтр тоже отображался визуально, аналогично тому, если бы пользователь установил его вручную!

Подскажите, пожалуйста, каким образом может быть реализована такая функциональность?

Также мне не очень нравится тот факт, что при нажатии на кнопку [Find sample] в базу будет идти +1 дополнительный запрос ко всем уже существующим.

Возможно, есть другие варианты решения этой задачи: чтобы изменяемая запись была перед глазами пользователя? Кто-то имел опыт разработки такой функциональности или, возможно, видит другие пути решения?

Прикрепленные файлы

Нравится

1 комментарий

1) В tools детали кладёте textEdit и кнопку. По желанию можно залепить всё это стилями для красоты.

2) По нажатию на кнопку делается reloadGridData()

3) В initQueryFilters считываете значение из поля, если есть пользователь ввел хоть что-то, в esq добавляете свой фильтр (допустим как я делал: по названию, тип сравнения CONTAINS)

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

Доброго времени суток!

Создал новый раздел (в нем есть и ContactID и AccountID), добавил детали, все фильтруется в зависимости от ContactID.
При добавлении детали звонков возникли кое какие вопросы:
- можно ли фильтровать деталь по разным ID при каких либо условиях? В таблице звонков есть AccountID и ContactID, а в таблице нового раздела заполнено поле ContactID или AccountID. Как можно настроить фильтрацию в детали звонков в зависимости от того, ContactID или AccountID заполнен?

Использовал подобный код:

var ContactID = GetFieldValueFromDisabledField(BaseWorkspace.GridDataset, 'ContactID');
var AccountID = GetFieldValueFromDisabledField(BaseWorkspace.GridDataset, 'AccountID');

if (IsEmptyGUID(ContactID) == false) {
RefreshCommonDetail(null, wnd_CallGridArea,
'ContactID', 'ContactID', null, null, null, null, null, ContactID);
}
else if (IsEmptyGUID(AccountID) == false ){
RefreshCommonDetail(null, wnd_CallGridArea,
'AccountID', 'AccountID', null, null, null, null, null, AccountID);
}
else {RefreshCommonDetail(null, wnd_CallGridArea,
null, null, null, null, null, null, null, null);}

При загрузке, фильтрация работает, но при переключении на другую запись фильтрация детали перестает срабатывать. Что я делаю не так?

Заранее спасибо.

Нравится

1 комментарий

Здравствуйте, Евгений!

Да, фильтрация набора данных детали по разным полям возможна.

Почему не работает Ваша реализация при переключении на другую запись, Вы сможете понять, если отладитесь.
Вероятнее всего, что по каким-то причинам не переоткрывается датасет детали.

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