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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.03.2005, 07:51   #1  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
Выбраные строки в гриде.
Добрый день.

Как получить выбранные в гриде строки?
Старый 24.03.2005, 08:06   #2  
sassas
Гость
 
n/a
table = table_ds.getFirst(0 или 1);

while(table)
{
----// do something
----table = table_ds.getNext();
}
Старый 24.03.2005, 08:26   #3  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
Спасибо.
Всё гениальное оказалось просто.
Старый 24.03.2005, 09:19   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
в BestPractices есть статья Traversing multi selected records in a data source

вот ссылка, которую можно запихать в адресную строку IE:

mk:@MSITStore:C:\Program%20Files\Navision\Client\Bin\Dev_BPHB.chm::/Application_Design/Design_Patterns/TraverseMultiselectedDataSource.htm

Там рекомендуют делать так:
PHP код:
void clicked()
{
    
xRefReferences xRefReferencesEdit;
    
    for (
xRefReferencesEdit xRefReferences_ds.getFirst(1) ?      // are there any marked records -
                                  
xRefReferences_ds.getFirst(1) :  //   if yes, get the first marked record
                                  
xRefReferences;                  //   else, use the current record
         
xRefReferencesEdit;                                       // continue as long as there are some records to work on
         
xRefReferencesEdit xRefReferences_ds.getNext())         // get the potential next marked record
    
{
        
// do processing with xRefReferencesEdit
        
...
    }

Старый 24.03.2005, 10:03   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Здесь перевод того раздела BP: http://forum.mazzy.ru/index.php?showtopic=488
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 24.03.2005, 10:16   #6  
sassas
Гость
 
n/a
выглядит красиво, но налицо лишний вызов функции
Старый 24.03.2005, 10:19   #7  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
Я сделал так, как писал sassas.
while обернул в транзакцию.
Внутри цикла select forupdate...
Если что-то выбралось, спрашиваю боксом: ДаНетОтмена.
Если Отмена, то откатываю транзакцию.

Возникает "Ошибка контроля транзаций (TTS)" при нажатии на любую кнопку.

Что не правильно делаю?
Старый 24.03.2005, 10:26   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
2 sassas
не лишний. твой вариант не будет работать, если надо обработать только текущую запись без её выделения.

2 bagyr
вызов диалога из транзакции - неудачная идея, так как юзер мог пойти покурить, уснуть или еще что-то, а запись заблокирована...
Старый 24.03.2005, 10:29   #9  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
Предполагается, что юзер в некоторых ситуациях должен мочь отменить те изменения, которые уже упели пройти внутри транзакции.
Старый 24.03.2005, 10:32   #10  
sassas
Гость
 
n/a
неправильно прерываете транзакцию. Пользуйтесь

throw error("cccccccc");
Старый 24.03.2005, 10:35   #11  
sassas
Гость
 
n/a
2 Wamr
будет работать не жужжа точно так же , как из BP. Или не будет. Код функционально идентичен.
Старый 24.03.2005, 10:36   #12  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Прерывать транзакции диалогом или формой НЕЛЬЗЯ!
Можно сделать диалог ДО транзакции уверен ли юзверь, в том что он хочет изменить.

2 sassas
ставлю 100 баксов, что не будет
Старый 24.03.2005, 11:09   #13  
sassas
Гость
 
n/a
Цитата:
Прерывать транзакции диалогом или формой НЕЛЬЗЯ!
Не BP конечно, но технически это возможно.

по поводу 100 баксов - не проверял, да я и о другом: коды функционально идентичны
Старый 24.03.2005, 11:18   #14  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Не идентичны.

PHP код:
for (xRefReferencesEdit xRefReferences_ds.getFirst(1) ?      // are there any marked records -
                                  
xRefReferences_ds.getFirst(1) :  //   if yes, get the first marked record
                                  
xRefReferences
читайте коментарии
если нет выделенных строк, то ваш getFirst() вернёт пустую запись
и while не отработает.
А должен, для записи на которой стоит курсор.
__________________
С уважением, Игорь Ласийчук.
Старый 24.03.2005, 11:21   #15  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
sassas и я как раз о том, что коды НЕидентичны, чем они отличаются я уже сказал.
Если проверить лень - можешь просто прислать деньги
Старый 24.03.2005, 11:42   #16  
sassas
Гость
 
n/a
да, что-то я просмотрел мимо ).

Хотя, отмажусь: нужны были именно выбранные строки (а не "или текущая"). Ы?
Старый 24.03.2005, 12:13   #17  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
Или текущая запись мне не нужна. Если ни одной записи не выбрано, кнопка будет выключена.
Не понял как использовать
Цитата:
throw error("cccccccc");
в моей ситуации. Можно с примером? Или с сылкой, где реализовано что-нибудь подобное?
Старый 24.03.2005, 12:30   #18  
sassas
Гость
 
n/a
ttsbegin;
while select forupdate salestable
{
if (box::yesNo("dd", DialogButton::No) == DialogButton::No)
{
throw error("www");
}
}

ttscommit;
Старый 24.03.2005, 12:32   #19  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Wamr прав. Никогда не делай остановок, и тем более - запросов действий пользователя внутри транзакции. Я юзаю рекордлисты, чекаю их, а потом по ним делаю разноску. Открытие формы может почлечь непарнось точек входа в транзакцию и выхода из неё. При throw error() откатываются ВСЕ проводки, сделанные внутри транзакции, так что это тебе не подойдет.

Да, для установки видимости кнопок транзакии не нужны

С Уважением,
Георгий
Старый 24.03.2005, 12:32   #20  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,252 / 980 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Изначально опубликовано bagyr
Можно с примером?
Один из базовых классов: \Classes\JournalCheckPost, сперва вызывается checkJournal(), а потом, в случае положительного результата, postJournal()
__________________
Isn't it nice when things just work?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
как вывести номер строки в гриде? funnut DAX: Программирование 21 01.10.2012 16:33
Открытие формы с деталями активной записи в гриде sweeper DAX: Программирование 4 19.09.2008 15:55
Отследить момент создания строки в гриде dreamer DAX: Программирование 2 20.06.2007 13:38
Как задать высоту строки в гриде в символах. Logger DAX: Программирование 8 11.08.2005 13:03
При создании строки в закупке статус строки становится "Отменено" AlexUnik DAX: Функционал 4 27.09.2004 16:05
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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