задача:
для договора формируется отчет, пользователю необходимо выбрать период как параметр для отчета

использую
var SelectDataWindow = Services.GetNewItemByUSI('wnd_SelectData');
var Dataset = Services.GetNewItemByUSI('ds_Period');
SetAttribute(SelectDataWindow, 'Dataset', Dataset);
SetAttribute(SelectDataWindow, 'DisplayFieldNames', 'Name');
SetAttribute(SelectDataWindow, 'SearchFieldNames', 'Name');
SetAttribute(SelectDataWindow, 'KeyFieldName', 'ID');
SetAttribute(SelectDataWindow, 'KeyValue', '');
SetAttribute(SelectDataWindow, 'SearchFieldName', 'Name');
SetAttribute(SelectDataWindow, 'SearchValue', '');
SetAttribute(SelectDataWindow, 'NotifyObject', Self);
SetAttribute(SelectDataWindow, 'Tag', 'Tag');
SelectDataWindow.Prepare();
SelectDataWindow.ShowModal();
// точка 1

для обработчика
function wnd_XXXOnNotify(ScriptableService, Sender, Message, Data) {
if() {
// другой код
} else if (Sender.Caption == 'wnd_SelectData' && Message == MSG_OK){
// точка 2
// здесь пытаюсь получить результат выбора
debugger;
} else
scr_BaseWorkspace.wnd_BaseWorkspaceOnNotify(
ScriptableService, Sender, Message, Data);
}

в каком атрибуте представлен результат выбора?
можно ли в данном случае (SelectDataWindow.ShowModal) не использовать обработчик а получить значения от экземпляра окна на позиции "точка 1"?

Нравится

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

на данный момент использую

var SelectDataWindow = Services.GetNewItemByUSI('wnd_SelectData');
var Dataset = Services.GetNewItemByUSI('ds_Period');
SetAttribute(SelectDataWindow, 'Dataset', Dataset);
SetAttribute(SelectDataWindow, 'DisplayFieldNames', 'Name', 'ID');
SetAttribute(SelectDataWindow, 'SearchFieldNames', 'Name');
SetAttribute(SelectDataWindow, 'KeyFieldName', 'ID');
SetAttribute(SelectDataWindow, 'KeyValue', '');
SetAttribute(SelectDataWindow, 'SearchFieldName', 'Name');
SetAttribute(SelectDataWindow, 'SearchValue', '');
SetAttribute(SelectDataWindow, 'Tag', 'Tag');
SelectDataWindow.Prepare();
SelectDataWindow.ShowModal();
var PeriodID = SelectDataWindow.ComponentsByName('dlData').Dataset.KeyDataField.Value;

но это совсем коряво

Здравствуйте!

Атрибуты окна выбора Вы можете просмотреть в скрипте scr_SelectData, а именно в функции ReturnSelectedValue:

{
function ReturnSelectedValue(Window) {
var Dataset = SelectData.Dataset;
SelectData.SearchValue =
GetFieldValueFromDisabledField(Dataset, SelectData.SearchFieldName);
SelectData.KeyValue =
GetFieldValueFromDisabledField(Dataset, SelectData.KeyFieldName);
SelectData.KeyValues = grdData.SelectedIDs;
SetAttribute(Window, 'SearchFieldName', SelectData.SearchFieldName);
SetAttribute(Window, 'SearchValue', SelectData.SearchValue);
SetAttribute(Window, 'KeyValue', SelectData.KeyValue);
SetAttribute(Window, 'IsKeyValueNull',
(SelectData.KeyValue == null ? true : false));
SetAttribute(Window, 'KeyValues', SelectData.KeyValues);
}

Если же Вам необходимо использовать в модальном режиме, то Вы можете напрямую считывать значения атрибута окна ('KeyValue').

Terrasoft Support Team

к сожалению после вызова окна в моей реализации для всех атрибутов Attributes.Values(X) - null
тогда как в SelectDataWindow.ComponentsByName('dlData').Dataset.KeyDataField.Value я получаю необходимое значение
спасибо за ответ
попробую выполнить отладку непосредственно в функции ReturnSelectedValue

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