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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.08.2014, 16:15   #1  
JonAx is offline
JonAx
Участник
 
67 / 11 (1) +
Регистрация: 25.07.2014
Заполнения при изменении))
Добрый день!!)) Ребята не подскажете как написать метод чтобы поле ItemName заполнялось при изменении ItemId??

Или подскажите где мне можно посмотреть пример этого метода?
Старый 12.08.2014, 16:24   #2  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от JonAx Посмотреть сообщение
Добрый день!!)) Ребята не подскажете как написать метод чтобы поле ItemName заполнялось при изменении ItemId??

Или подскажите где мне можно посмотреть пример этого метода?
Имеется ввиду отображать ItemName при выборе кода номенклатуры? Тогда Вам нужен дисплей метод для отображения ItemName.

Один из примеров вот SalesLine.ItemName().
Старый 12.08.2014, 16:32   #3  
JonAx is offline
JonAx
Участник
 
67 / 11 (1) +
Регистрация: 25.07.2014
Цитата:
Сообщение от Cardagant Посмотреть сообщение
Имеется ввиду отображать ItemName при выборе кода номенклатуры? Тогда Вам нужен дисплей метод для отображения ItemName.

Один из примеров вот SalesLine.ItemName().
Я тоже так думал, но это обычное поле которое должно заполнятся автоматически при изменении
Старый 12.08.2014, 16:47   #4  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от JonAx Посмотреть сообщение
Я тоже так думал, но это обычное поле которое должно заполнятся автоматически при изменении
Обычно подобное делают с помощью дисплей-методов. А с чем связано создание отдельного поля? Хотят фильтровать по нему?
Старый 12.08.2014, 16:57   #5  
JonAx is offline
JonAx
Участник
 
67 / 11 (1) +
Регистрация: 25.07.2014
Цитата:
Сообщение от Cardagant Посмотреть сообщение
Обычно подобное делают с помощью дисплей-методов. А с чем связано создание отдельного поля? Хотят фильтровать по нему?
будет два поля, одно наименование номенклатуры, а второе краткое наименование, думаю будут фильтровать))
Старый 12.08.2014, 17:08   #6  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от JonAx Посмотреть сообщение
будет два поля, одно наименование номенклатуры, а второе краткое наименование, думаю будут фильтровать))
Лучше ещё раз уточнить цель именно создания полей в таблице, исходя из того, что писал в предыдущих сообщениях.

Но, если все уверены, что должны быть именно поля, можете посмотреть методы modifiedField на таблицах. Также подобное можно реализовать в методе modified для ItemId-field'а датасорса формы.

UPD: Если будет принято решение реализации на таблице, то учтите, что реакция на изменение значения в поле ItemId будет производиться для всех форм, использующих эту таблицу как источник данных.

Последний раз редактировалось Cardagant; 12.08.2014 в 17:19.
Старый 12.08.2014, 18:36   #7  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Если это только для одной формы, достаточно перекрыть метод modified на поле Itemid датасорса и в нём заполнять itemname согласно itemid с помощью
X++:
InventTable::find(this.itemid);
Старый 12.08.2014, 19:06   #8  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,486 / 408 (16) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Имейте в виду, что для формы с большим количеством строк любой дисплей-метод чреват тормозами
__________________
С уважением,
Вячеслав
Старый 12.08.2014, 23:08   #9  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от pitersky Посмотреть сообщение
Имейте в виду, что для формы с большим количеством строк любой дисплей-метод чреват тормозами
На мой взгляд лучше именно дисплей-методы, так как не нужно будет следить за синхронизацией имён в номенклатурнике и "внешних" таблицах.

А чтоб улучшить производительность, если потребуется, на мой взгляд, методы, возвращающие данные такого типа можно добавить в кеш.
Старый 13.08.2014, 10:08   #10  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от JonAx Посмотреть сообщение
будет два поля, одно наименование номенклатуры, а второе краткое наименование, думаю будут фильтровать))
Какая версия Аксапты?
В Ax2012 можно накладывать фильтр по display'ным полям.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: Cardagant (1).
Старый 13.08.2014, 13:43   #11  
twilight is offline
twilight
MCTS
MCBMSS
 
870 / 237 (9) ++++++
Регистрация: 17.10.2004
Адрес: Королёв
Цитата:
Сообщение от lev Посмотреть сообщение
В Ax2012 можно накладывать фильтр по display'ным полям.
Насколько эффективна (скорость фильтрации) фильтрация по этим полям по сравнению с обычными? Я ведь так понимаю, что индексов по этим полям нет и всегда идет сканирование полной таблицы с дополнительными вычислениями этого поля?
__________________
I could tell you, but then I would have to bill you.
Старый 13.08.2014, 13:56   #12  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от lev Посмотреть сообщение
Какая версия Аксапты?
В Ax2012 можно накладывать фильтр по display'ным полям.
С фильтрацией по полям курсора с OuterJoin точно не перепутали? Или может речь о вычислимых полях на вьюхах?
2012 R2 CU7
__________________
Кононов Пётр
Старый 14.08.2014, 07:52   #13  
JonAx is offline
JonAx
Участник
 
67 / 11 (1) +
Регистрация: 25.07.2014
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
С фильтрацией по полям курсора с OuterJoin точно не перепутали? Или может речь о вычислимых полях на вьюхах?
2012 R2 CU7
Получается эти два поля(ItemName и ItemId) должны работать как в InventTable поля ItemName и NameAlias
Старый 14.08.2014, 10:44   #14  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
С фильтрацией по полям курсора с OuterJoin точно не перепутали? Или может речь о вычислимых полях на вьюхах?
2012 R2 CU7
Да, вычисляемые поля на вьюхах.
Вьюхи можно добавлять на формы. В этоге имеем фильтрацию
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 14.08.2014, 14:11   #15  
JonAx is offline
JonAx
Участник
 
67 / 11 (1) +
Регистрация: 25.07.2014
Цитата:
Сообщение от lev Посмотреть сообщение
Да, вычисляемые поля на вьюхах.
Вьюхи можно добавлять на формы. В этоге имеем фильтрацию
Подскажите как это можно сделать?
Старый 14.08.2014, 14:23   #16  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от lev Посмотреть сообщение
Да, вычисляемые поля на вьюхах.
Вьюхи можно добавлять на формы. В этоге имеем фильтрацию
Это да, но при чем здесь display'ные поля тогда? не надо вводить людей в заблуждение
Цитата:
Сообщение от lev Посмотреть сообщение
Какая версия Аксапты?
В Ax2012 можно накладывать фильтр по display'ным полям.
фильтрации по display'ным полям в Ах как не было, так и нет.
__________________
Кононов Пётр
За это сообщение автора поблагодарили: lev (2).
Старый 14.08.2014, 18:05   #17  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
Это да, но при чем здесь display'ные поля тогда? не надо вводить людей в заблуждение
Да, немного ввел в заблуждение, сорри. Это не совсем display методы и тем более не вычисляемые поля. Это просто использование view на формах.
Т.е. есть view в которой две таблицы. В итоге фильтроваться можно по полям обеих таблиц.
Проект с простым примером прилагаю (проект для AX2012).
Вложения
Тип файла: xpo SharedProject_FilterDisplayFields.xpo (8.4 Кб, 374 просмотров)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 14.08.2014, 19:34   #18  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от JonAx Посмотреть сообщение
Добрый день!!)) Ребята не подскажете как написать метод чтобы поле ItemName заполнялось при изменении ItemId??

Или подскажите где мне можно посмотреть пример этого метода?
Что то тема ушла от истоков

Итого, если не вникать что, зачем и почему, а просто ответить на Ваш вопрос, тогда:
1. Перекройте на вашей таблице метод modifiedField();
2. В нем после super() напишите код:
X++:
switch (fieldExt2Id(_fieldId))
{
        case fieldnum(MyTable, ItemId):
            this.ItemName   = InventTable::find(this.ItemId).NameAlias;
            break;
}
все.
теперь поле ItemName изменяется при изменении поля itemId.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 14.08.2014, 22:36   #19  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от lev Посмотреть сообщение
Что то тема ушла от истоков

Итого, если не вникать что, зачем и почему, а просто ответить на Ваш вопрос, тогда:
1. Перекройте на вашей таблице метод modifiedField();
2. В нем после super() напишите код:
X++:
switch (fieldExt2Id(_fieldId))
{
        case fieldnum(MyTable, ItemId):
            this.ItemName   = InventTable::find(this.ItemId).NameAlias;
            break;
}
все.
теперь поле ItemName изменяется при изменении поля itemId.
А если нужно изменять лишь на одной форме, а не на каждой, где есть itemid? Тогда Ваш вариант немного не подходит.
Старый 15.08.2014, 08:44   #20  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
А если нужно изменять лишь на одной форме, а не на каждой, где есть itemid? Тогда Ваш вариант немного не подходит.
Нет. Так не пойдет.
Если у нас в таблице есть поле, зависимое от другого поля, то его надо заполнять из любых форм! А то получится на форме один таблицу заполняю есть, например, наименование номенклатуры, а на другой форме нет. Это бред. Никакой целостности данных.

Более того, писать код на формах это BadPractice (только в крайних случаях).
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обнуление Цены при изменении Суммы в строке Заказа на покупку Arseniy_F DAX: Функционал 8 05.04.2012 16:38
Оповещение внешней системы при изменении заказа IKA DAX: Программирование 5 19.01.2011 12:19
как мне отслеживать изменении в таблице Daido DAX: Программирование 33 06.02.2008 17:13
Добавление строк при изменении значения контрола 36AC DAX: Программирование 3 11.08.2005 12:56
При изменении количества в заявке ошибка создания партии. ddadream DAX: Функционал 0 17.10.2003 15:31

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:04.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.