Помогите разобраться - почему не работает конструкция
Модераторы: m0p3e, edward_K, Модераторы
Re: Помогите разобраться - почему не работает конструкция
Недоглядел ).
Удалил лишнюю не жесткую связку - ничего не изменилось.
Удалил лишнюю не жесткую связку - ничего не изменилось.
Re: Помогите разобраться - почему не работает конструкция
Всех с прошедшими - вернулся к данному проекту. Вопрос по прежнему открыт.
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Помогите разобраться - почему не работает конструкция
выложите итоговый вариант логической таблицы, как у Вас сейчас.
ну и что не устраивает в результате.
ну и что не устраивает в результате.
Re: Помогите разобраться - почему не работает конструкция
код сейчас такой:
Не устраивает то что показывается всегда наименование контрагента, даже если по критериям не должно показываться ничего,
и правильно ли описана проверка по складу?
Только что выяснил одну неприятную особенность - после того как я виртуально продал пару товаров и поменял контрагент на тот кому продавал - вся конструкция перестала работать То есть интерфейс открывается только с полем контрагента все остальное пусто хотя, ордера сформировало.
Код: Выделить всё
//Добавлять во все проекты -----------------
#param /linc:d:\viperprojekt\autoexec.vpp
#setcurenv "galnet" from 'c:\GAL810\exe\';
#define ComponentVersion
//-----------------------------------------
#include GALNET.CCM
//Выбираем с чем работаем (в данном случае ресурс L_SOPRDOC)
#Component "L_SOPRDOC"
//Выбираем интерфейс из ресурса (в данном случае AKTREC)
alter interface AKTREC;
// Будем изменять обработчики таблице "SPSOPR"
tableEvent table SPSOPR
// Объявляем обработчик который нам нужен
cmPick:
{
// выбираем случай из "#NAMEMCUSL:" и присваиваем запуск интерфейса
case curfield of
#NAMEMCUSL:
{
if runinterface (L_MCU::GETMC,spsopr.cmcusl) = cmdefault and spsopr.cmcusl != 0
if isnew()
insert current spsopr;
else
update current spsopr;
rereadrecord(#spsopr);
runinterface (L_SOPRDOC::Example, katsopr.corgbase, spsopr.cmcusl, katsopr.cgruzfrom,spsopr.kolfact,spsopr.price,spsopr.csporder)
spsopr.rprice:=spsopr.price;
update current spsopr;
PutCommand(cmRefreshBDdata)
}
// иначе обрабатываем обычный "cmPick"
else if(inherited::HandleEvent(cmPick) = heOk) {}
end;
}
end;
end.
Interface Example 'TEST' , escClose, cyan,doAccept;
var _corg, _cmc, _csporder, _gruz, _cpodr:comp;
var _kol,_price:double;
parameters _corg, _cmc, _cpodr, _kol,_price,_csporder
create view as select * from katsopr, spsopr, katorg, katparty, sklorder, sporder, katpodr
where
((
_corg == katsopr.corgbase and
_cpodr == katsopr.cgruzfrom(noindex) and
201 == katsopr.vidsopr and
_cmc == spsopr.cmcusl and
katsopr.nrec /== spsopr.csopr and
katsopr.corgbase /== katorg.nrec and
spsopr.cmcusl == katmc.nrec and
1>>=spsopr.prmc and
spsopr.cparty == katparty.nrec and
spsopr.nrec == sporder.cspsopr and
sporder.csklorder == sklorder.nrec and
sklorder.cpodr /== katpodr.nrec
))
bounds filGruz = _gruz == katsopr.cgruzto(noindex)
;
browse EmployeeBrowse;
table KATSOPR;
Fields
katsopr.nsopr '№ сопроводительного документа':[30], protect;
katsopr.dsopr 'Дата':[10], protect;
// katsopr.vidsopr:protect;
katmc.name 'Наименование товара':[25], protect;
katorg.name 'Наименование контрагента':[25], protect;
katparty.name 'Название партии':[25], protect;
sklorder.norder '№ Ордера':[10], protect;
katpodr.name 'Наименование склада':[15], protect;
end;
handleevent
cmInit :
{
}
cmDefault:
{
_kol:=spsopr.kolfact;
_price:=spsopr.price;
_csporder:=sporder.nrec;
}
cmpick:
{
_gruz:=0;
runinterface(L_KATORG::GetKatOr,_gruz,0,false,0,0);
if _gruz !=0
{
subbounds(tbfilGruz);
addbounds(tbfilGruz);
}
else
subbounds(tbfilGruz)
PutCommand(cmRefreshBDdata)
}
end;
end.
и правильно ли описана проверка по складу?
Только что выяснил одну неприятную особенность - после того как я виртуально продал пару товаров и поменял контрагент на тот кому продавал - вся конструкция перестала работать То есть интерфейс открывается только с полем контрагента все остальное пусто хотя, ордера сформировало.
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Помогите разобраться - почему не работает конструкция
задача я так понял в накладной на возврат найти позиции приходов которые были проданы этому контрагенту ранее, так?
1. что бросилось в глаза, связка 1>>=spsopr.prmc and
вы ведь вроде МЦ выбираете, значит 1 == spsopr.prmc
2. контрагента показывает а накладную к примеру нет? странно, т.к. контрагент у вас зацеплен именно через katsopr...
3. а что за проверка по складу? на каком этапе хотите проверять что то? вы ведь делаете возврат, ордеров ещё нет... если и указан склад куда будет оприходован возврат, то скорее всего передавать в ваш интерфейс надо katsopr.cgruzto а не katsopr.cgruzfrom
4. не понял, последнее предложение. где поменял контрагента? на другого? в документе продажи или в документе возврата?
1. что бросилось в глаза, связка 1>>=spsopr.prmc and
вы ведь вроде МЦ выбираете, значит 1 == spsopr.prmc
2. контрагента показывает а накладную к примеру нет? странно, т.к. контрагент у вас зацеплен именно через katsopr...
3. а что за проверка по складу? на каком этапе хотите проверять что то? вы ведь делаете возврат, ордеров ещё нет... если и указан склад куда будет оприходован возврат, то скорее всего передавать в ваш интерфейс надо katsopr.cgruzto а не katsopr.cgruzfrom
4. не понял, последнее предложение. где поменял контрагента? на другого? в документе продажи или в документе возврата?
Re: Помогите разобраться - почему не работает конструкция
1 - поменял
2 - Нет тут дело в том что например если я делаю возврат товара который не продавал данному контрагенту то в интерфейсе все поля пустые кроме наименования контрагента - а по идеи все должно быть пустое.
3 - Это для тех организаций у которых платит один а грузополучатель - другой
(Собственно сейчас я хочу сделать фильтр по грузополучателю в интерфейсе). При выборе по katsopr.cgruzto будет показывать только то что покупал контрагент если и он грузополучатель, а если были грузополучатели другие то он их просто не показывает.
4 - уже не актуально вроде разобрался
2 - Нет тут дело в том что например если я делаю возврат товара который не продавал данному контрагенту то в интерфейсе все поля пустые кроме наименования контрагента - а по идеи все должно быть пустое.
3 - Это для тех организаций у которых платит один а грузополучатель - другой
(Собственно сейчас я хочу сделать фильтр по грузополучателю в интерфейсе). При выборе по katsopr.cgruzto будет показывать только то что покупал контрагент если и он грузополучатель, а если были грузополучатели другие то он их просто не показывает.
4 - уже не актуально вроде разобрался
Re: Помогите разобраться - почему не работает конструкция
С контрагентом, конечно странно, попробуйте использовать в browse IsValid(#KatOrg)
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Помогите разобраться - почему не работает конструкция
Раз показывает katorg.name в бравсе, то быстрее всего isvalid )kvit писал(а):С контрагентом, конечно странно, попробуйте использовать в browse IsValid(#KatOrg)
Похоже на какой то глюк - не должно ,по идее, казаться katorg.name если нема накладных по таким условиям
Re: Помогите разобраться - почему не работает конструкция
Функция помогла но только в другом виде:kvit писал(а):С контрагентом, конечно странно, попробуйте использовать в browse IsValid(#KatOrg)
Код: Выделить всё
if (IsValid(tnKATSOPR), katorg.name, ' ') 'Наименование контрагента':[25], protect;
Re: Помогите разобраться - почему не работает конструкция
А как можно завязаться на грузополучателя? Хочу так же вывести его во вьюхе
смотрю через журнал : при создании накладной на отпуск участвуют в процессе таблицы KATSOPR, SPSOPR, SPORDER, SKLORDER
так как я плоховато разбираюсь еще что и где в галактике, то не могу определить как же завязаться, буду признателен за наводку
Так вроде нашел - Katsopr.cguzto - это же и есть код грузополучателя
смотрю через журнал : при создании накладной на отпуск участвуют в процессе таблицы KATSOPR, SPSOPR, SPORDER, SKLORDER
так как я плоховато разбираюсь еще что и где в галактике, то не могу определить как же завязаться, буду признателен за наводку
Так вроде нашел - Katsopr.cguzto - это же и есть код грузополучателя
Последний раз редактировалось denisag 12 янв 2012, 19:12, всего редактировалось 2 раза.
Re: Помогите разобраться - почему не работает конструкция
Значит при вызове вашего интерфейса "Example" вы передаете в его параметр _corg равный corgbase таблицы KatSopr в интерфейсе AKTREC.denisag писал(а):Функция помогла но только в другом виде:
А коли в вашем интерфейсе:
Код: Выделить всё
_corg == katsopr.corgbase and
katsopr.corgbase /== katorg.nrec and
Вобщем в cmInit своего интерфейса проверяйте if GetFirst KatSopr <> tsOk then Abort;, чтобы его вобще не запускать при отсутствии накладной
Re: Помогите разобраться - почему не работает конструкция
В общем с грузополучателями разобрался
Re: Помогите разобраться - почему не работает конструкция
Ну господа комрады помогите разобраться дальше.
как реализовать чтобы из вызываемого мной интерфейс, вызывался еще один по какой то кнопке, но не могу пока определиться этот интерфейс должен быть самописен или может есть какой то конкретный - задача чтобы в нем отбирались все грузополучатели по указанному контрагенту
как реализовать чтобы из вызываемого мной интерфейс, вызывался еще один по какой то кнопке, но не могу пока определиться этот интерфейс должен быть самописен или может есть какой то конкретный - задача чтобы в нем отбирались все грузополучатели по указанному контрагенту
Re: Помогите разобраться - почему не работает конструкция
Смотрите статус-лайны и события cmPick, cmEdit и др.denisag писал(а):как реализовать чтобы из вызываемого мной интерфейс, вызывался еще один по какой то кнопке,
Re: Помогите разобраться - почему не работает конструкция
А чуток конкретней можно? Что такое статус-лайны?kvit писал(а):Смотрите статус-лайны и события cmPick, cmEdit и др.denisag писал(а):как реализовать чтобы из вызываемого мной интерфейс, вызывался еще один по какой то кнопке,