#component 'L_SF'
#include cfg_all.inc
const
cmChangeStateSF = 990190;
End;
Alter interface PRNSCHFVARIATMCUSL;
overload end;
var ButMyComSF : longint ;
var VarNameSF : string ;
var rf, nn : integer ;
var NrecAttrSF : Comp ;
var NameStateSF : String ;
var nrecspschf : Comp ;
Create view Maint as select * FROM attrval;
Create view tspschf as select tmpvarspschf.crec,
catalpsd.prim, catalpsd.name
FROM
tmpvarspschf, catalpsd
WHERE((root==tmpvarspschf.crec
and tmpvarspschf.crec==spschf.nrec
and spschf.CMCUSL==katmc.nrec
and katmc.nrec==catalpsd.crec
and VarNameSF==catalpsd.name ));
Create view nattrnam as select Attrnam.nrec
From
Attrnam
WHERE((Word(3502)==Attrnam.wtable
and 'ВАРИАНТ НАИМЕНОВАНИЯ'==attrnam.name));
HandleEvent
cmInit:
{
inherited::handleEvent(cmInit);
cfsSetCurrentContainer('L_SF::PRNSCHFVARIATMCUSL');
nn:=SetFormatEnabled('L_SF::PRNSCHFVARIATMCUSL',true);
cfsCreateObject('button', 'SCRPRNVARIATMCUSL', 'ChangeStateSF', FALSE, ButMyComSF);
cfsSetProp ( ButMyComSF, cfpOrigin_X,300);
cfsSetProp ( ButMyComSF, cfpOrigin_Y, 70 );
cfsSetProp ( ButMyComSF, cfpSize_X, 95 );
cfsSetProp ( ButMyComSF, cfpSize_Y, 24 );
cfsSetProp ( ButMyComSF, cfpCommand, cmChangeStateSF);
cfsSetProp ( ButMyComSF, cfpTitle, 'Выбрать вариант' );
cfsSetProp ( ButMyComSF, cfpVisible,TRUE);
}
cmChangeStateSF:
{
rf:=Nattrnam.GetFirst;
NrecAttrSF:=Nattrnam.Attrnam.nRec;
VarNameSF:='';
RunInterface('L_PRNSOPR::ChangeStates',VarNameSF);
if VarNameSF<>''
{
rf:=tspschf.getfirst;
while (rf=0)
{
NameStateSF:=tspschf.catalpsd.prim;
NrecSpschf:=tspschf.tmpvarspschf.crec;
insert attrval set attrval.wtable:=3502,
attrval.cattrnam:=NrecAttrSF, attrval.vstring:=NameStateSF, attrval.crec:=nrecspschf;
rf:=tspschf.getnext;
}
}
RescanPanel(#tmpvarspschf);
}
end;
end.
Этот код работает на двух других аналогичных фейсах (для ДО и накладных). Единственное различие между этими фейсами в том, что в ДО и накладных есть изменяемый чекбокс, а для СФ - нет. Отсюда подозрение, что добавление любого кнопаря не будет работать ( в другом посте писалось, что если все поля SKIP, то ничего и не работает). Но полной уверенности в этом у меня нет.
У меня работает вроде твой код тоже....в смысле отрабатывает код кнопки ...по крайней мере при нажатии "Выбрать вариант" огребаю что не найден ChangeStates...
А как выглядит у тебя галактический интерфейс выбора варианта названия для СФ? В Верхней части окна при подключении моего кода только кнопка "Выбрать вариант" и никаких других галактических чекбоксов и пр ( что можно изменить)?
Да...как то встречал кажется такое, но тогда выкрутился, т.к. у меня была несколько иная ситуация - это какой то косяк атлантиса.
навсидку попробуй (решение конечно не самое хорошее, но все же....) воспользоваться hideFormats в своей докомпиляции описав тот же самый скрин 1:1, но сделав первое поле noprotect
Т.е. там сейчас что то вроде :
Screen scrPrnVariatMcUsl
Show At (,,,4);
Table SchFact;
Fields
UsersDoc.Name : Skip, {Font = {Bold = true}};
.....
...а нужно попробовать описать тот же самый формат тока не одноименный а свой (первое поле скрина делаем Noprotect):
Screen scrPrnVariatMcUslMy;
Show At (,,,4);
Table SchFact;
Fields
UsersDoc.Name : Noprotect, {Font = {Bold = true}};
....
end;
ну и в alter сделать hideFormats SCRPRNVARIATMCUSL;
Тока тогда в коде добавления кнопки иждентификатор своего нового формата поправить нужно будет :
...
st:=cfsGetObjInfo(
'scrPrnVariatMcUslMy' ,
...
Хотя если прокатит так, то можно прямо кнопку описать в своем скрине и все )
К моему счастью, в той базе, где реально будет работать этот фейс, стоит исправленный Галактический фейс ( ), т.е. кнопка включилась.
Хотя по большому счету , вопрос остался ( вдруг еще раз такое попадется).
спасибо за участие!
После установки патчей при компиляции стал ругаться на события cmAlt5 и cmMAKEORDER ("Ошибка: Oops. Такой команды нет: MAKEORDER")... Может эти события переименовали???
Новая версия компонента L_SKLAD, на которой не компилится - 8.10.111.0. Старая версия L_SKLAD - 8.10.84.0