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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.08.2005, 11:35   #1  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
? ошибка при обновлении smmQuotationLine
В форме "предложения" при изменении некоторых полей (датасорс smmQuotationTable) из метода modified вызывается обновление соответствующего поля в smmQuotationLine (методы типа SetLinePrognosisId и др.). В этих методах выполняется код вида:
ttsbegin;

while select forupdate smmQuotationLine where smmQuotationLine.quotationId == this.quotationId
{
smmQuotationLine.<поле> = this.<поле>;
smmQuotationLine.doUpdate();
}

ttscommit;

Ошибка возникает в случае, когда пользователь нажимает ESC и НЕ СОХРАНЯЕТ изменения в форме. При следующем открытии предложения выясняется, что значения полей записи в smmQuotationLine изменились (ясное дело, после .doUpdate()), а значения в smmQuotationTable остались старыми (произошёл "откат").

Вопрос: подскажите, как наиболее корректно обойти эту багу?

Мысль: фактическое обновление данных в smmQuotationLine осуществлять только при вызове метода update() таблицы smmQuotationTable. В этом случае возникают попутные вопросы: а) как непосредственно из метода smmQuotationTable.update() узнать, какие поля были изменены и б) как в этом случае из метода modifiedField(_fieldId) обновить данные в нижней части формы, где smmQuotationLine, без физического изменения значений в smmQuotationLine (т.е. как-то изменить form.datasource...?)
Старый 23.08.2005, 11:54   #2  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
Возникла вторая мысль - очевидно, не совсем корректная, но действенная - это точно - при изменении значения в форме запретить "откат" принудив пользователя ответить утвердительно на вопрос о сохранении изменений (отключить кнопку "Нет" или обойти вопрос?) либо вообще запретить в этой форме выход по ESC (механизм, описанный в одной из соседних веток).
Старый 23.08.2005, 13:03   #3  
Zan is offline
Zan
Участник
 
104 / 25 (1) +++
Регистрация: 22.07.2004
Адрес: I live in Moscow
А еще можно воспользоваться стандартнум функционалом подтверждений.
Сервис\ Параметры\ (Вкладка - Подтверждение)

В группу - при одновлении. Установите галочки в поля Главная Книга и Группы.
Для начала.

При попытке закрыть форму в которой были сделаны какие-либо изменения будет выдаваться диалоговое окно на предмет подтверждения сделанных модификаций
Старый 23.08.2005, 13:38   #4  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
To: Zan

Так ведь такое окно как раз выводится, проблема в том, что если пользователь отвечает "Нет", изменения в таблице smmQuotationTable не происходит, остаются старые значения, а в связанной таблице smmQuotationLine оказываются новые значения, т.к. doUpdate() происходит задолго до того, как пользователь жмёт ESC (см.первый пост).
Старый 23.08.2005, 13:41   #5  
Zan is offline
Zan
Участник
 
104 / 25 (1) +++
Регистрация: 22.07.2004
Адрес: I live in Moscow
:)
Ммда.
Ну, тогда только доработка напильником
Старый 24.08.2005, 11:13   #6  
Atani is offline
Atani
Участник
 
77 / 15 (1) ++
Регистрация: 25.07.2003
Адрес: г. Королёв М.О.
Можно в течение этой операции делать update и на головной таблице. Тогда целостность изменений будет сохранена.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при обновлении моделей petergunn DAX: Программирование 1 08.12.2011 14:14
Ошибка в формате числа. 36AC DAX: Программирование 7 19.10.2006 10:04
Ошибка: "Ошибка в суммы в валюте XXX. Необходимо округлить до '0.00'. Std DAX: Функционал 3 18.07.2006 11:22
Ошибка при обновлении перекресных ссылок msav DAX: Администрирование 3 02.04.2004 13:49
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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