AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.02.2015, 08:52   #1  
at5454 is offline
at5454
Участник
 
61 / 10 (1) +
Регистрация: 29.05.2014
Теряются параметры для формы при вставке метода
Здравствуйте!
Это метод clicked на кнопке запуска менюитема разноски. Перед разноской как видите я открываю форму работы с документами, добавляю файлы потом закрываю форму - и после этого открывается форма разноски (то есть срабатывает super())
НО!)
Мне после formRun.wait()
надо позарез выполнить метод this.docinsert(first) .Он должен быть обязательно запущен отсюда(работает с текущими данными формы из которой я нажимаю кнопку. Но из-за этого метода отваливаются передаваемые параметры для запуска разноски, и разноска открывается пустой. Мне бы подошло если б метод запускался после открытия разноски но как это сделать?




void clicked()
{
Args args = new Args();
FormRun formRun;
;
first=purchTable.PurchId;

args.record(purchTable);
formRun = new MenuFunction(menuitemdisplaystr(DocuView), MenuItemType:isplay).create(args);
formRun.run();
formRun.wait();

this.docinsert(first);

super();
}
Старый 18.02.2015, 10:48   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вероятно, у Вас в методе this.docinsert(first) происходит перемещение указателя записи purchTable. Вам надо запомнить текущее положение записи до вызова этого метода и восстановить после

X++:
PurchTable    purchTableFind;
;
// Запоминаем текущее положение
purchTableFind = PurchTable::find(purchTable.PurchId)

(...)

this.docinsert(first);

// На источнике данных восстанавливаем текущее положение
purchTable_ds.findRecord(purchTableFind);

super();
Правда, следует иметь в виду, что метод purchTable_ds.findRecord() работает относительно медленно. Поэтому лучше проанализировать Ваш метод this.docinsert(first); с тем, чтобы в нем не происходило перемещение указателя записи по источнику данных. Ну, или он возвращал указатель в исходное положение

Возможно, Вам еще понадобиться предварительно сделать перезапрос к базе данных, если в Вашем методе происходит изменение данных PurchTable. Тогда надо добавить

X++:
PurchTable    purchTableFind;
;
// Запоминаем текущее положение
purchTableFind = PurchTable::find(purchTable.PurchId)

(...)

this.docinsert(first);


// Синхронизация с базой данных
purchTable_ds.research();

// Обновление "картинки" на форме
purchTable_ds.reread();

// На источнике данных восстанавливаем текущее положение
purchTable_ds.findRecord(purchTableFind);

super();
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: at5454 (1).
Старый 21.02.2015, 14:41   #3  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
А если этот метод сделать в классе и в него передавать коллер с формы?
Ведь бизнес логика на формах - не по ВР
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вызов метода формы из потока _AxDevel_ DAX: Программирование 1 28.11.2013 00:37
Странное поведение метода last в источнике данных формы Vasiliusis DAX: Программирование 23 14.02.2013 13:56
Как обратится к объекту формы из его метода Владимир Максимов DAX: Программирование 2 24.03.2004 12:52
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Выполнение метода формы на сервере ! Возможно ли такое ? Surok DAX: Программирование 6 20.12.2002 10:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:07.