AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 19.03.2010, 19:02   #1  
andriy_s is offline
andriy_s
Участник
 
54 / 13 (1) ++
Join Date: 28.08.2009
? Как изменить значения полей из кода?
Стоит задача:

В форме PurchTable==>(New)==>PurchCreateOrder необходимо устанавливать для Site и Warehouse некоторые значения по умолчанию(например Def) если они пустые после введения вендора в Vendor Account.

Например, ввели Vendor Account = 'V000001'. Из вендора подтянулись значения Site и Warehouse. Припустим - они пустые. Значит, должны подтянутся Site = 'Def' и Warehouse = 'Def'.

Подскажите, плиз, как мне быть. Спасибо!
Old 19.03.2010, 19:41   #2  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by andriy_s View Post
В форме PurchTable==>(New)==>PurchCreateOrder необходимо устанавливать для Site и Warehouse некоторые значения по умолчанию(например Def) если они пустые после введения вендора в Vendor Account.

Например, ввели Vendor Account = 'V000001'. Из вендора подтянулись значения Site и Warehouse. Припустим - они пустые. Значит, должны подтянутся Site = 'Def' и Warehouse = 'Def'.

Подскажите, плиз, как мне быть. Спасибо!
добавьте ваш код в методе modified датасорса формы
PurchCreateOrder \ Data Sources \ PurchTable \ Fields \ OrderAccount \ Methods \ Modified
__________________
полезное на axForum, github, vk, coub.
Old 19.03.2010, 19:58   #3  
andriy_s is offline
andriy_s
Участник
 
54 / 13 (1) ++
Join Date: 28.08.2009
Так и хотел сделать - но так не помогает:
X++:
PurchTable_InventSiteId.text("Def");
Все равно в поле значение из датасорса.
Old 19.03.2010, 20:11   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Join Date: 11.04.2008
Quote:
Originally Posted by andriy_s View Post
Стоит задача:

В форме PurchTable==>(New)==>PurchCreateOrder необходимо устанавливать для Site и Warehouse некоторые значения по умолчанию(например Def) если они пустые после введения вендора в Vendor Account.

Например, ввели Vendor Account = 'V000001'. Из вендора подтянулись значения Site и Warehouse. Припустим - они пустые. Значит, должны подтянутся Site = 'Def' и Warehouse = 'Def'.

Подскажите, плиз, как мне быть. Спасибо!
Сделайте это в классе \Classes\PurchTableType\insert, или в наследнике PurchTableType, если нужно это делать для определенного типа заказа.
Old 19.03.2010, 20:30   #5  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by andriy_s View Post
Так и хотел сделать - но так не помогает:
X++:
PurchTable_InventSiteId.text("Def");
Все равно в поле значение из датасорса.
правильно, потому что надо изменять значение поля в датасорсе, а не значение контрола.
__________________
полезное на axForum, github, vk, coub.
Old 19.03.2010, 20:59   #6  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Join Date: 11.04.2008
Quote:
Originally Posted by mazzy View Post
правильно, потому что надо изменять значение поля в датасорсе, а не значение контрола.
Не правильно, потому что изменять нужно значение поля в таблице, а не значение датасорса...

andriy_s,

Касательно PurchTable\SalesTable инициализация происходит в методах таблицы:

\Data Dictionary\Tables\PurchTable\Methods\modifiedField
\Data Dictionary\Tables\PurchTable\Methods\transferOrderAccount

здесь всё-таки лучше, чем на insert(), ибо после создания записи, вендора можно поменять.
This post has been rated by: andriy_s (1).
Old 19.03.2010, 21:49   #7  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by DSPIC View Post
Не правильно, потому что изменять нужно значение поля в таблице, а не значение датасорса...
в данном случае - датасорса.
потому что в момент PurchCreateOrder значение еще не записано в таблицу. И в таблице менять еще нечего.
__________________
полезное на axForum, github, vk, coub.
Old 19.03.2010, 22:00   #8  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by DSPIC View Post
Касательно PurchTable\SalesTable инициализация происходит в методах таблицы:

\Data Dictionary\Tables\PurchTable\Methods\modifiedField
\Data Dictionary\Tables\PurchTable\Methods\transferOrderAccount

здесь всё-таки лучше, чем на insert(), ибо после создания записи, вендора можно поменять.
А вот с этим - согласен.
__________________
полезное на axForum, github, vk, coub.
This post has been rated by: andriy_s (1).
Old 19.03.2010, 22:35   #9  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Join Date: 11.04.2008
Quote:
Originally Posted by mazzy View Post
в данном случае - датасорса.
потому что в момент PurchCreateOrder значение еще не записано в таблицу. И в таблице менять еще нечего.
Не вводи ты людей в заблуждение, коль сам уже не программируешь сто лет...

Quote:
Originally Posted by mazzy View Post
А вот с этим - согласен.
И определись, с чем именно ты согласен. В обоих приведенных цитатах речь идет о методах таблицы.
Old 19.03.2010, 22:46   #10  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Join Date: 11.04.2008
А вообще - извини, я не учел "R"- подход

Click image for larger version

Name:	19.03.png
Views:	152
Size:	45.4 KB
ID:	5629
Old 19.03.2010, 23:04   #11  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by DSPIC View Post
Не вводи ты людей в заблуждение, коль сам уже не программируешь сто лет...
Злой ты.
Объясняю...

"изменять нужно значение поля в таблице"
нельзя изменять поле в таблице, поскольку табличную переменной бесполензно изменять и не записывать. А записывать в коде формы PurchCreateOrder нельзя, поскольку за запись отвечает сама форма при закрытии кнопкой Ok. Поэтому код вида в этой форме применять нельзя:
X++:
somemethod()
{
   PurchTable pt;

   pt.OrderAccount = "someValue";
   pt.insert();
}
можно только ВНУТРИ формы обратиться к полю текущей записи датасорса (которая еще не записана).
внутри формы название датасорса обычно совпадает с именем таблицы.
однако внутри формы обращаться надо именно по имени датасорса и менять поле датасорса, а не таблицы.

Quote:
Originally Posted by DSPIC View Post
И определись, с чем именно ты согласен. В обоих приведенных цитатах речь идет о методах таблицы.
Имя датасорса позволяет обратиться не только к полям таблицы, которая привязана к датасорсу, но и к методам этой таблицы.

Я с тобой согласен, что код надо разместить в методах таблицы.
Однако если код вызывается из датасорса формы, то менять он будет не поля таблицы, а поля датасорса.

Click image for larger version

Name:	1.PNG
Views:	219
Size:	74.7 KB
ID:	5630

я подозреваю, что ты немножко поторопился.
и вдруг решил, что я говорю об объекте с суффиксом _ds.
Нет, DSPIC, я не имел в виду объект с суффиксом _ds.
Во-первых, этот объект не позволяет изменить значение поля
Во-вторых, почитай про этот суффикс, раз уж программируешь меньше 100 лет
__________________
полезное на axForum, github, vk, coub.
Old 19.03.2010, 23:21   #12  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by DSPIC View Post
А вообще - извини, я не учел "R"- подход
"R-подход" тут не при чем.

Автор спрашивал про форму PurchCreateOrder, ты показываешь форму PurchTable.
У PurchCreateOrder есть масса особенностей. Первая - она работает не с записью таблицы (датасорс еще не записан, будет записан только после нажатия кнопки Ok).

Click image for larger version

Name:	1.PNG
Views:	263
Size:	79.2 KB
ID:	5632

повторюсь, что согласен с тобой и также считаю правильным писать код в modified таблицы.
но будем справедливы. R-подход тут ни причем.
__________________
полезное на axForum, github, vk, coub.
Old 19.03.2010, 23:37   #13  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Join Date: 11.04.2008
Спасибо, повеселил на сон грядущий


P.S. Извините за флуд, ушел из темы...
Tags
default, override, purchcreateorder

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Channel9: Peter Villadsen and Gustavo Plancarte: X++ to MSIL Blog bot DAX Blogs 30 24.08.2010 17:11
Изменение идентификаторов(id) полей Dron AKA andy DAX: База знаний и проекты 30 17.06.2009 10:11
где хранятся значения полей удаленных строк? chanchala DAX: Программирование 16 04.09.2008 10:45
Как получить значения полей (modifiedDate, modifiedTime, modifiedBy и др.) при работе с объектами AOT типа Map? LRA DAX: База знаний и проекты 15 02.04.2007 13:37
Как узнать значения суммовых полей в отчёте? bagyr DAX: Программирование 2 28.06.2005 12:45

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 11:25.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.