|
![]() |
#1 |
Участник
|
Сильно не вглядывался, но на вскидку примерно так...
Во-первых, объем кода на формах надо "максимально минимизировать". Во-вторых, если и пишете логику на кнопке, выносите эту логику в отдельную функцию и вызывайте ее с 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('-') и прочих допотопных. |
|
![]() |
#2 |
Участник
|
Благодарю за ценные рекомендации. Взяла себе на заметку.
Мы в итоге поступили след.образом: В Т37(Sales Line)в триггер OnValidate для полей Print и "Qty. to Invoice" вставлен код: IF ("Qty. to Invoice" <> 0) AND (Type <> Type::" ") AND NOT(Print) THEN ERROR(Text50045); |
|
![]() |
#3 |
Участник
|
А когда в строке не стоит ни кол-во, ни Print - система не ругается при попытке изменить любое из этих полей?
![]() Может просто отчет формировать не по галке Print, а по Кол-во для выст. Счета? |
|
![]() |
#4 |
Участник
|
Цитата:
Дело в том, что в документе помимо "значимых" строк (с товаром и количеством) могут содержаться и строки комментария (как для клиента, так и для бухгалтера). Назначение колонки Print в том и состоит, чтобы управлять какие строки печатать, а какие нет. |
|
![]() |
#5 |
Участник
|
Назрел еще один вопрос.
(заранее прошу прощения за возможно глупые и элементарные вопросы) Есть документ (Fnn). При нажатии на F5 открывается список таких документов (Fxxx). Где прописывается какая именно форма должна открыться при нажатии на F5? И ещк один вопрос: Когда смотришь в дизайнере форму списка, то в ней есть кнопки "ОК" и Отмена", а когда нажимаешь на Run, то этих кнопок нет (есть только кн."Помощь") В Properties этих кнопок Visible and Enabled = Yes. В модуле нигде не нашла чтобы как-то видимостью управлялось. :-/ Где тут собака могла порыться? |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Kadawrik
![]() Назрел еще один вопрос.
(заранее прошу прощения за возможно глупые и элементарные вопросы) Есть документ (Fnn). При нажатии на F5 открывается список таких документов (Fxxx). Где прописывается какая именно форма должна открыться при нажатии на F5? И ещк один вопрос: Когда смотришь в дизайнере форму списка, то в ней есть кнопки "ОК" и Отмена", а когда нажимаешь на Run, то этих кнопок нет (есть только кн."Помощь") В Properties этих кнопок Visible and Enabled = Yes. В модуле нигде не нашла чтобы как-то видимостью управлялось. :-/ Где тут собака могла порыться? 2. Свойство элемента PushAction. OK обычно видно, когда форма вызывается по Lookup из другой формы |
|
![]() |
#7 |
Участник
|
Цитата:
Касательно второго вопроса: методом тыка выяснила, что (оказывается! ![]() имя_переменной := FORM.RUNMODAL тогда эти кнопки есть. (об этом свойстве RUNMODAL я нигде не читала, потому это было для меня открытием ![]() Теперь след.вопрос. Разбираясь в коде, наткнулась на след.фрагмент: VerkZeile.TESTFIELD(Quantity); IF VerkZeile.Quantity <> 1 THEN VerkZeile.FIELDERROR(Quantity,'muss 1 sein'); Разве это не тоже самое что и VerkZeile.TESTFIELD(Quantity,1) ? Если да, то почему бы не написать одну строчку вместо двух-трех? |
|