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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.02.2010, 09:04   #1  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
И стоило городить всё это ради такой ерунды? Ну да ладно, как говорится, опыт - сын ошибок трудных....................
.......................................
Обратите внимание. Метод InvetJournalTable.update() будет вызываться как при штатном сохранении записи CTRL+S, так и при аварийном выходе при нажатии ESC. Более того, если по каким-нибудь причинам у пользователя появится возможность изменить дату журнала с како-либо другой формы, этот код также отработает. Т.е. синхранизация данных обеспечивается на уровне тригеров таблиц и не зависит от пользовательского интерфейса
Ну я так и знал. Поехали тогда немного в детали. Это нужно не для всех журналов, а только Проводки,Приб\Убытки\Перенос+еще 2.(т.е.хорошо бы в этом методе иметь установленный параметр с формы, чтобы не нести этот код в метод таблицы.) При update в Trans нужно отработать еще ряд методов по другим таблицам(посмотрите update Transdate при изменении даты в Grid) Кроме того, update на Trans в нашей реализации идет с параметром(но он не selectforupdate). + прямой update этой даты в Table не находит своего своего отражения на форме (возможно нужно где-то (?) вставить research() на DS формы)+ нужен еще и диалог по изменению даты(где его затеять, тогда?), вдруг это кто то сел на клавиатуру).Но по любому, спасибо за совет, попробую и его тоже, если получится.
Старый 04.02.2010, 09:23   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от pwp Посмотреть сообщение
Ну я так и знал. Поехали тогда немного в детали. Это нужно не для всех журналов, а только Проводки,Приб\Убытки\Перенос+еще 2.(т.е.хорошо бы в этом методе иметь установленный параметр с формы, чтобы не нести этот код в метод таблицы.) При update в Trans нужно отработать еще ряд методов по другим таблицам(посмотрите update Transdate при изменении даты в Grid) Кроме того, update на Trans в нашей реализации идет с параметром(но он не selectforupdate). + прямой update этой даты в Table не находит своего своего отражения на форме (возможно нужно где-то (?) вставить research() на DS формы)+ нужен еще и диалог по изменению даты(где его затеять, тогда?), вдруг это кто то сел на клавиатуру).Но по любому, спасибо за совет, попробую и его тоже, если получится.
Если есть много нюансов, которые не хочется городить в методе update(), тогда закройте дату в шапке журнала и в строках на редактирование. а в шапке журнала сделайте функцию (class) изменения даты. И в этой функции выполняйте все необходимые хитрости. а для обновления информации на форме, на кнопке, которая будет вызывать функцию, перекройте метод cliked() и после super() сделайте Reread и Refreash на датасорсе.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: pwp (1).
Старый 04.02.2010, 09:34   #3  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
Цитата:
Сообщение от lev Посмотреть сообщение
Если есть много нюансов, которые не хочется городить в методе update(), ................... на датасорсе.
Да у меня сейчас вроде так и сделано, только вместо класса я сделал метод в классе JournalFormTable. Но стоит требование конса делать это не по кнопке, а по редактированию даты(я этого не поддерживаю) отсюда проблема с ESC (см.выше)
Старый 04.02.2010, 09:50   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от pwp Посмотреть сообщение
Да у меня сейчас вроде так и сделано...
Возможно действительно не стоит так серьёзно заморачиваться с синхронизацией дат в шапке и строках. А просто учесть возможность появления разсогласованных данных. И Добавить соответствующую проверку перед разноской, что мол даты в строках и шапке не совпадают. Поправить? Да. Нет.
Старый 04.02.2010, 10:14   #5  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Он сказал: "Поехали!" и взмахнул рукой..
Тащить ничего никуда не нужно. Этот параметр доступен через this.JournalType.
Это да, но перебор придется вставить, что не очень смотрится в update на Table...
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Отрабатывайте. Перекрывайте аналогичным образом InventJournalTrans.update() и отрабатывайте.
В порядке ликбеза, это уже на DS формы ?
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
И да, есть ещё такие классы как InventJournalData и InventJournalTransData. Вам никто не мешает использовать и их.
Только в методе update на таблице Table как к ним подобраться ?
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Не понял вас. Нужен диалог который сможет влиять на что? изменение даты в InventJournalTable? Ну так это совершенно другая задача. Она никак не связана с последствиями смены этой даты. Вызывайте его например в методе validateWrite источника данных InentJournalTable.
Ну как же так, смена даты клиентом первооснова и причина всех дальнейших прыжков. Только нужно обеспечить защиту от случайного изменения=подтверждение.
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Возможно действительно не стоит так серьёзно заморачиваться с синхронизацией дат в шапке и строках. А просто учесть возможность появления разсогласованных данных. И Добавить соответствующую проверку перед разноской, что мол даты в строках и шапке не совпадают. Поправить? Да. Нет.
Не совсем сие красиво, IMHO. Мало того, что при входе в строки имеет разность дат+разносить возможно будет другой, кто не в курсе всего...Да и отложить это на разноску ну ничем не отличается от первичной проблемы. Спасибо за анализ всей проблемы.
Старый 04.02.2010, 10:44   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от pwp Посмотреть сообщение
Это да, но перебор придется вставить, что не очень смотрится в update на Table...
Рефакторингом займётесь когда всё заработает.
Цитата:
Сообщение от pwp Посмотреть сообщение
В порядке ликбеза, это уже на DS формы ?
Неа.Идя в том чтобы по максимому изолироваться от интерфейса пользователя. В данном случае таблицы содержат всю необходимую для работы информацию. Так зачем же логику переносить в методы источника данных какой-то конкретной формы.

Цитата:
Сообщение от pwp Посмотреть сообщение
Только в методе update на таблице Table как к ним подобраться ?
X++:
InventJournalData = JournalTableData::construct(this);
InventJournalTransData = new JournalTransData(InventJournalTrans, InventJournalData);
Цитата:
Сообщение от pwp Посмотреть сообщение
Ну как же так, смена даты клиентом первооснова и причина всех дальнейших прыжков. Только нужно обеспечить защиту от случайного изменения=подтверждение.
Я имел в виду, то что задача подтверждения изменения может быть обособлена. Например в следующей формулировке. При попытке изменить дату получить у пользователя подтверждение. Всё точка. При решении этой задачи не стоит задумываться, а для чего нужно это подтверждение.
Старый 04.02.2010, 09:44   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Он сказал: "Поехали!" и взмахнул рукой..

Цитата:
Сообщение от pwp Посмотреть сообщение
Это нужно не для всех журналов, а только Проводки,Приб\Убытки\Перенос+еще 2.(т.е.хорошо бы в этом методе иметь установленный параметр с формы, чтобы не нести этот код в метод таблицы.)
Тащить ничего никуда не нужно. Этот параметр доступен через this.JournalType.

Цитата:
Сообщение от pwp Посмотреть сообщение
При update в Trans нужно отработать еще ряд методов по другим таблицам
Отрабатывайте. Перекрывайте аналогичным образом InventJournalTrans.update() и отрабатывайте.

Цитата:
Сообщение от pwp Посмотреть сообщение
посмотрите update Transdate при изменении даты в Grid
Да, возможно с update_recordset я погоричичлся. Можно добавить как минимум
X++:
while select InventJournalTrans where InventJournalTrans.JournalId == this.JournalId inventJournalTrans.inventMovement().journalSetTransDate();
И да, есть ещё такие классы как InventJournalData и InventJournalTransData. Вам никто не мешает использовать и их.

Цитата:
Сообщение от pwp Посмотреть сообщение
Кроме того, update на Trans в нашей реализации идет с параметром(но он не selectforupdate)
Не совсем вас понимаю. Возможно прийдётся полностью отказаться от update_recordset и использовать явный вызов update с дополнительным параметром.[/QUOTE]

Цитата:
Сообщение от pwp Посмотреть сообщение
прямой update этой даты в Table не находит своего своего отражения на форме (возможно нужно где-то (?) вставить research() на DS формы)
Возможно. Это нормально.

Цитата:
Сообщение от pwp Посмотреть сообщение
нужен еще и диалог по изменению даты(где его затеять, тогда?), вдруг это кто то сел на клавиатуру.
Не понял вас. Нужен диалог который сможет влиять на что? изменение даты в InventJournalTable? Ну так это совершенно другая задача. Она никак не связана с последствиями смены этой даты. Вызывайте его например в методе validateWrite источника данных InentJournalTable.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Итератор с поддержкой методов обратного вызова для обработки контролов на форме gl00mie DAX: Программирование 18 06.08.2013 22:16
Как не выводить заголовки в форме, если нет строк? DreamCreator DAX: Программирование 9 29.05.2008 15:10
Отличия в строках ReqPO, почему одна строка появляется в форме а другая нет (Master Planning, Planned Orders) rkorchagin DAX: Программирование 8 21.02.2007 16:27
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27
Ограничение записей на форме Mystery DAX: Программирование 2 26.02.2004 11:28
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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