Как добавить колонку с вычисляемым полем в браузер

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Как добавить колонку с вычисляемым полем в браузер

Сообщение 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.
Можно ли таким способом создать вычисляемое поле ? И если можно, то как? Может как-то по другому (но не через конфигуратор!) ?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

дык добавляйете, а вычисления вешаете в события или пишите поле в as select
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

СПАСИБО сработало :smile: ! Добавил в select поле, а потом уже использовал его при добавлении в браузер.
Теперь вопрос. Как изменить формат выводимого вычисляемого поля в select поля. Мне надо допустим 88'001.09, а выводит 88000. Как быть ?
Последний раз редактировалось BlazeBio 17 май 2010, 16:33, всего редактировалось 1 раз.
LaaLaa

Сообщение LaaLaa »

Удалить нельзя можно Visible сделать FALSE
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1 то уж должна была вывести. А так Points, PassiveFormat, PrecisionVarName нужно задать в конфигураторе - смотрите на аналогичных стандартных полях..
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

Я использовал PassiveFormat и PrecisionVarName и заработало :grin: .
А удалить поле можно cfsDestroyObject ('<имя объекта>'). В моём случае это имя колонки браузера.
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение 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 появляется и все работает.
Как же добавить вычисляемое поле в стандартный фейс?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение edward_K »

(FieldName=tt)
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение savov »

Да и так пробовал! Та же ошибка: Ошибка интерпретации имени поля.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение edward_K »

ну сам я юзаю
(prod_nakl,prod_sp) // эти поля добавляю конфигуратором
as select
Get_Prod_Nakl,Get_Prod_Sp
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение savov »

edward_K писал(а):ну сам я юзаю
(prod_nakl,prod_sp) // эти поля добавляю конфигуратором
as select
Get_Prod_Nakl,Get_Prod_Sp
Все делал без конфигуратора. Причем поле мое в конфигураторе не появляется, если есть ошибка.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение edward_K »

а попробовать? конфигуратором в смысле его функциями
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение savov »

savov писал(а):ну сам я юзаю
(prod_nakl,prod_sp) // эти поля добавляю конфигуратором
as select
Get_Prod_Nakl,Get_Prod_Sp
Не совсем понял технологию.
Когда я присоединил свой ресурсник с докомпилированным фейсом, то поле в конфигураторе не появилось. Что именно добавляется конфигуратором, а что пишется в коде? :eek: Конфигуратор не хотел использовать потому, что данные его могут теряться ( обновления и пр).
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение 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 в один и тот же рес.
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Как добавить колонку с вычисляемым полем в браузер

Сообщение savov »

Да, конфигуратором поле добавил, оно появилось и правильно вычислилось, НО!
Когда скидываю в cnf, а потом загружаю - поле не появляется. Если записать конфигурацию, закрыть фейс, а потом открыть, то выскакивает ошибка ( иа же самая. что описана выше), поле тоже не появляется.
Еще, в cnf должны бать только изменения, внесенные конфигуратором? Остальное можно убрать?
Ответить