задача:
для договора формируется отчет, пользователю необходимо выбрать период как параметр для отчета
использую
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"?
Нравится
на данный момент использую
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