Ошибка 310
Модераторы: m0p3e, edward_K, Модераторы
Re: Ошибка 310
Хоть ошибка и выскакивает, всёравно создаётся счет, заполняется шапка, проверял всем полям в DO2.spstep присвоены, но они не заносятся в счет чего-то...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Постоянный гость
- Сообщения: 76
- Зарегистрирован: 07 июн 2007, 12:32
- Откуда: Витебск
- Контактная информация:
Re: Ошибка 310
Обратите внимание на эту часть кода
Здесь вы работаете с буфером spstep, а вставляете запись зачем то в basedoc
так же не понятно зачем вы столько раз модифицируете поле price.
Код: Выделить всё
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;
так же не понятно зачем вы столько раз модифицируете поле price.
Re: Ошибка 310
согласен, прослакал) исправил, тоже самое...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Re: Ошибка 310
хм а может ли это быть связано с тем, что я пытаюсь создать ещё один счет с такими же данными? просто у меня копирование срабатывает только со второго раза. после первого нажатия на кнопку, создаётся чистый счёт без данных. ну и ошибки конечно нет) когда нажимаю второй раз, создаётся счёт с заполненой шапкой...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Ошибка 310
Не. Просто писать нужно проще. Тогда кол-во ошибок будет сокращаться. Просмотрите еще раз все мои коменты и сделайте нормально. Когда копирование доведете до 30 строк(хотя и это много), код сюда. Больший объем смотреть нет времени.
Re: Ошибка 310
я не пойму как его можно так ужать? пока я присваиваю каждому полю нужные значения, это уже больше 50 строк вылезет+ создание таблиц) хоть и остаётся идентичный код, но всёравно есть, по максимуму сократил, вышло всёравно немного большеedward_K писал(а):Когда копирование доведете до 30 строк(хотя и это много), код сюда.
Код: Выделить всё
Create view DO1
from Basedoc
where
((
basedocnrec == basedoc.nrec and
spnrec == spstep.nrec
));
Create view DO2
from Basedoc, Spstep
where
((
spnrec == spstep.nrec
));
Create view DO1_sp
from spstep
where
((
spnrec == spstep.nrec
));
Create view DO2_sp
from Basedoc, Stepdoc, Spstep
where
((
basedocnrec == basedoc.nrec and
StepBasenrec == stepdoc.CBASEDOC
));
cmbut1:
{
StepBasenrec:= 0;
StepNrec := 0;
NomPP := 0;
Name := 0;
OtpEd := 0;
Kolvo := 0;
cena := 0;
Summa := 0;
NDS := 0;
spnrec := spced.spstep2.nrec;
BaseDocNrec := BaseDoc.Nrec
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;
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.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 spstep;
j:= j + 1;
};
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Re: Ошибка 310
ну да убрал весь левый код, ошибка пропала) правда теперь не видит SPSTEP вообще...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Re: Ошибка 310
добавил цикл по спецификации и опять ошибка...
Код: Выделить всё
spced._loop viewtable // цикл по спецификации
{
koefoe := 0;
spnrec := spced.spstep2.nrec;
kor._loop viewtable // вложенный цикл ищем отпускную единицу для печатной форме в таре
{
if (InStr('кг',kor.katotped1.name) = 0 and InStr('короб',kor.katotped1.name) = 0) koefoe := kor.katotped1.koef;
}
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Ошибка 310
1. O2.spstep.Cstepdoc := DO2.basedoc.nrec; - почему? Должно быть stepdoc.nrec.
2. _loop viewtable нужно использовать если оно вам точно надо. Я по крайней мере никогда не встречал сего. В остальных все таки по табле. Типа DO2._loop spstep
3. Читайте внимательней мои посты еще раз. Не зачем запоминать стока данных только для того чтобы потом сделать clearbuffer и еще раз присвоить. Незачем вам и 10 view - все можно сделать и на имеющемся добавив туда синонимы, ну если так хочется то на одной дополнительной - вы сами не путаетесь?
4. logstrtofile вам в помощь - мож поймете где косячите.
2. _loop viewtable нужно использовать если оно вам точно надо. Я по крайней мере никогда не встречал сего. В остальных все таки по табле. Типа DO2._loop spstep
3. Читайте внимательней мои посты еще раз. Не зачем запоминать стока данных только для того чтобы потом сделать clearbuffer и еще раз присвоить. Незачем вам и 10 view - все можно сделать и на имеющемся добавив туда синонимы, ну если так хочется то на одной дополнительной - вы сами не путаетесь?
4. logstrtofile вам в помощь - мож поймете где косячите.
Re: Ошибка 310
Решил начать с чистого листа, со всеми поправками. на начальном этапе при получении данных из Basedoc вставил цикл, и решил проверить как работает, оказалось что выводятся только последнее значение n-е количество раз(n-количество строк в спецификации). может подскажете строчки поменять какие, или нз что:edward_K писал(а):1. O2.spstep.Cstepdoc := DO2.basedoc.nrec; - почему? Должно быть stepdoc.nrec.
2. _loop viewtable нужно использовать если оно вам точно надо. Я по крайней мере никогда не встречал сего. В остальных все таки по табле. Типа DO2._loop spstep
3. Читайте внимательней мои посты еще раз. Не зачем запоминать стока данных только для того чтобы потом сделать clearbuffer и еще раз присвоить. Незачем вам и 10 view - все можно сделать и на имеющемся добавив туда синонимы, ну если так хочется то на одной дополнительной - вы сами не путаетесь?
4. logstrtofile вам в помощь - мож поймете где косячите.
Код: Выделить всё
cmbut1:
{
BaseDocNrec := BaseDoc.Nrec
if(DO1.getfirst Basedoc = tsOk and DO1.getfirst Stepdoc = tsOk and DO1.getfirst SPSTEP = tsOk and DO1.getfirst Katmc = tsOk)
{
_LOOP SPSTEP
{
NPP := DO1.SPSTEP.npp;
PRMC := DO1.SPSTEP.PRMC;
CMCUSL := DO1.katmc.Name;
COTPED := DO1.SPSTEP.COTPED;
KOL := DO1.SPSTEP.KOL;
KOLOPL := DO1.SPSTEP.KOLOPL;
KOLFACT := DO1.SPSTEP.kol;
price := DO1.SPSTEP.price;
DSOPR := DO1.SPSTEP.DDOC;
NETTO := DO1.SPSTEP.NETTO;
MTARA := DO1.SPSTEP.MTARA;
CVAL := DO1.SPSTEP.CVAL;
CPARTY := DO1.SPSTEP.CPARTY;
message(NPP + ' + ' + PRMC + ' + ' + CMCUSL + ' + ' + KOL);
}
};
}
Код: Выделить всё
Create view DO1
from Basedoc, stepdoc, spstep, katmc
where
((
stepdoc.cbasedoc == basedoc.nrec and
spstep.cstepdoc == stepdoc.nrec and
spstep.cmcusl == katmc.nrec
));
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Ошибка 310
потому что не стоит использовать в качестве переменных имена полей. У вас же в главной вьюхе есть spstep - они имеют больший приоритет при выводе в message.
Читайте еще раз - нафига вам вообще переменные? Если уж тяжело отказаться от стереотипов, то хотя бы _ добавьте к их имени. Вообще есть некоторые правила по использованию переменных - почитайте в инете. Способов может быть много. Я придерживаюсь, что глобальные начинаются на w_, локальные на ww_
Читайте еще раз - нафига вам вообще переменные? Если уж тяжело отказаться от стереотипов, то хотя бы _ добавьте к их имени. Вообще есть некоторые правила по использованию переменных - почитайте в инете. Способов может быть много. Я придерживаюсь, что глобальные начинаются на w_, локальные на ww_
Re: Ошибка 310
Спасибо за советы. всё получилось. Появился ещё такой вопрос может можно поставить ограничение какое-нибудь, чтобы копирование проходило только один раз, т.е. при повторном нажатии на кнопку копирование не происходило.edward_K писал(а):потому что не стоит использовать в качестве переменных имена полей. У вас же в главной вьюхе есть spstep - они имеют больший приоритет при выводе в message.
Читайте еще раз - нафига вам вообще переменные? Если уж тяжело отказаться от стереотипов, то хотя бы _ добавьте к их имени. Вообще есть некоторые правила по использованию переменных - почитайте в инете. Способов может быть много. Я придерживаюсь, что глобальные начинаются на w_, локальные на ww_
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Ошибка 310
Espada писал(а): т.е. при повторном нажатии на кнопку копирование не происходило
а если в чем то ошиблись в наборе спецификации базового документа и потом нужно будет этот поправить, после того как уже копию сделали ?
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Ошибка 310
копию удалить, поправить скопировать заново.
проверить можно только если вы в копии ссылку сделаете на оригинал через какое-нибудь поле и перед копированием будете проверять на существование копии.
проверить можно только если вы в копии ссылку сделаете на оригинал через какое-нибудь поле и перед копированием будете проверять на существование копии.
Re: Ошибка 310
Ну вроде всё хорошо работает, потестили неделю, всё создаётся нормально. Как лучше теперь все данные(с обоих счетов) вывести в один отчет? Один счет в ДО на продажу, второй в ДО на предоплату... формирую отчет из ДО на предоплату, вывел все данные со счета, а как связать этот отчет со счетом в ДО на продажу не знаю...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!