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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.06.2004, 19:13   #1  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Закупка. Количество введенное в таблицу PurchLine не отображается в накладной
Формирую закупку. При создании строк закупки КОЛИЧЕСТВО ввожу либо вручную, либо вызываю свой модуль, результатом которого является КОЛИЧЕСТВО, которое должно попасть в PurchLine.PurchQty. При ручном вводе введенное КОЛИЧЕСТВО корректно отображается и в стоках закупки и в форме "Разноска накладной" на закладке "Строки" (Обработка->Накладная). А при программном вводе КОЛИЧЕСТВО корректно отображается только в строках закупки, а в форме "Pазноска накладной", на закладке "Строки" - остается старое значение (если был ручной ввод) либо значение по умолчанию...
Вот код:
PHP код:
 void updatePurchLine_Quantity(){
  
PurchLine line;
  
InventTransId _Inventtransid =  _w2LController.getInventtransid();
  ;
  
select forupdate line where line.inventtransid == _Inventtransid;
  
line.PurchQty  100// ..к примеру ..
  
line.update();

Подскажите, пожалуйста, в чем моя ошибка.
Старый 18.06.2004, 10:25   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Вообще-то есть еще такие поля, как QtyOrdered, RemainPurchPhysical, RemainInventPhysical.
А смотреть надо метод modified() на field = PurchQty, датасоурса PurchLine формы PurchTable.
Есть там такая строчка:

PHP код:
 Purchline::ModifyPurchQty(purchLine,inventDim); 
Старый 18.06.2004, 11:41   #3  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Огромное спасибо! =)
Старый 18.06.2004, 11:57   #4  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
А могу ли после программного обновления КОЛИЧЕСТВА вызвать метод modified поля PurchLine.PurchQty ? И если да, то каким образом?
Старый 18.06.2004, 12:05   #5  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
где-то вот так :

purchLine_ds.object(fieldNum(PurchLine, PurchQty )).modified()
Старый 18.06.2004, 14:44   #6  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
А как передать ссылку на этот датасоурс другому классу?
В моем случае необходимо вызвать метод modified не из формы PurchTable, а из другого класса ..... , соответственно этот класс должен иметь ссылку на источник данных purchLine_ds формы PurchTable
Старый 18.06.2004, 15:36   #7  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
прочитал внимательно всю ветку....

а зачем собствено вызывать метод датасорса то?
Андре уже указал код который стоит вызвать, а больше в том методе то ничего нужного и нету...
Старый 18.06.2004, 16:04   #8  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Понял. Всем спасибо за ответы.
Старый 18.06.2004, 16:55   #9  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Цитата:
void modified() {
super();
Purchline::ModifyPurchQty(purchLine,inventDim);
element.checkCreditNoteLine();
purchLine_ds.reFresh();
}
Возник вопрос: purchLine и inventDim датасоурсы? Если да, то как мне передать их в качестве параметров, если Purchline::ModifyPurchQty(purchLine,inventDim);
необходимо вызвать в ДРУГОМ КЛАССЕ, а не в форме PurchTable ......
Старый 18.06.2004, 17:07   #10  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
Цитата:
Изначально опубликовано ATimTim

Возник вопрос: purchLine и inventDim датасоурсы?
нет, это таблицы.
Старый 18.06.2004, 17:53   #11  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
PHP код:
void updatePurchLine_Quantity(){
  
PurchLine line;
  
int weight;
  ;
  
weight 100 // к примеру ...
  
line =   _w2LController.getPurchLine();
  
line.PurchQty     =  weight;
  
Purchline::ModifyPurchQty(  _w2LController.getPurchLine(),
                                                    
_w2LController.getInventDim());
  
line.update();
//  line.QtyOrdered                       =  weight;
//  line.RemainPurchPhysical   =  weight;
//  line.RemainInventPhysical  =  weight;

Так тоже не работает ....
P.S. Работает то, что закомментировано....
Старый 18.06.2004, 17:59   #12  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Так надо смотреть что возвращает Ваш _w2LController и что вообще в нем происходит.
Старый 18.06.2004, 17:59   #13  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
может разумнее было бы запускать обработку на той таблице, которая была модифицирована? :

PHP]
....
line.PurchQty = weight;
Purchline::ModifyPurchQty( line,
line.inventDim());
line.update();
....
[/PHP]
Старый 18.06.2004, 18:18   #14  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
конструктор контроллера ....
PHP код:
void new(Args _args)  {
    
_formRun _args.caller();
   
_purchLine  =  _formRun.dataSource('PurchLine').cursor();
   
_inventDim  =  _formRun.dataSource('InventDim').cursor();
//   _purchLine - свойство класса, тип PurchLine
//   _inventDim- свойство класса, тип InventDim


методы доступа ..
PHP код:

///***********************************
PurchLine getPurchLine(){
  return 
_purchLine;
}
//**********************************
InventDim getInventDim (){
  return 
_inventDim;

Данные свойства класса инициируются однократно.
Старый 19.06.2004, 15:35   #15  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
Поля
Purchline.QtyOrdered,
Purchline.RemainPurchPhysical ,
Purchline.RemainInventPhysical ,
возможно модифицируются при вызове метода purchLine_DS\write()

а именно
PHP код:
        InventMovement::bufferSetRemainQty(purchLine); 

PS. почему бы не воспользоваться в явном виде методами формы, а не выдирать отдельные куски кода? Это позволило бы избежать подобных проблем. Тем более, что ссылка на FormRun и так уже имеется.
Старый 21.06.2004, 10:11   #16  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
может разумнее было бы запускать обработку на той таблице, которая была модифицирована?
Действительно. Совершенно правильно заметил твою ошибку.

Смотри:

PHP код:
line.PurchQty     =  weight;      
Purchline::ModifyPurchQty(  _w2LController.getPurchLine(),   _w2LController.getInventDim()); 
weight ты присваиваешь одной переменной, а в метод ModifyPurchQty ты передаешь совершенно другую переменную.

Чтобы было понятнее твой код можно переписать так:

PHP код:
line.PurchQty     =  weight;  
line2 =   _w2LController.getPurchLine(); 
Purchline::ModifyPurchQtyline2 ,  _w2LController.getInventDim()); 
Так стало очевиднее ?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почему не совпадает количество в счет фактуре и в накладной на возврат? Hans DAX: Функционал 1 28.04.2006 16:37
Создние PurchLine с ед. измерения типа 'Склад' NJD DAX: Программирование 0 30.06.2004 10:53
Создние PurchLine NJD DAX: Программирование 4 22.06.2004 11:14
Разноска операций Закупка, Заказ по счетам ГК по отборочной накладной. Как настроить? May DAX: Функционал 5 01.08.2003 11:13
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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