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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.04.2009, 15:11   #1  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Передвижка фаз при выборе больше чем одной строки. Форма SMAServiceOrderTable
У меня вопрос (жду не дождусь когда смогу давать ответы):

Форма: SMAServiceOrderTable, в ней есть поле - Service stage. так вот, я могу передвинуть фазу вперед или назад (если таковые имеются), но только выбрав одну строку. Если выбираю больше чем одну кнопка Stages становится не активной (разумеется выбираю строки с одинаковым Service stage). Посмотрел два класса: SMAServiceOrderTableForm и SMAStageEngine, но не нашел ничего, что отвечает за Button::disabled-enabled. В форме тоже ничего не нашел.

Не подскажите где можно посмотреть пример или что отвечает за активирование кнопок?

спасибо
Старый 17.04.2009, 15:20   #2  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
св-во multiSelect на кнопке
За это сообщение автора поблагодарили: Dima_Dima (1).
Старый 17.04.2009, 16:02   #3  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Теперь могу выбрать больше чем одну строку, но фаза передвигается только у строки, которая была выбрана последней. Это и понятно, но как затолкнуть RecordId всех выбранных строк в container???
Старый 17.04.2009, 16:09   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от Dima_Dima Посмотреть сообщение
Теперь могу выбрать больше чем одну строку, но фаза передвигается только у строки, которая была выбрана последней. Это и понятно, но как затолкнуть RecordId всех выбранных строк в container???
Здесь написано, как пробежаться по выделенным записям. Стандартный подход.
Старый 17.04.2009, 16:35   #5  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Здесь написано, как пробежаться по выделенным записям. Стандартный подход.
Спасибо, разобрался.
Старый 20.04.2009, 13:08   #6  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
как и откуда лучще всего вызвать SMAStageEngine construct(SMAStageChange _stageChange, Common _buffer = null) ровно столько раз, сколько RecId в контейнере = кол-во выделеных строк в SMAServiceOrderTable?

Спасибо.
Старый 20.04.2009, 13:35   #7  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
а где Вы там контейнер нашли? Задача вообще в чём, изменить поле "Этап сервисного обслуживания" для нескольких выделенных строк?
Старый 20.04.2009, 13:44   #8  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение
а где Вы там контейнер нашли?
Контейнер я сделал в active() на Datasource SMAServiceOrderTable, форма SMAServiceOrderTable. Туда я закладываю RecId выделенных строк.


Цитата:
Сообщение от DSPIC Посмотреть сообщение
Задача вообще в чём, изменить поле "Этап сервисного обслуживания" для нескольких выделенных строк?
именно!
Старый 20.04.2009, 13:52   #9  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Тут есть подводный камень.
Каждый заказ на СО может иметь различный набор этапов. (см. форму "Сервисное обслуживание"-->"Настройка"-->"Заказы на сервисное обслуживание"-->"Этапы сервисного обслуживания")
Соотв-но если набор этапов различный, что, по Вашему мнению, должно появляться в диалоге, который запрашивает новый этап для нескольких выделенных заказов на СО?

Поправка.
Неправильно высказался. Каждый заказ на СО может находиться на разном этапе обслуживания. Соотв-но последующий (или предыдущий) этап для каждого заказа на СО может отличаться. Поэтому, в таком подходе будет некорректным множественное выделение.

Последний раз редактировалось DSPIC; 20.04.2009 в 14:19.
Старый 20.04.2009, 14:16   #10  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Тут есть подводный камень.
Каждый заказ на СО может иметь различный набор этапов. (см. форму "Сервисное обслуживание"-->"Настройка"-->"Заказы на сервисное обслуживание"-->"Этапы сервисного обслуживания")
Соотв-но если набор этапов различный, что, по Вашему мнению, должно появляться в диалоге, который запрашивает новый этап для нескольких выделенных заказов на СО?
Выбираются строки только с одинаковой строки с одинаковым Service stage.
Старый 20.04.2009, 14:41   #11  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Выбираются строки только с одинаковой строки с одинаковым Service stage.
Ок, ответ на вопрос
Цитата:
как и откуда лучще всего вызвать SMAStageEngine construct(SMAStageChange _stageChange, Common _buffer = null) ровно столько раз, сколько RecId в контейнере = кол-во выделеных строк в SMAServiceOrderTable?
Ответ: Ни откуда

Вам всё-таки придется переделать класс. Потому как вызывая его несколько раз, будет каждый раз запрашивать новый этап. А нужно, чтобы один раз спросил... - это первое, что приходит на ум...

В общем, подробно разберите класс, посмотрите - как он работает и найдете ответ на свой вопрос. Чем больше классов\кода вы разберете самостоятельно, тем быстрее вы сможете
Цитата:
жду не дождусь когда смогу давать ответы
За это сообщение автора поблагодарили: Dima_Dima (1).
Старый 22.04.2009, 17:32   #12  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Тут нужно было запомнить RecId выбранных строк и затем переделать updateActivitiesWithStagePhase и updateServiceOrder методы класса SMAStageEngine. И всё работает. Только нужно F5 нажимать после передвижки фаз.
X++:
Dictionary::dataFlush(_tablenum)
и
X++:
smaServiceOrderTable_ds.reread(); 
smaServiceOrderTable_ds.refresh();
почему-то не имеют эффекта. В форме обновляется только последняя выбранная строка.
Да, ещё нужно опрoсить если у выбранных строк однаковые фазы.

Последний раз редактировалось Dima_Dima; 22.04.2009 в 18:14.
Старый 22.04.2009, 17:40   #13  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
smaServiceOrderLine_ds.executeQuery() ?
Старый 22.04.2009, 17:46   #14  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение
smaServiceOrderLine_ds.executeQuery() ?
исполнить в active() на Datasource?
Старый 22.04.2009, 18:06   #15  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Нет! Почему active() ? Это нужно выполнить в самом конце, как после отработки изменения этапа. Теоретически там, где вы делаете
Dictionary::dataFlush(_tablenum)
smaServiceOrderLine_ds.reread();
smaServiceOrderLine_ds.refresh();
, чего делать не нужно.

Это можно сделать в методе main класса, который меняет фазу, в самом его конце.

После отработки executeQuery у Вас "уедет" курсор. Как после этого спозиционироваться - написано здесь

Просто рекомендация - почитайте руководства по программированию, раздел про формы. Крайне важно знать, основные стандартные методы на форме и порядок, в котором они вызываются при различных телодвижениях юзера. Почитайте также на форуме про методы reread, refresh,research,executeQuery()
Старый 22.04.2009, 18:12   #16  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Просто рекомендация - почитайте руководства по программированию
Имеется ввиду книги курса "Development Introduction" или "MORPHX IT" г-на Steen Andreasen? если что-то другое, прошу дать ссылку.
Старый 22.04.2009, 18:37   #17  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Есть и там и там.
Inside Dynamics AX 4.0
MORPHX IT

Ещё как хинт. Полезно на форме перекрыть все ключевые методы и вставить туда
X++:
info(funcname());
Далее поиграйтесь с формой как пользователь - удаляйте записи, создавайте, фильтруйте и т.п.
Инфолог позволит вам быстро понять и запомнить события на форме.

Ну... и поиск по форуму тоже иногда оказывается полезен.
Старый 22.04.2009, 19:01   #18  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение

Ну... и поиск по форуму тоже иногда оказывается полезен.
Да если бы не форум, я опять вернулся бы в Java-Development!
Старый 30.04.2009, 15:49   #19  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
На всех клиентах отрабатывается успешно, но на одном двигается только последней выбранная фаза.
Все клиенты конфигурированы абсолютно одинаково. В Active Directory и в АХ.

Kто-нибудь сталкивался с подобным???

Спасибо.
Старый 30.04.2009, 16:00   #20  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
... двигается только последней выбранная фаза
Что дебаггер говорит?
Теги
multiselect, выделение, выделение строк, кнопка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что значит "Вы не можете разбить больше, чем финансово открыто"? skof DAX: Прочие вопросы 6 19.06.2006 09:05
Ширина формы больше чем ширина экрана belugin DAX: Программирование 5 07.12.2005 15:56
Журналы и строки на одной форме. chi DAX: Программирование 16 08.06.2005 11:21
Auto, но не более чем... Можно сделать? SnowMan DAX: Программирование 16 17.10.2003 15:45
Изменить CheckBox для одной строки Yurik DAX: Программирование 2 26.03.2003 13:42
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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