Коллеги, для контрола Lookup используется стандартное окно выбора записей (с поиском) из справочника. Как можно его заменить на окно реестра без написания кода (ShowWindow и т.п.)? Разумеется, чтобы с этого окна можно было делать выбор записи.
Нравится
У Lookup есть свойство SelectWindow.
Совсем без написания кода не получится, так как нужно будет дописать фрагмент, кода окно возвращает выбранное значение Lookup.
Что вас не устраивает в текущем выборе значения?
Изменить окно выбора достаточно просто: укажите код окна нужного реестра в свойстве SelectWindowUSI контрола. Конкретно для этого действия ничего дополнительно программировать не нужно. Зато придётся изменять скрипт окна, так как теперь оно будет использоваться в двух (а то и трёх) режимах: в качестве окна реестра раздела, для выбора элемента в контроле и, возможно, в деталях других разделов. Следовательно, при инициализации ему необходимо передавать некоторый признак, в каком качестве оно будет использоваться. Не говоря уже о том, что при закрытии окна реестра выделенные записи необходимо сохранять в атрибуты и передавать окну редактирования через механизм нотификации (в базовом окне выбора записей из справочника всё это реализовано).
Спасибо за информацию. Проблема в том, что в справочнике есть колонка, где тип данных перечисление. Хотелось бы сразу группировать записи по этой колонке, в частности показывать только определенные (как в случае с FilterSetCode). По умолчанию поиск выполняется только по названиям.
Может, я не совсем правильно понимаю, но мне кажется, что в этом случае достаточно в обработчике события OnPrepareSelectWindow включать фильтр по колонке. Подобно тому, как реализован, например, выбор ответственного в карточке задачи:
function edtOwnerOnPrepareSelectWindow(LookupDataControl) { PrepareLookupDataControl(LookupDataControl, dlData.Dataset); var OwnerGroupID = GetAttribute(Self, 'OwnerGroupID'); var LookupDataset = LookupDataControl.DataField.LookupDataset; var IsOwnerGroupIDFilterEnabled = !IsEmptyGUID(OwnerGroupID); ApplyDatasetFilter(LookupDataset, 'GroupID', OwnerGroupID, IsOwnerGroupIDFilterEnabled); }