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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.03.2010, 19:02   #1  
andriy_s is offline
andriy_s
Участник
 
54 / 13 (1) ++
Регистрация: 28.08.2009
? Как изменить значения полей из кода?
Стоит задача:

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

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

Подскажите, плиз, как мне быть. Спасибо!
Старый 19.03.2010, 19:41   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от andriy_s Посмотреть сообщение
В форме 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.
Старый 19.03.2010, 19:58   #3  
andriy_s is offline
andriy_s
Участник
 
54 / 13 (1) ++
Регистрация: 28.08.2009
Так и хотел сделать - но так не помогает:
X++:
PurchTable_InventSiteId.text("Def");
Все равно в поле значение из датасорса.
Старый 19.03.2010, 20:11   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от andriy_s Посмотреть сообщение
Стоит задача:

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

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

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

andriy_s,

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

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

здесь всё-таки лучше, чем на insert(), ибо после создания записи, вендора можно поменять.
За это сообщение автора поблагодарили: andriy_s (1).
Старый 19.03.2010, 21:49   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Не правильно, потому что изменять нужно значение поля в таблице, а не значение датасорса...
в данном случае - датасорса.
потому что в момент PurchCreateOrder значение еще не записано в таблицу. И в таблице менять еще нечего.
__________________
полезное на axForum, github, vk, coub.
Старый 19.03.2010, 22:00   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Касательно PurchTable\SalesTable инициализация происходит в методах таблицы:

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

здесь всё-таки лучше, чем на insert(), ибо после создания записи, вендора можно поменять.
А вот с этим - согласен.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: andriy_s (1).
Старый 19.03.2010, 22:35   #9  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от mazzy Посмотреть сообщение
в данном случае - датасорса.
потому что в момент PurchCreateOrder значение еще не записано в таблицу. И в таблице менять еще нечего.
Не вводи ты людей в заблуждение, коль сам уже не программируешь сто лет...

Цитата:
Сообщение от mazzy Посмотреть сообщение
А вот с этим - согласен.
И определись, с чем именно ты согласен. В обоих приведенных цитатах речь идет о методах таблицы.
Старый 19.03.2010, 22:46   #10  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
А вообще - извини, я не учел "R"- подход

Нажмите на изображение для увеличения
Название: 19.03.png
Просмотров: 150
Размер:	45.4 Кб
ID:	5629
Старый 19.03.2010, 23:04   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Не вводи ты людей в заблуждение, коль сам уже не программируешь сто лет...
Злой ты.
Объясняю...

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

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

Цитата:
Сообщение от DSPIC Посмотреть сообщение
И определись, с чем именно ты согласен. В обоих приведенных цитатах речь идет о методах таблицы.
Имя датасорса позволяет обратиться не только к полям таблицы, которая привязана к датасорсу, но и к методам этой таблицы.

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

Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 214
Размер:	74.7 Кб
ID:	5630

я подозреваю, что ты немножко поторопился.
и вдруг решил, что я говорю об объекте с суффиксом _ds.
Нет, DSPIC, я не имел в виду объект с суффиксом _ds.
Во-первых, этот объект не позволяет изменить значение поля
Во-вторых, почитай про этот суффикс, раз уж программируешь меньше 100 лет
__________________
полезное на axForum, github, vk, coub.
Старый 19.03.2010, 23:21   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от DSPIC Посмотреть сообщение
А вообще - извини, я не учел "R"- подход
"R-подход" тут не при чем.

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

Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 261
Размер:	79.2 Кб
ID:	5632

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


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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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