Создание интерфейса

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

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

Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Создание интерфейса

Сообщение Marisha_P »

Здравствуйте!
Подскажите, пожалуйста, что нужно использовать, чтоб получить таблицу для внесения лимитов задолженности.
Интерфейс имеет следующий вид

Имя контрагента |1 квартал |2 квартал| 3 квартал |4 квартал
Контрагент 1 ... |XXXXXXXX|XXXXXXXXX|XXXXXXXXX|XXXXXXXXX
Контрагент 2....
Контрагент 3....

Контрагенты должны выбираться через pickbutton. Должна быть реализована возможность добавления нового контрагента...
Пробовала через browse. Отображаются совсем не те контрагенты. которые выбираю из интерфейса GetSomeKontr. ....
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Создание интерфейса

Сообщение RAJAH »

Чем не устраивает KATORG.MAXDOLGRUB?
Что-то не представляю browse с pickbutton... Где будет pickbutton?
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Создание интерфейса

Сообщение Den »

RAJAH писал(а): Что-то не представляю browse с pickbutton... Где будет pickbutton?
Любое бравсе набито fields-ами с присущими ему атрибутами полей (например спецификации окон редактирования До, накладных и т.д....)


2 Marisha_P

Да, правильно RAJAH поинетересовался насчет того где вы планируете в БД хранить значения цифирь по кварталам ? )
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Создание интерфейса

Сообщение RAJAH »

Den писал(а): Любое бравсе набито fields-ами с присущими ему атрибутами полей (например спецификации окон редактирования До, накладных и т.д....)
Так это не чистый browse, думаю... Там, наверное, screen или panel есть... :) Хотя представить получилось... :-D
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Создание интерфейса

Сообщение Den »

А какая разница ..бравсе он и в Африке бравсе ))

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.
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Re: Создание интерфейса

Сообщение 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
в значение поля выводится не тот контрагент, который был выбран..
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Создание интерфейса

Сообщение Den »

опубликуйте лучше свой код весь ...народ тутошний тогда оперативней поможет )
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Создание интерфейса

Сообщение RAJAH »

Всё равно до конца не понятно... Контрагентов ведь множество? И в каждой строке browse будет свой pickbutton для множественного выбора контрагентов? В чём смысл такого действия?
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Создание интерфейса

Сообщение spark »

RAJAH писал(а):Всё равно до конца не понятно... Контрагентов ведь множество? И в каждой строке browse будет свой pickbutton для множественного выбора контрагентов? В чём смысл такого действия?
А в спецификации накладной например разве не так? только с товарами...
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Создание интерфейса

Сообщение spark »

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
в значение поля выводится не тот контрагент, который был выбран..
1. А почему когда вы loop проходите по pick, вы ее не ограничиваете по wlist?
2. Почему вы перебираете записи Pick, но пишете kontr_1:=katorg.name?

И где insert?
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Re: Создание интерфейса

Сообщение Marisha_P »

Никак не могу добиться от заказчика, в чем вобще смысл всех требуемых действий, поэтому пока просто разбираюсь с тем, как правильно организовать интерфейс. В каждой строке 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
));
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Создание интерфейса

Сообщение edward_K »

Проще создать какую то табличку с нужными полями и заполнть ее.
Либо временную, а введеные данные пихать в оборот непример, либо постоянную (без alter dictionary в последние доступные номера).
Выбор организаций одиночный должен приводить к изменению данных по текущей строке, если есть еще скоко то, то к добавлению новых строк - это вопрос удобства. Причем тут Pick не ясно в самом броусе. Не ну можно броусе построить и по pick а ваши поля сделать вычисляемые,
но это следующий этап.
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Re: Создание интерфейса

Сообщение Marisha_P »

Создала таблицу

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

Re: Создание интерфейса

Сообщение edward_K »

При такой схеме два пути
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 на форуме.
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Re: Создание интерфейса

Сообщение Marisha_P »

Подскажите, пожалуйста, как сделать динамическое добавление строк в 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;
}

Сразу после выбора контрагента поле заполняется, а потом при переходе на другие ячейки или при возврате на нее же - значение сбрасывается. Почему так происходит?
Ответить