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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.02.2011, 08:53   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Cтранно что этот код вообще работает. Вы же НЕ блокируете курсор для обновления. Попробуйте перед изменением курсора перевыбрать его.
А ещё для того чтобы изменения отображались на форме нужно обновить(refresh) источник данных
X++:
for (purchReqTableLocal = fds.getFirst(true) ? fds.getFirst(true) : fds.cursor(); purchReqTableLocal; purchReqTableLocal = fds.getNext())
{
    ttsbegin;
    purchReqTableLocal.selectForUpdate(true);
    purchReqTableLocal.reread()
    purchReqTableLocal.Archives = !purchReqTableLocal.Archives;
    purchReqTableLocal.doUpdate();
    ttscommit;
    fds.reread();
    fds.refresh();
}
Цитата:
Сообщение от Geo Посмотреть сообщение
записи реально не изменяются (убедился через журнал базы данных)
А он (журнал баз данных) настроен на протоколирование изменений Archives таблицы PurchReqTable? Проверяйте лучше напрямую (обозревателем таблиц) в самой таблице PurchReqTable.

P.S.: Если вы работает не просто с табличным курсором, а с источником данных, то у вас также есть возможность использовать метод fds.write(), который сам управляет транзакциями и отображением изменений.
За это сообщение автора поблагодарили: Geo (1).
Старый 11.02.2011, 11:54   #2  
Geo is offline
Geo
Участник
Аватар для Geo
 
258 / 47 (2) +++
Регистрация: 04.04.2008
Огромное спасибо! Работает!

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Cтранно что этот код вообще работает.
И не говорите. Тыкаюсь, как слепой котенок...
Пора, наверное, уже отойти от попыток освоения АХ методом медитирования над непонятным кодом, и что-нибудь почитать.

Цитата:
А он (журнал баз данных) настроен на протоколирование изменений Archives таблицы PurchReqTable?
Да, настраивал, чтобы застраховаться от гипотетического изменения полей обратно при возвращении в форму.

...
Можно еще вопрос, вдогонку?
С Вашим кодом, после отработки, в форме обновляется только одна запись (текущая), а не все выделенные. Чтобы все обновились, надо куда-нибудь нажать, при этом сбрасывается выделение. Но если поставить в конце вызов info("1"), например - то сразу все обновляются, и без сброса выделения.

Как можно добиться этого без окошка инфолога? Я пробовал повесить *_ds.reread() и *_ds.refresh() на метод clicked() контрола - не помогло.
Старый 11.02.2011, 12:21   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Geo Посмотреть сообщение
после отработки, в форме обновляется только одна запись (текущая), а не все выделенные.
Кажется понял почему не работает обновление.
Методы _ds.reread() и _ds.refresh() в принципе обновляют только активную запись. Была попытка обновить каждую запись вызывая эти методы из цикла, но вот в чём дело: метод fds.getNext() хоть и возвращает курсор связанный со следующей записью, но активной её не делает.

Не уверен, но попробуйте вместо fds.refresh(); сделать
X++:
purchReqTableLocal.dataSource().reread()
purchReqTableLocal.dataSource().refresh()
Ещё есть метод refreshEx(), который обновляет не текущую позицию, а заданную в параметре. Вроде бы даже так должно работать
X++:
fds.refreshEx(purchReqTableLocal)
Странно, но аналога для reread - rereadEx() нет.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить указатель на отчёт когда пользователь выбрал Печать на принтер в просмотрщике, в форму SysPrintForm? rkorchagin DAX: Программирование 10 17.04.2008 11:59
Вывод в форме "Авансовый отчет" (EmplAdvTable_RU) полей из EmplTable Zepp DAX: Программирование 5 20.06.2007 15:44
Как в форме CustTrans через query отобрать записи у которых AmountCur != 0 ( когда в QueryBuildRange ставишь value(strFmt('!0')); - не работает!) rkorchagin DAX: Программирование 12 02.04.2007 17:58
Как из формы Form2 обновить записи на форме Form1? Hidden DAX: Функционал 15 24.05.2005 11:53
Уже существующий query подложить под форму или отчет? somebody DAX: База знаний и проекты 6 27.05.2003 15:13
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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