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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.03.2012, 10:48   #1  
Samuel is offline
Samuel
Участник
 
12 / 10 (1) +
Регистрация: 20.04.2010
Задача по форме, на которой располагается основная и подчиненная таблица (Ax 3.0)
Вообщем есть такая форма:



Для верхней части формы Data Source таблица Table1 (реально она ProdJournalRoute), для нижней Table2.
Table2 подчиненная таблица Table1, в Relations связь прописана.
Задача в следующем, пользователь в нижней части формы набирает вид брака и количество, а в верхней части таблицы в поле «Ошибка в количестве» автоматически проставляется сумма брака из нижних строк. Ввод вручную в верхнюю часть в поле «Ошибка в количестве» закрыт.
Задача была реализована следующим образом.
На таблице Table2 были перекрыты методы:
PHP код:
public void delete()
{
  
Table1    table1;
  ;
  
ttsbegin;
    
select forupdate table1
      where table1
.JournalId == this.JournalId
         
&& table1.LineNum   == this.LineNum;
    if (
table1)
    {
      
table1.QtyError table1.QtyError this.orig().QtyError;
      
table1.update();
    }
  
ttscommit;
  
super();

PHP код:
public void insert()
{
  
Table1    table1;
  ;
  
super();
  
ttsbegin;
    
select forupdate table1
      where table1
.JournalId == this.JournalId
         
&& table1.LineNum   == this.LineNum;
    
table1.QtyError table1.QtyError this.QtyError;
    
table1.update();
  
ttscommit;

PHP код:
public void update()
{
  
Table1    table1;
  ;
  
ttsbegin;
    
select forupdate table1
      where table1
.JournalId == this.JournalId
         
&& table1.LineNum   == this.LineNum;
    
table1.QtyError table1.QtyError
                                
this.orig().QtyError
                                
this.QtyError;
    
table1.update();
  
ttscommit;
  
super();

на датасорсе формы в Table2 перекрыты методы
PHP код:
public void initValue()
{
  ;
  
Table2.JournalId Table1.JournalId;
  
Table2.LineNum  Table1.LineNum;
  
super();

PHP код:
public void write()
{
   
super();

   
table1_ds.reread();
   
table1_ds.refresh();
   
element.redraw();

PHP код:
public void delete()
{
   
super();

   
table1_ds.reread();
   
table1_ds.refresh();
   
element.redraw();

Еще момент, в DeleteActions Table1 стоит Table2 (Cascade)
В целом все работает нормально, все суммируется и вычитается, и результат сразу виден на экране. Но! Иногда возникают ситуации когда к строкам верхней таблицы прилепляются данные которые пользователь никогда не заводил в подчиненной таблице. Точнее они иногда дублируются из других строк, и общее количество и виды брака. Бывает очень редко, но причина этого мне не понятна. Вообще такая конструкция допустима для такой задачи? или надо как-то по другому ее было реализовать? или что-то в коде у меня коряво написано (или не написано)?
__________________
Axapta 3.0, Build #1951.17, SP1
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axforum blogs: Квест: Подружим Dynamics Ax 2009 Sp1 RU7 c SharePoint Foundation 2010 Blog bot DAX Blogs 4 16.10.2017 17:50
Ax 3. Определить в какой колонке на форме стою Arahnid DAX: Программирование 14 03.07.2014 11:47
Проблема: Массовое развертывание клиентов Dynamics Ax 2009 Poleax DAX: Администрирование 8 23.08.2012 17:28
dynamics-ax: Interview with Apparel and Fashion Veteran, Joe Fink Blog bot DAX Blogs 1 07.01.2011 13:43
Dynamics AX: Managing Your Supply Chain Using Microsoft Dynamics AX 2009 - Book Review Blog bot DAX Blogs 0 31.03.2009 23:06

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

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

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