Ошибка 310
Модераторы: m0p3e, edward_K, Модераторы
Ошибка 310
Здравствуйте, возникла такая проблемка: в счетах на продажу сделал кнопку, для создания ДО на предоплату. всё создаётся нормально, однако не могу добавить спецификацию... проблема в одной ошибке "ПРИКЛАДНАЯ ОШИБКА. ОТСУТСТВУЕТ ПОЗИЦИЯ В ТАБЛИЦЕ. КОД ОШИБКИ:310. ТАБЛИЦА №1103". 1103 это StepDOC. может подскажете в чём может быть причина ошибки?
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Ошибка 310
310 это вроде нет записи по условию поиска
если писать if getfirst ??? where (( ???? ))=0 то ошибки не будет. Видимо Stepdoc вы не создали или не так ищите. код в студию.
если писать if getfirst ??? where (( ???? ))=0 то ошибки не будет. Видимо Stepdoc вы не создали или не так ищите. код в студию.
Re: Ошибка 310
basedocnrec:compedward_K писал(а):310 это вроде нет записи по условию поиска
если писать if getfirst ??? where (( ???? ))=0 то ошибки не будет. Видимо Stepdoc вы не создали или не так ищите. код в студию.
StepBasenrec:comp
Create view DO1
from Basedoc, Stepdoc
where
((
basedocnrec == basedoc.nrec
));
Create view DO2
from Basedoc, Spstep
;
Create view DO1_sp
from spstep
where
((
spnrec == spstep.nrec
));
Create view DO2_sp
from Basedoc, Stepdoc
where
((
basedocnrec == basedoc.nrec and
StepBasenrec == stepdoc.nrec
))
;
cmbut1:
{
if (DO1.getfirst Basedoc = tsOk)
{
MND := DO1.basedoc.DESCR;
Nomer := DO1.basedoc.NODOC;
Ddoc := DO1.basedoc.ddoc;
HEADORG := DO1.basedoc.Corg;
Bank := DO1.basedoc.Cbank;
GRPOL := DO1.basedoc.Cgrpol;
};
if(DO1_sp.getfirst Spstep = tsOk)
{
NomPP := DO1_sp.spstep.NPP;
Name := DO1_sp.spstep.PRMC;
Barkod := DO1_sp.spstep.CMCUSL;
OtpEd := DO1_sp.spstep.COTPED;
Kolvo := DO1_sp.spstep.KOL;
cena := DO1_sp.spstep.Price;
Summa := DO1_sp.spstep.Summa
NDS := DO1_sp.spstep.NDS;
};
if (DO2.getfirst Basedoc = tsOk and DO2.getfirst Spstep =tsOk)
{
DO2.clearbuffer(DO2.tnbasedoc);
DO2.basedoc.DESCR :=MND;
DO2.basedoc.nodoc :=Nomer;
DO2.basedoc.Ddoc :=Ddoc;
DO2.basedoc.Corg := HEADORG;
DO2.basedoc.CBank := Bank;
DO2.basedoc.CGRPOL := GRPOL;
DO2.basedoc.viddoc := '211';
DO2.basedoc.specyes := '0';
DO2.basedoc.status := '2';
DO2.basedoc.cnote := 0000000000000008h;
DO2.basedoc.VHODNAL := '2';
DO2.basedoc.DIRECT := '1';
DO2.basedoc.TIPMONEY := '1';
DO2.basedoc.PRIOR := '99';
DO2.basedoc.VHSKID := '1';
DO2.basedoc.TARAVOZ := '2';
DO2.basedoc.PROCOPL := '100';
DO2.insert current basedoc;
j:= j + 1;
};
StepBasenrec := DO2.basedoc.nrec;
if(DO2_sp.getfirst Stepdoc = tsOk)
{
DO2_sp.clearbuffer(DO2_sp.tnstepdoc);
DO2_sp.stepdoc.nrec := StepBasenrec;
DO2_sp.insert current StepDoc;
j:= j + 1;
message(StepBasenrec);
};
....
вот всё что с этим связано
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Ошибка 310
stepdoc.nrec <> basedoc.nrec
с чего вы взяли то что равны? там 0 оставляете чтобы сгенерился в автомате. А basedoc.nrec в stepdoc.cbasedoc
Ну и view DO1 переписать нужно и StepDocNRec не правильно определяете соотв.
с чего вы взяли то что равны? там 0 оставляете чтобы сгенерился в автомате. А basedoc.nrec в stepdoc.cbasedoc
Ну и view DO1 переписать нужно и StepDocNRec не правильно определяете соотв.
Re: Ошибка 310
согласен, прослакал... stepdoc.cbasedoc =basedoc.nrec.edward_K писал(а):stepdoc.nrec <> basedoc.nrec
с чего вы взяли то что равны? там 0 оставляете чтобы сгенерился в автомате. А basedoc.nrec в stepdoc.cbasedoc
Ну и view DO1 переписать нужно и StepDocNRec не правильно определяете соотв.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Re: Ошибка 310
не совсем понял про, про что вы...edward_K писал(а): Ну и view DO1 переписать нужно и StepDocNRec не правильно определяете соотв.
DO1 ===> Create view DO1
from Basedoc
where
((
basedocnrec == basedoc.nrec
));
а StepBasenrec := DO2.basedoc.nrec;
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Ошибка 310
Код: Выделить всё
Create view DO2_sp
from Basedoc, Stepdoc
where
((
basedocnrec == basedoc.nrec and
StepBasenrec == stepdoc.сBasedoc
))
;
....
StepBasenrec:=basedocnrec
if(DO2_sp.getfirst Stepdoc = tsOk)
{
...
DO2_sp.stepdoc.cBasedoc := Do2.basedoc.nrec;
Re: Ошибка 310
вы гений) почистил немного, сделал как сказали) всё работает. Спасибо огромное)edward_K писал(а):хотя нафига вам стока вьюшек
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Re: Ошибка 310
Может еще подскажете, что я со спецификациями делаю не так?
в переменные данные попадают правильно(проверял message), но вывести их не получается...
Код: Выделить всё
...
Create view DO2
from Basedoc, Spstep
where
((
spnrec == spstep.nrec
));
...
if(DO1_sp.getfirst Spstep = tsOk)
{
NomPP := DO1_sp.spstep.NPP;
Name := DO1_sp.spstep.CMCUSL;
OtpEd := DO1_sp.spstep.COTPED;
Kolvo := DO1_sp.spstep.KOL;
cena := DO1_sp.spstep.Price;
Summa := DO1_sp.spstep.Summa
NDS := DO1_sp.spstep.NDS;
Prices := DO1_sp.spstep.Cpricelist;
};
if (DO2.getfirst Basedoc = tsOk and DO2.getfirst Spstep =tsOk)
{
DO2.clearbuffer(DO2.tnbasedoc);
DO2.clearbuffer(DO2.tnspstep);
DO2.basedoc.DESCR :=MND;
DO2.basedoc.nodoc :=Nomer;
DO2.basedoc.Ddoc :=Ddoc;
DO2.basedoc.Corg := HEADORG;
DO2.basedoc.CBank := Bank;
DO2.basedoc.CGRPOL := GRPOL;
DO2.basedoc.viddoc := '211';
DO2.basedoc.specyes := '1';
DO2.basedoc.status := '2';
DO2.basedoc.cnote := 0000000000000008h;
DO2.basedoc.VHODNAL := '2';
DO2.basedoc.DIRECT := '1';
DO2.basedoc.TIPMONEY := '1';
DO2.basedoc.PRIOR := '99';
DO2.basedoc.VHSKID := '1';
DO2.basedoc.TARAVOZ := '2';
DO2.basedoc.PROCOPL := '100';
DO2.spstep.NPP := NomPP;
DO2.spstep.CMCUSL := Name;
DO2.spstep.Cotped := Otped;
DO2.spstep.Kol := Kolvo;
DO2.spstep.Price := Cena;
DO2.spstep.Summa := Summa;
DO2.spstep.NDS := NDS;
DO2.spstep.Cpricelist := Prices;
DO2.insert current spstep;
DO2.insert current basedoc;
j:= j + 1;
};
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Ошибка 310
1. есть журнал
2. а кто будет заполнять cstepdoc?
3. я делаю проще. в синониме нахожу запись. там обнуляю nrec и устанавливаю нужные поля - здесь cstepdoc хватит и все.
синоним нужен чтобы не поломать _loop fullcache spstep
4. там еще есть табла с налогами - но эт вы уж по журналу смотрите.
да. и вот это
DO2.insert current spstep;
DO2.insert current basedoc;
должно быть в другом порядке - basedoc,stepdoc,spstep
2. а кто будет заполнять cstepdoc?
3. я делаю проще. в синониме нахожу запись. там обнуляю nrec и устанавливаю нужные поля - здесь cstepdoc хватит и все.
синоним нужен чтобы не поломать _loop fullcache spstep
4. там еще есть табла с налогами - но эт вы уж по журналу смотрите.
да. и вот это
DO2.insert current spstep;
DO2.insert current basedoc;
должно быть в другом порядке - basedoc,stepdoc,spstep
Re: Ошибка 310
разделил заполнение на 2 части чтобы было basedoc-stepdoc-spstep. ввожу переменнуюedward_K писал(а):1. есть журнал
2. а кто будет заполнять cstepdoc?
3. я делаю проще. в синониме нахожу запись. там обнуляю nrec и устанавливаю нужные поля - здесь cstepdoc хватит и все.
синоним нужен чтобы не поломать _loop fullcache spstep
4. там еще есть табла с налогами - но эт вы уж по журналу смотрите.
да. и вот это
DO2.insert current spstep;
DO2.insert current basedoc;
должно быть в другом порядке - basedoc,stepdoc,spstep
Код: Выделить всё
StepNrec := stepdoc.nrec;
if (DO2.getfirst Spstep = tsOk)
{
...
DO2.spstep.cstepdoc := StepNrec;
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Ошибка 310
так обнуляйте nrec перед встакой в таблицу выше же писали уже об этом
Re: Ошибка 310
а функция DO2.clearbuffer разве не должна освобождать так скажем от этого?Алексей писал(а):так обнуляйте nrec перед встакой в таблицу
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Ошибка 310
она то должна - если вы ее правильно вызвали. Но смысл очищать все а потом заполнять 30 полей, когда можно обойтись 2?
Re: Ошибка 310
поставил обнуление в самом начале, даже оставил очистку буфера, разделил заполнение, чтобы было по порядку basedoc-stepdoc-spstep... всёравно высвечивается дублирование Nrecaedward_K писал(а):она то должна - если вы ее правильно вызвали. Но смысл очищать все а потом заполнять 30 полей, когда можно обойтись 2?
Код: Выделить всё
...
StepBasenrec:= 0;
StepNrec := 0;
NomPP := 0;
Name := 0;
OtpEd := 0;
Kolvo := 0;
cena := 0;
Summa := 0;
NDS := 0;
Prices := DO1_sp.spstep.Cpricelist;
if (DO1.getfirst Basedoc = tsOk)
{
MND := DO1.basedoc.DESCR;
Nomer := DO1.basedoc.NODOC;
Ddoc := DO1.basedoc.ddoc;
HEADORG := DO1.basedoc.Corg;
Bank := DO1.basedoc.Cbank;
GRPOL := DO1.basedoc.Cgrpol;
};
if (DO1.getfirst Spstep =tsOk)
{
NPP := DO1.SPSTEP.npp;
PRMC := DO1.SPSTEP.PRMC;
CMCUSL := DO1.SPSTEP.CMCUSL;
COTPED := DO1.SPSTEP.COTPED;
KOL := DO1.SPSTEP.KOL;
KOLOPL := DO1.SPSTEP.KOLOPL;
KOLFACT := DO1.SPSTEP.kol;
price := DO1.SPSTEP.price;
vprice := DO1.SPSTEP.price;
rprice := DO1.SPSTEP.price;
rvprice := DO1.SPSTEP.price;
DSOPR := DO1.SPSTEP.DDOC;
NETTO := DO1.SPSTEP.NETTO;
MTARA := DO1.SPSTEP.MTARA;
CVAL := DO1.SPSTEP.CVAL;
CPARTY := DO1.SPSTEP.CPARTY;
};
if(DO1_sp.getfirst Spstep = tsOk)
{
NomPP := DO1_sp.spstep.NPP;
Name := DO1_sp.spstep.CMCUSL;
OtpEd := DO1_sp.spstep.COTPED;
Kolvo := DO1_sp.spstep.KOL;
cena := DO1_sp.spstep.Price;
Summa := DO1_sp.spstep.Summa
NDS := DO1_sp.spstep.NDS;
Prices := DO1_sp.spstep.Cpricelist;
};
if (DO2.getfirst Basedoc = tsOk)
{
DO2.clearbuffer(DO2.tnbasedoc);
DO2.basedoc.DESCR :=MND;
DO2.basedoc.nodoc :=Nomer;
DO2.basedoc.Ddoc :=Ddoc;
DO2.basedoc.Corg := HEADORG;
DO2.basedoc.CBank := Bank;
DO2.basedoc.CGRPOL := GRPOL;
DO2.basedoc.viddoc := '211';
DO2.basedoc.specyes := '1';
DO2.basedoc.status := '2';
DO2.basedoc.cnote := 0000000000000008h;
DO2.basedoc.VHODNAL := '2';
DO2.basedoc.DIRECT := '1';
DO2.basedoc.TIPMONEY := '1';
DO2.basedoc.PRIOR := '99';
DO2.basedoc.VHSKID := '1';
DO2.basedoc.TARAVOZ := '2';
DO2.basedoc.PROCOPL := '100';
DO2.insert current Basedoc;
j:= j + 1;
};
StepBasenrec:=basedoc.nrec
if(DO2_sp.getfirst Stepdoc = tsOk)
{
DO2_sp.clearbuffer(DO2_sp.tnstepdoc);
DO2_sp.stepdoc.cBasedoc := Do2.basedoc.nrec;
DO2_sp.insert current StepDoc;
j:= j + 1;
};
if (DO2.getfirst Spstep =tsOk)
{
DO2.clearbuffer(DO2.tnspstep);
DO2.SPSTEP.npp := NPP;
DO2.SPSTEP.PRMC := PRMC;
DO2.SPSTEP.CMCUSL := CMCUSL;
DO2.SPSTEP.COTPED := COTPED;
DO2.SPSTEP.KOL := KOL;
DO2.SPSTEP.KOLOPL := KOLOPL;
DO2.SPSTEP.kol := KOLFACT;
DO2.SPSTEP.price := price;
DO2.SPSTEP.price := vprice;
DO2.SPSTEP.price := rprice;
DO2.SPSTEP.price := rvprice;
DO2.SPSTEP.DDOC := DSOPR;
DO2.SPSTEP.NETTO := NETTO;
DO2.SPSTEP.MTARA := MTARA;
DO2.SPSTEP.CVAL := CVAL;
DO2.SPSTEP.CPARTY := CPARTY;
DO2.spstep.Cstepdoc := DO2.basedoc.nrec
DO2.insert current Basedoc;
j:= j + 1;
}
...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!