Создание интерфейса
Модераторы: m0p3e, edward_K, Модераторы
Создание интерфейса
Здравствуйте!
Подскажите, пожалуйста, что нужно использовать, чтоб получить таблицу для внесения лимитов задолженности.
Интерфейс имеет следующий вид
Имя контрагента |1 квартал |2 квартал| 3 квартал |4 квартал
Контрагент 1 ... |XXXXXXXX|XXXXXXXXX|XXXXXXXXX|XXXXXXXXX
Контрагент 2....
Контрагент 3....
Контрагенты должны выбираться через pickbutton. Должна быть реализована возможность добавления нового контрагента...
Пробовала через browse. Отображаются совсем не те контрагенты. которые выбираю из интерфейса GetSomeKontr. ....
Подскажите, пожалуйста, что нужно использовать, чтоб получить таблицу для внесения лимитов задолженности.
Интерфейс имеет следующий вид
Имя контрагента |1 квартал |2 квартал| 3 квартал |4 квартал
Контрагент 1 ... |XXXXXXXX|XXXXXXXXX|XXXXXXXXX|XXXXXXXXX
Контрагент 2....
Контрагент 3....
Контрагенты должны выбираться через pickbutton. Должна быть реализована возможность добавления нового контрагента...
Пробовала через browse. Отображаются совсем не те контрагенты. которые выбираю из интерфейса GetSomeKontr. ....
Re: Создание интерфейса
Чем не устраивает KATORG.MAXDOLGRUB?
Что-то не представляю browse с pickbutton... Где будет pickbutton?
Что-то не представляю browse с pickbutton... Где будет pickbutton?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Создание интерфейса
Любое бравсе набито fields-ами с присущими ему атрибутами полей (например спецификации окон редактирования До, накладных и т.д....)RAJAH писал(а): Что-то не представляю browse с pickbutton... Где будет pickbutton?
2 Marisha_P
Да, правильно RAJAH поинетересовался насчет того где вы планируете в БД хранить значения цифирь по кварталам ? )
Re: Создание интерфейса
Так это не чистый browse, думаю... Там, наверное, screen или panel есть... Хотя представить получилось...Den писал(а): Любое бравсе набито fields-ами с присущими ему атрибутами полей (например спецификации окон редактирования До, накладных и т.д....)
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Создание интерфейса
А какая разница ..бравсе он и в Африке бравсе ))
interface test;
create view
from katorg;
Browse Brw1;
table katorg;
fields
katorg.unn 'инн' : [20],protect,pickbutton;
katorg.name 'название' : [45],protect;
end;
handleEvent
CmPick:{
case curfield of
#katorg.unn : Message('Pick on fields unn');
end;
}
end;
end.
interface test;
create view
from katorg;
Browse Brw1;
table katorg;
fields
katorg.unn 'инн' : [20],protect,pickbutton;
katorg.name 'название' : [45],protect;
end;
handleEvent
CmPick:{
case curfield of
#katorg.unn : Message('Pick on fields unn');
end;
}
end;
end.
Re: Создание интерфейса
Den,
примерно как вы и пробовала сделать, только вот так:
case curfield of
#kontr_1:{ delete from pick where ((6 == pick.wlist));
if RunInterface(GetSomeKontr) = cmDefault then
_LOOP Pick { kontr_1:=katorg.name); }
};
end
в значение поля выводится не тот контрагент, который был выбран..
примерно как вы и пробовала сделать, только вот так:
case curfield of
#kontr_1:{ delete from pick where ((6 == pick.wlist));
if RunInterface(GetSomeKontr) = cmDefault then
_LOOP Pick { kontr_1:=katorg.name); }
};
end
в значение поля выводится не тот контрагент, который был выбран..
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Создание интерфейса
опубликуйте лучше свой код весь ...народ тутошний тогда оперативней поможет )
Re: Создание интерфейса
Всё равно до конца не понятно... Контрагентов ведь множество? И в каждой строке browse будет свой pickbutton для множественного выбора контрагентов? В чём смысл такого действия?
Re: Создание интерфейса
А в спецификации накладной например разве не так? только с товарами...RAJAH писал(а):Всё равно до конца не понятно... Контрагентов ведь множество? И в каждой строке browse будет свой pickbutton для множественного выбора контрагентов? В чём смысл такого действия?
Re: Создание интерфейса
1. А почему когда вы loop проходите по pick, вы ее не ограничиваете по wlist?Marisha_P писал(а):Den,
примерно как вы и пробовала сделать, только вот так:
case curfield of
#kontr_1:{ delete from pick where ((6 == pick.wlist));
if RunInterface(GetSomeKontr) = cmDefault then
_LOOP Pick { kontr_1:=katorg.name); }
};
end
в значение поля выводится не тот контрагент, который был выбран..
2. Почему вы перебираете записи Pick, но пишете kontr_1:=katorg.name?
И где insert?
Re: Создание интерфейса
Никак не могу добиться от заказчика, в чем вобще смысл всех требуемых действий, поэтому пока просто разбираюсь с тем, как правильно организовать интерфейс. В каждой строке browse свой pickbutton, но с единичным выбором контрагента.. Работники финотдела будут в ручную заполнять эту табличку.
наименование контрагента /данные по кварталам
Первый раз столкнулась с browse и не очень понимаю как правильно с ним работать и через какие таблицы:((( Думала, что через эту view можно будет получить названия контрагентов, выбираемых из интерфейса "GetSomeKontr"
Create view
var
kvart1 :double;
kvart2 :double;
kvart3 :double;
kvart4 :double;
kontr_1: string;
as select * from
katorg, pick
where
((Word(6) == Pick.wList and
Pick.cRec == KatOrg.nrec
));
наименование контрагента /данные по кварталам
Первый раз столкнулась с browse и не очень понимаю как правильно с ним работать и через какие таблицы:((( Думала, что через эту view можно будет получить названия контрагентов, выбираемых из интерфейса "GetSomeKontr"
Create view
var
kvart1 :double;
kvart2 :double;
kvart3 :double;
kvart4 :double;
kontr_1: string;
as select * from
katorg, pick
where
((Word(6) == Pick.wList and
Pick.cRec == KatOrg.nrec
));
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Создание интерфейса
Проще создать какую то табличку с нужными полями и заполнть ее.
Либо временную, а введеные данные пихать в оборот непример, либо постоянную (без alter dictionary в последние доступные номера).
Выбор организаций одиночный должен приводить к изменению данных по текущей строке, если есть еще скоко то, то к добавлению новых строк - это вопрос удобства. Причем тут Pick не ясно в самом броусе. Не ну можно броусе построить и по pick а ваши поля сделать вычисляемые,
но это следующий этап.
Либо временную, а введеные данные пихать в оборот непример, либо постоянную (без alter dictionary в последние доступные номера).
Выбор организаций одиночный должен приводить к изменению данных по текущей строке, если есть еще скоко то, то к добавлению новых строк - это вопрос удобства. Причем тут Pick не ясно в самом броусе. Не ну можно броусе построить и по pick а ваши поля сделать вычисляемые,
но это следующий этап.
Re: Создание интерфейса
Создала таблицу
Create Table gal.limit "Лимиты задолжности"
With Table_CODE = 31954
With TableOptions header, journal
(
#include firstrec.gd
ckatorg : comp "Ссылка на контрагента",
year : word "Год",
kvartal : double "Квартал",
lim : double "Лимит задолжности"
)
with index
( in1 = NREC(Unique, Surrogate,journal)
);
А как в интерфейсе описать таблицу с полями
контрагент
квартал 1
квартал 2
квартал 3
квартал 4
с возможностью выбора контрагента из интерфейса "GETSOMEKOntr"... Еще одна проблема в том. что заполнение данных по лимиту должно быть доступно только определенным работникам.. Остальным можно только просматривать ....
Create Table gal.limit "Лимиты задолжности"
With Table_CODE = 31954
With TableOptions header, journal
(
#include firstrec.gd
ckatorg : comp "Ссылка на контрагента",
year : word "Год",
kvartal : double "Квартал",
lim : double "Лимит задолжности"
)
with index
( in1 = NREC(Unique, Surrogate,journal)
);
А как в интерфейсе описать таблицу с полями
контрагент
квартал 1
квартал 2
квартал 3
квартал 4
с возможностью выбора контрагента из интерфейса "GETSOMEKOntr"... Еще одна проблема в том. что заполнение данных по лимиту должно быть доступно только определенным работникам.. Остальным можно только просматривать ....
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Создание интерфейса
При такой схеме два пути
1. Вывести в качестве главной таблицы katorg - тогда вообще ничего не нужно выбирать
а поля сделать вычисляемыми. При изменении будет срабатывать cmExprFieldChanged ( для получения введенного значения
используете double(ExprFieldValue) )
можно например в browse
fields
Katorg.name : [30], protect;
[Kv1] GetSaldo(Katorg.nrec,w_year,1) : [12.2,'\2p[|-]3666`666`666`666`666`666.88'], LessNull, NoProtect;
[Kv2] GetSaldo(Katorg.nrec,w_year,2) : [12.2,'\2p[|-]3666`666`666`666`666`666.88'], LessNull, NoProtect;
[Kv3] GetSaldo(Katorg.nrec,w_year,3) : [12.2,'\2p[|-]3666`666`666`666`666`666.88'], LessNull, NoProtect;
[Kv4] GetSaldo(Katorg.nrec,w_year,4) : [12.2,'\2p[|-]3666`666`666`666`666`666.88'], LessNull, NoProtect;
end;
В функции GetSaldo считываете данные. Ну соотв. нужна SetSaldo
2. В фейсе создаете временную таблицу под browse , набиваете ее данными а изменения синхронизируете с постоянной таблицей.
да. говоря про последний доступный я имел ввиду 32767. Ваш номер таблицы плохой - в следующей версии может быть занят.
лучше за 32500 как миниум.
3. Защиту можно создать либо сменой формата либо блокировкой данных от ввода. Ну еще настройку бы не мешало добавить под это дело. Самый простой путь - проверить вхождение пользователя в группу в правах доступа к настройкам. Сложнее - создать свою собств.- ищите CreateTune на форуме.
1. Вывести в качестве главной таблицы katorg - тогда вообще ничего не нужно выбирать
а поля сделать вычисляемыми. При изменении будет срабатывать cmExprFieldChanged ( для получения введенного значения
используете double(ExprFieldValue) )
можно например в browse
fields
Katorg.name : [30], protect;
[Kv1] GetSaldo(Katorg.nrec,w_year,1) : [12.2,'\2p[|-]3666`666`666`666`666`666.88'], LessNull, NoProtect;
[Kv2] GetSaldo(Katorg.nrec,w_year,2) : [12.2,'\2p[|-]3666`666`666`666`666`666.88'], LessNull, NoProtect;
[Kv3] GetSaldo(Katorg.nrec,w_year,3) : [12.2,'\2p[|-]3666`666`666`666`666`666.88'], LessNull, NoProtect;
[Kv4] GetSaldo(Katorg.nrec,w_year,4) : [12.2,'\2p[|-]3666`666`666`666`666`666.88'], LessNull, NoProtect;
end;
В функции GetSaldo считываете данные. Ну соотв. нужна SetSaldo
2. В фейсе создаете временную таблицу под browse , набиваете ее данными а изменения синхронизируете с постоянной таблицей.
да. говоря про последний доступный я имел ввиду 32767. Ваш номер таблицы плохой - в следующей версии может быть занят.
лучше за 32500 как миниум.
3. Защиту можно создать либо сменой формата либо блокировкой данных от ввода. Ну еще настройку бы не мешало добавить под это дело. Самый простой путь - проверить вхождение пользователя в группу в правах доступа к настройкам. Сложнее - создать свою собств.- ищите CreateTune на форуме.
Re: Создание интерфейса
Подскажите, пожалуйста, как сделать динамическое добавление строк в browse через кнопку "Новый КА - F7".
create view
as select * from limit,limitkont,pick,katorg where ((limit.ckatorg==limitkont.kontr_nrec and Word(6) == Pick.wList and pick.crec==katorg.nrec));
Browse brKontr
show at (,,100,30)
Table LimitKont
Fields
LimitKont.kontr_name: [50],pickbutton,noprotect;
LimitKont.kv1: [10],noprotect;
LimitKont.kv2: [10],noprotect;
LimitKont.kv3: [10],noprotect;
LimitKont.kv4: [10],noprotect;
End;
screen scrDebit
show at (,31,,33)
buttons
cmOk;
fields
year:[8],noprotect,pickbutton;
<<
<. Новый КА - F7 .> `Год `.@@@@@@@@@@
>>
end;
и еще у меня есть вот такой обработчик:
Cmpick:{
//Выбор контрагентов
Case Curfield Of
#LimitKont.kontr_name: { delete from pick where ((6 == pick.wlist));
if (runInterface('GETSOMEKOntr',false) <> cmCancel)
{ LimitKont.kontr_name:=katorg.name;
rescanpanel(tnLimitKont);
}
} end;
}
Сразу после выбора контрагента поле заполняется, а потом при переходе на другие ячейки или при возврате на нее же - значение сбрасывается. Почему так происходит?
create view
as select * from limit,limitkont,pick,katorg where ((limit.ckatorg==limitkont.kontr_nrec and Word(6) == Pick.wList and pick.crec==katorg.nrec));
Browse brKontr
show at (,,100,30)
Table LimitKont
Fields
LimitKont.kontr_name: [50],pickbutton,noprotect;
LimitKont.kv1: [10],noprotect;
LimitKont.kv2: [10],noprotect;
LimitKont.kv3: [10],noprotect;
LimitKont.kv4: [10],noprotect;
End;
screen scrDebit
show at (,31,,33)
buttons
cmOk;
fields
year:[8],noprotect,pickbutton;
<<
<. Новый КА - F7 .> `Год `.@@@@@@@@@@
>>
end;
и еще у меня есть вот такой обработчик:
Cmpick:{
//Выбор контрагентов
Case Curfield Of
#LimitKont.kontr_name: { delete from pick where ((6 == pick.wlist));
if (runInterface('GETSOMEKOntr',false) <> cmCancel)
{ LimitKont.kontr_name:=katorg.name;
rescanpanel(tnLimitKont);
}
} end;
}
Сразу после выбора контрагента поле заполняется, а потом при переходе на другие ячейки или при возврате на нее же - значение сбрасывается. Почему так происходит?