Показать сообщение отдельно
Старый 20.02.2013, 10:56   #19  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
То есть мне нужно показ\скрытие полей вставить в метод modified поля датасоурса для отображения его? Попробую, спасибо большое!
не совсем так.
1. создайте метод visibleFields, в корне формы (там где метод classDeclaration). в этом методе пропишите необходимый алгоритм отображения и столбцов датасорсов и любых других контролов формы. в будующем везде вы будете использовать этот метод, когда будет необходимо изменить видимость (а не писать одно и тоже тыщу раз). В дальнейшем вызов этого метода выглядит как:
X++:
element.visibleFields();
Для управления видимости столбцов датасорса, можно на самом датасорсе создать метод visibleColums(), в нем прописать логику отображения столбцов. И в методе visibleFields() этот метод вызвать (так мы разделим управление видимостью столбцами и прочих контролов формы). Т.е. в итоге метод visibleFields буде выглядеть примерно так:
X++:
...
MyTable_ds.visibleColums();

AnyControl.visible(...);
AnyControl2.visible(...);
...
2. Если вам необходимо изменять видимости после измененеия значения в каком либо поле, тогда нужно будет вызвать метод определения видимости (который мы создали в первом пункте) из метода modified изменяемого поля. Например, если при изменении поля ItemId (Код номенклатуры) нам необходимо скрыть какое то поле, тогда в методе modified поля ItemId датасорса прописываем после super() код:
X++:
element.visibleFields();
а в методе visibleColum датасорса SalesQuotationLine надо прописать:
X++:
SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine,ItemId)).visible(AnyParameters);
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем