Страница 1 из 3
Как добавить колонку с вычисляемым полем в браузер
Добавлено: 15 май 2010, 14:14
BlazeBio
for (i := 0; i < 2; i++)
{
cfsSetCurrentContainer('ACTCOMPL.editsopr.brbynameraz');
cfsCreateObject('Column', 'brbynameraz', 'summa', FALSE, fMy_var);
cfsSetProp('summa','Visible',TRUE);
if (i = 0)
{
cfsSetProp('summa','Visible',FALSE);
}
else
{
cfsSetProp('summa','Visible',TRUE);
}
cfsSetProp('summa','Title','Общая сумма');
}
Здесь добавляется поле из таблицы katsopr.summa в browse.
Можно ли таким способом создать вычисляемое поле ? И если можно, то как? Может как-то по другому (но не через конфигуратор!) ?
Добавлено: 16 май 2010, 23:41
edward_K
дык добавляйете, а вычисления вешаете в события или пишите поле в as select
Добавлено: 17 май 2010, 11:53
BlazeBio
СПАСИБО сработало
! Добавил в select поле, а потом уже использовал его при добавлении в браузер.
Теперь вопрос. Как изменить формат выводимого вычисляемого поля в select поля. Мне надо допустим 88'001.09, а выводит 88000. Как быть ?
Добавлено: 17 май 2010, 12:06
LaaLaa
Удалить нельзя можно Visible сделать FALSE
Добавлено: 18 май 2010, 00:10
edward_K
1 то уж должна была вывести. А так Points, PassiveFormat, PrecisionVarName нужно задать в конфигураторе - смотрите на аналогичных стандартных полях..
Добавлено: 18 май 2010, 11:05
BlazeBio
Я использовал PassiveFormat и PrecisionVarName и заработало
.
А удалить поле можно cfsDestroyObject ('<имя объекта>'). В моём случае это имя колонки браузера.
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 06 апр 2012, 14:39
savov
Приветствую!
А вот у меня не получилось!
Делаю так
Код: Выделить всё
Alter interface DOGOVOR;
overload end;
create view
var tts: string;
as select Dogovor1.nrec, if(DocInfo.cdoc>0, 'Есть','Нет') (FieldName 'tt')
From Dogovor1, DocInfo
Where((root==Dogovor1.nrec and
dogovor1.nrec==docinfo.cdoc
));
var MyFieldNum : longint ;
var ifHaveText : String ;
HandleEvent
cmInit:
{
inherited::handleEvent(cmInit);
cfsSetCurrentContainer('L_DOGOVOR::DOGOVOR');
cfsCreateObject('TreeColumn', 'BRDOGOVORSELECTMAIN', 'Field: tt', FALSE, MyFieldNum);
cfsSetProp ( MyFieldNum, cfpVisible,TRUE);
cfsSetProp ( MyFieldNum, cfpTitle,'Текст');
}
Ошибок при компиляции нет, но при вызове фейса дает ошибку, что не может определить поле tt.
Если же просто вывести DocInfo.cdoc, то поле cdoc появляется и все работает.
Как же добавить вычисляемое поле в стандартный фейс?
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 06 апр 2012, 15:50
edward_K
(FieldName=tt)
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 06 апр 2012, 16:10
savov
Да и так пробовал! Та же ошибка: Ошибка интерпретации имени поля.
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 06 апр 2012, 16:16
edward_K
ну сам я юзаю
(prod_nakl,prod_sp) // эти поля добавляю конфигуратором
as select
Get_Prod_Nakl,Get_Prod_Sp
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 06 апр 2012, 16:37
savov
edward_K писал(а):ну сам я юзаю
(prod_nakl,prod_sp) // эти поля добавляю конфигуратором
as select
Get_Prod_Nakl,Get_Prod_Sp
Все делал без конфигуратора. Причем поле мое в конфигураторе не появляется, если есть ошибка.
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 07 апр 2012, 10:50
edward_K
а попробовать? конфигуратором в смысле его функциями
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 09 апр 2012, 12:20
savov
savov писал(а):ну сам я юзаю
(prod_nakl,prod_sp) // эти поля добавляю конфигуратором
as select
Get_Prod_Nakl,Get_Prod_Sp
Не совсем понял технологию.
Когда я присоединил свой ресурсник с докомпилированным фейсом, то поле в конфигураторе не появилось. Что именно добавляется конфигуратором, а что пишется в коде?
Конфигуратор не хотел использовать потому, что данные его могут теряться ( обновления и пр).
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 09 апр 2012, 15:26
edward_K
чтобы понять почитайте vipprogr.chm
в () - имена полей, в "As select" на первом месте должны идти их значения.
В таком виде 100% работают функции конфигуратора как для обычных полей. Впрочем вы еще можете добавлять как вычисляемое поле - добавте конфигуратором и выгружите в скрипт.
Код: Выделить всё
lErr:=cfsCreateObject ('PanelInputLine','SCRASHKU_RKO','numMeshok',FALSE,wwFFPCO);
#Cfs_ErrMes
cfsSetProp('numMeshok','Origin_X',587);
cfsSetProp('numMeshok','Origin_Y',223);
cfsSetProp('numMeshok','Size_X',101);
cfsSetProp('numMeshok','Size_Y',14);
cfsSetProp('numMeshok','PickButton',True);
cfsSetProp('numMeshok','Protect',False);
cfsSetProp('numMeshok','SKIP',False);
cfsSetProp('numMeshok','StatusCtx','sci1378Esc')
cfsSetProp('numMeshok','HelpLine','Номер тары мешка')
Но поле numMeshok здесь описано в var create view, а не в as select - приходится руками перевычислять его значение. Можно в as select вызвать функцию, которая бы переопределяла значение переменных var
Что касается самого конфигуратора то уже пишу раз 10. Я всегда выгружаю в скрипт cnf, убираю мусор и компилю vip-ом после vip в один и тот же рес.
Re: Как добавить колонку с вычисляемым полем в браузер
Добавлено: 10 апр 2012, 11:26
savov
Да, конфигуратором поле добавил, оно появилось и правильно вычислилось, НО!
Когда скидываю в cnf, а потом загружаю - поле не появляется. Если записать конфигурацию, закрыть фейс, а потом открыть, то выскакивает ошибка ( иа же самая. что описана выше), поле тоже не появляется.
Еще, в cnf должны бать только изменения, внесенные конфигуратором? Остальное можно убрать?