29.11.2004, 11:05 | #1 |
Модератор
|
Цитата:
Сообщение от mazzy
измените dialog, getFromDialog и putToDialog так, чтобы пользователь мог вводить значения ваших переменных
__________________
-ТСЯ или -ТЬСЯ ? |
|
29.11.2004, 12:29 | #2 |
Участник
|
Спасибо, Vadik.
Или перекройте только два метода: dialog, getFromDialog. |
|
29.11.2004, 14:22 | #3 |
Administrator
|
Цитата:
Сообщение от Vadik
Цитата:
Сообщение от mazzy
измените dialog, getFromDialog и putToDialog так, чтобы пользователь мог вводить значения ваших переменных
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
29.11.2004, 14:31 | #4 |
Участник
|
В этой ветке ведется обсуждение FAQ-вопроса отсюда
Как создать свой класс, который можно запустить по расписанию (в пакетном режиме) |
|
29.11.2004, 14:38 | #5 |
Модератор
|
Ну вот, опять "Как лучше" против "Как написана вся Аксапта"
Я специально искал вхождения putToDialog() по классам - их там ровно два \Classes\RHRMJournalCheckPost\putToDialog \Classes\SysDataExpImpGroupCreate\putToDialog Максим, положа руку на сердце - сколько раз ты сам использовал dialog() и сколько putToDialog() ?
__________________
-ТСЯ или -ТЬСЯ ? |
|
29.11.2004, 14:49 | #6 |
Administrator
|
Ну, если честно, Best Practice это в общепринятом смысле не является (то есть, ни в каких документах такая рекомендация не зафиксирована )
Лично я, кстати, никогда не заполняю контролы в методе dialog(), если программирую обработку "с нуля". Всегда пользуюсь putToDialog(). В общем, можете считать это моей Best Practice
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
29.11.2004, 15:13 | #7 |
Модератор
|
Цитата:
Сообщение от Maxim Gorbunov
Лично я, кстати, никогда не заполняю контролы в методе dialog(), если программирую обработку "с нуля". Всегда пользуюсь putToDialog(). В общем, можете считать это моей Best Practice
__________________
-ТСЯ или -ТЬСЯ ? |
|
29.11.2004, 16:21 | #8 |
Участник
|
народный Best Practice = FAQ?
|
|
29.11.2004, 17:08 | #9 |
Модератор
|
нет
FAQ читают после того, как возникла проблема. Best Practice - для того, чтобы избежать проблем, описываемых в FAQ
__________________
-ТСЯ или -ТЬСЯ ? |
|
19.12.2004, 08:07 | #10 |
Участник
|
Пока mazzy проверит и разместит в собственно FAQ-е помещу сюда... Кому не лень - дополните плиз.
Хочу дополнить теоретической подоплекой. Класс RunBaseBatch очень важен в Аксапте и буквально красной нитью проходит по всем процессам в ней. Подавляющее большинство menuitem-ов прямо или косвенно запускают наследников этого класса. И это очень важный момент - в идеологии аксапты любая мало мальски трудоёмкая операция обязана иметь возможность быть отложенной в очередь заданий на пакетную обработку. Под "любой мало мальски трудоёмкой операцией" как правило подразумеваются все действия, которые находятся в менюшках "Журналы" (при выполнении разносок, резервирований и т.п.), "Периодические операции", "Отчёты". Для пользователя это выглядит следующим образом: при нажатии на кнопку (или пункт меню) начинающую какую либо операцию (например разноску журнала или формирование отчёта) сперва открывается диалог содержащий в себе параметры операции и либо закладку "Пакет" либо кнопку "Пакет". По нажатию на OK операция либо начинается выполнятся сразу, либо (если проставлены соответствующие опции), откладываеся в очередь заданий для пакетной обработки (Основное->Запросы->Пакеты) где будет лежать, до тех пор пока её не запустят оттуда вручную, либо пока её не запустит сервер пакетной обработки (Основное->Периодические операции->Пакет->Режим сервера). Для программиста в простейшем случае это выглядит так, как описал mazzy выше. Т.е. создаётся класс, наследник от RunbaseBatch по вышеприведенной схеме, и по нажатии на кнопки запускается именно он. Но схема по которой сделан класс tutorial_RunBaseBatch неудобна, когда параметров в диалоге много и между ними нужно организовать какую нибудь функциональную взаимосвязь (другими словами - "умно" реагировать на ввод пользователя в диалог). Обычный диалог позволяет лишь "накидать на него" поля ввода и по нажатию на OK прочитать их значения. Когда требуется сложная форма диалога для RunBaseBatch существует возможность задать для этого диалога свою собственную форму, разработанную в AOT - как это делается показано в классе tutorial_RunBaseForm. В методе dialog() помещается примерно следующий код: Код: public Object dialog() { dialogRunbase dialog = dialog::newFormnameRunbase(formstr(имя_нашей формы_в_AOT),this); ; dialog = super(dialog); // Заполнение полей или передача их в форму ... return dialog; } 1. В ней должен быть Tab с именем Tab - в него автоматически подставится закладка "Пакет" при запуске 2. В ней должна быть группа (Group) с именем dialogStartGrp - в неё будут помещены поля, которые вы добавляете через метод addField 3. Ну и разумеется две кнопки типа CommanButton: OK и Cancel Существует еще возможность вместо закладки "Пакет" помещать на свою форму только кнопку "Пакет", при нажатии на которую откроется дополнительный диалог с параметрами пакетных заданий и тем самым сэкономить место на форме - для этого надо поместить на форму menuItemButton настроенный на menuItem BatchDialog, и подавить вывод закладки "Пакет" (как это сделать - отдельный разговор, к которому я пока не готов ). Ну и последнее что остаётся сказать - это RunbaseBatch для отчётов. Так как формирование отчётов как правило является трудоёмкой операцией отчёты - наипрямейшие кандидаты в очередь пакетных заданий. Но в самих отчётах такой функциональности нет, и поэтому большинство стандартных menuItem-ов отчётов указывают не непосредственно на сами отчёты, а на классы наследники от RunbaseReport (см. tutorial_RunbaseReport). Самое главное в таком классе-наследнике переопределить метод lastValueElementName так, чтобы он возвращал имя отчёта в АОТ: Код: identifiername lastValueElementName() { return reportStr(MyReport); } |
|
20.12.2004, 12:32 | #11 |
NavAx
|
У нас как то странно работает пакетный режим. Постоянно запущена станция в режиме пакетного сервера, так вот в рабочие дни все ОК, а в выходные пакеты не запускаются. При чем часть пакетов есть ежедневные, но есть еженедельные пакеты назначенные на воскресенье.
Это нормальное поведение? |
|
20.12.2004, 14:48 | #12 |
Участник
|
Цитата:
Сообщение от raz
У нас как то странно работает пакетный режим. Постоянно запущена станция в режиме пакетного сервера, так вот в рабочие дни все ОК, а в выходные пакеты не запускаются. При чем часть пакетов есть ежедневные, но есть еженедельные пакеты назначенные на воскресенье.
Это нормальное поведение? По иронии судьбы мы только что - сегодня решили эту проблему! На самом деле вы ставите в параметрах диалога повторения периодичность = "День", параметр - "Выполнять каждый день". Если посмотреть в англоязычной аксапте "Выполнять каждый день" изначально было написано как "Every weekday". Так вот, видимо (Lingvo мне в помощь) "weekday" в литературном переводе на русский означает не "день недели", а "будни"! Что значит в техническом переводе - "рабочий день"! Другими словами - с понедельника по пятницу. Выходные дни в английском пишутся как weekends. Т.е. ставьте период "Повторять через указанный интервал" = 1. P.S. Мы долго ржали еще с утра над этим, а тут еще вы настроение подняли вовремя. |
|
20.12.2004, 17:04 | #13 |
NavAx
|
Цитата:
На самом деле вы ставите в параметрах диалога повторения периодичность = "День", параметр - "Выполнять каждый день".
Я же писал, что у меня есть пакеты, котрые должны выполняться еженедельно по воскресеньям, но выполняются в понедельник. |
|
20.12.2004, 18:41 | #14 |
Участник
|
Цитата:
Сообщение от raz
Цитата:
На самом деле вы ставите в параметрах диалога повторения периодичность = "День", параметр - "Выполнять каждый день".
Я же писал, что у меня есть пакеты, котрые должны выполняться еженедельно по воскресеньям, но выполняются в понедельник. |
|
25.01.2008, 18:41 | #15 |
Участник
|
А в 2.5 есть возможность создания такого класса, который можно запустить по расписанию (в пакетном режиме) ?
|
|
25.01.2008, 21:25 | #16 |
Участник
|
Да. Насколько я помню, этот механизм существует давно и существенно не менялся.
|
|