Re: Создание нового интерфейса
Добавлено: 28 окт 2019, 18:12
В диалоге нельзя использовать Pickbutton (если не ошибаюсь, у диалогов нет обработки событий).
Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://ns1.tyumbit.ru/
Блин, это прискорбно. Спасибо. буду ковыряться в интерфейсах)Buddy писал(а):В диалоге нельзя использовать Pickbutton (если не ошибаюсь, у диалогов нет обработки событий).
Код: Выделить всё
interface REESTR_PAR 'Параметры выгрузки зарплатного реестра' doAccept
show at (,,62,7);
var
path,nodog,schet:string;
dateChanged:boolean;
_cschet:comp;
parameters path,nodog,schet
create view as select * from katbank where ((_cschet==katbank.nrec));
Screen main;
fields
path: protect,pickButton;
nodog:noprotect;
katbank.schet1: protect,pickButton;
buttons
cmOk, default;
cmCancel;
<<'Ввод параметров'
Путь к файлу: .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Номер договора: .@@@@@@@@@@@@@@@@@@@@@@@@
Расчетный счет: .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<. ОK .> <.Отмена.>
>>
end;
HandleEvent
cmInit:
{
ReadMyDsk(Path,'zp_path',dateChanged);
ReadMyDsk(nodog,'zp_nodog',dateChanged);
ReadMyDsk(_cschet,'zp_cschet',dateChanged);
}
cmPick :
{
case CurField of
#path :
{
path:=GetDirName('Путь к файлу...')+'\'+'*.xml';
}
#katbank.schet1:
{
runinterface(L_KATORG::GETBANK,cogettune('MyOrg'),_cschet);
schet:=katbank.schet1;
}
end;
PutCommand(cmRefreshBDdata)
}
cmCancel:
{
closeinterface(cmCancel);
}
cmOk:
{
SaveMyDsk(path,'zp_path');
SaveMyDsk(nodog,'zp_nodog');
SaveMyDsk(_cschet,'zp_cschet');
schet:=katbank.schet1;
closeinterface(cmDefault);
}
cmDelOnProtect:
{
}
end;
end.
Код: Выделить всё
Runinterface(C_PARTNER::REESTR_PAR, path,nodog,schet);
message(schet)
Код: Выделить всё
interface DialogTest 'Dialog Test';
show at (0,3,45,8);
create view
var
MCNrec : comp;
MCName : string;
PackPrice : double;
as select
KatMC.Name
from
KatMC
where
(( MCNrec == KatMC.Nrec ));
Parameters
PackPrice
, MCNrec
;
screen scrMain;
noTableNavigation;
fields
PackPrice ('Стоимость тары'):[18, '\2p[|-]3666`666`666`666`666`666.88'], noprotect;
MCName : Protect, PickButton;
buttons
cmOk ,default,,'Сформировать отчет', hcOplTrudhlp, sci1Esc;
cmCancel ,,,'Отмена', hcOplTrudhlp, sci1Esc;
<<
`Стоимость Тары:`.@@@@@@@@@@@@@@@@@@@@
Выберите МЦ: .@@@@@@@@@@@@@@@@@@@@
<.Сформировать отчет.> <.Отмена.>
>>
end; // screen
HandleEvent
cmPick:
{
case CurField of
#MCName:
{
if (RunInterface('L_MCU::GETMC', MCNrec) = cmDefault)
{
set MCNrec := MCNrec;
set MCName := KatMC.Name;
}
}
end; // case
}
end; //HandleEvent Interface
end.
Код: Выделить всё
interface DialogTest 'Окно ввода данных';
show at (0,3,45,8);
create view
var
_Vnrec:Comp;
_Vtara:Double;
MCNrec : comp;
MCName : string;
PackPrice : double;
as select
KatMC.Name
from
KatMC
where
(( MCNrec == KatMC.Nrec ));
Parameters
PackPrice
, MCNrec
;
screen scrMain;
noTableNavigation;
fields
PackPrice ('Стоимость тары'):[18, '\2p[|-]3666`666`666`666`666`666.88'], noprotect;
MCName : Protect, PickButton;
buttons
cmOk ,default;
cmCancel ,,,'Отмена', hcOplTrudhlp, sci1Esc;
<<
`Стоимость Тары:`.@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Выберите МЦ: .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<. OK .> <.Отмена.>
>>
end; // screen
HandleEvent
cmPick:
{
case CurField of
#MCName:
{
if (RunInterface('L_MCU::GETMC', MCNrec) = cmDefault)
{
set MCNrec := MCNrec;
set MCName := KatMC.Name;
}
}
end; // case
}
cmOk:
{
_Vnrec := MCNrec;
_Vtara := PackPrice;
closeinterface(cmDefault);
}
end; //HandleEvent Interface
end.
Код: Выделить всё
.begin
RunInterface(TehOtdel2019::DialogTest, _Vtara, Double_mc)
end.
супер, спасибо большое) убрал лишние переменные, и за cmCheckField отдельное спасибо, обязательно нужно применить, на проверку заполненности всех полей, и что бы Стоимость была больше нуляIrina_ писал(а):Здравствуйте.
Вы ввели лишние переменные. _Vnrec и _Vtara не имеют смысла. И присвоение им значений в cmOk тоже лишнее. В Parameters Вы указываете имена переменных, которые будут возвращаться после нажатия ОК. И эти переменные действительно определяются при вводе пользователем.
Оператор set MCNrec := MCNrec тоже не имеет смысла. Вам RunInterface(...) уже возвращает значение MCNrec (Nrec выбранной МЦ).
Еще советы:
- задать действия на событие cmInit. Возможно здесь Вам это и не надо, но в других своих интерфейсах может понадобиться. Например, если Вам надо считать значения переменных, сохраненных ранее в DSK, подсчитать количество выбранных элементов в Pick или в маркере, задать значение по умолчанию в чек бокс и т.д.
- задать действия на событие cmCheckField. Считаю необходимым проверять введенные пользователем значения на допустимость. В данном случае, стоимость тары должна быть больше 0. Даты тоже надо проверять, особенно если в интерфейсе надо вводить диапазон дат. Без обработки данного события не обойтись, если какие-то реквизиты интерфейса должны быть доступны для заполнения при определенных условиях, например в зависимости от выбранного значения другого реквизита.