Показать сообщение отдельно
Старый 04.11.2010, 14:09   #2  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Сильно не вглядывался, но на вскидку примерно так...

Во-первых, объем кода на формах надо "максимально минимизировать".
Во-вторых, если и пишете логику на кнопке, выносите эту логику в отдельную функцию и вызывайте ее с OnPush'a
В-третьих, не трогайте стандартную кнопку Печать на форме. Вынесите в отдельный MenuItem какой-нибудь.
В-четвертых, если решили работать с кнопкой Печать, то вместо вот этого:
VerkZeilen.SETRANGE("Document Type","Document Type");
VerkZeilen.SETFILTER("Document No.", "No.");
VerkZeilen.SETRANGE(drucken,FALSE);
OK := TRUE;
IF VerkZeilen.FIND('-') THEN
BEGIN
CLEAR(QtySum);
REPEAT
QtySum := QtySum + ABS(VerkZeilen."Qty. to Invoice") + ABS(VerkZeilen."Qty. to Ship");
UNTIL VerkZeilen.NEXT = 0;
IF QtySum <> 0 THEN OK := CONFIRM(Text001);
END;
IF OK THEN
REPORT.RUN(lrc_Belegsteuerung."ID Auftragsbestätigung",TRUE,FALSE,lrc_SalesHeader);

напишите что-нибудь вроде

IF МояФункцияГдеТоНаПросторахТаблицы36 THEN
REPORT.RUN(lrc_Belegsteuerung."ID Auftragsbestätigung",TRUE,FALSE,lrc_SalesHeader);

Пишите логику на таблицах и кодэюнитах.

Ну и про операторы не забывайте: ISEMPTY, FINDFIRST, FINDSET, COUNTAPPROX и все такое прочее... Почитайте по ним мануалы, либо поищите на этом форуме отличия перечисленных от обычных FIND('-') и прочих допотопных.