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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.02.2013, 11:06   #1  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
...
Пока что вставил свои условия в метод modified того контрола, в котором выбирается данное услвоие - отрабатывает лишь одно из двух...
не понял, что "одно из двух"?
скрывается один столбец вместо двух?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.02.2013, 11:11   #2  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от lev Посмотреть сообщение
не понял, что "одно из двух"?
скрывается один столбец вместо двух?
Нет, отрабатывает одно условие из двух...

Сделал сейчас метод на форме void visibleFields() и на датасоурсе void visibleCollums()

В void visibleCollums() прописал мои условия, а в void visibleFields() пишу

X++:
 SalesQuotationLine_ds.visibleCollums();
      if(smm.PhaseId==SalesQuotationLine.Status
        && smm.IsAskCode==NoYes::Yes)
    {
  SalesQuotationLine_StatusReasonCode.visible(true);
    }
Верно?

Последний раз редактировалось user_ax; 20.02.2013 в 11:16.
Старый 20.02.2013, 11:26   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
Нет, отрабатывает одно условие из двух...

Сделал сейчас метод на форме void visibleFields() и на датасоурсе void visibleCollums()

В void visibleCollums() прописал мои условия, а в void visibleFields() пишу

X++:
 SalesQuotationLine_ds.visibleCollums();
      if(smm.PhaseId==SalesQuotationLine.Status
        && smm.IsAskCode==NoYes::Yes)
    {
  SalesQuotationLine_StatusReasonCode.visible(true);
    }
Верно?
почти
покажите, что написано в методе visibleCollums (там так же должно быть управление видимостью).

и вместо:
X++:
 SalesQuotationLine_ds.visibleCollums();
      if(smm.PhaseId==SalesQuotationLine.Status
        && smm.IsAskCode==NoYes::Yes)
    {
  SalesQuotationLine_StatusReasonCode.visible(true);
    }
я бы написал:
X++:
SalesQuotationLine_StatusReasonCode.visible(smm.PhaseId==SalesQuotationLine.Status && smm.IsAskCode);
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.02.2013, 11:24   #4  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Отрабатывает только одно условие, например: Стоит статус строки продажи 09(Выпадающий список), для этого статуса снизу открывается доп.поле "код", если сменить статус на 14, должно открытся другое поле "id", но оно не открывается. А если вернутся на 09 - нужное поле, относящяеся к 09 появляется. И только если закрыть форму со статусом 14 и открыть снова - нужное поле id оторбазится.

А нужно, чтобы без закрыть\открыть форму: выбрал 09 - одно поле отобразилось, выбрал 14 - другое поле отобразилось, вот
Старый 20.02.2013, 11:27   #5  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
А нужно, чтобы без закрыть\открыть форму: выбрал 09 - одно поле отобразилось, выбрал 14 - другое поле отобразилось, вот
поле - это столбец в таблице, я правильно понимаю?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.02.2013, 11:32   #6  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Да, вы абсолютно правильно понимаете, это столбец в таблице.

Вот код visibleCollums

X++:
void visibleCollums()
{
 //->18.02.2013 Если статус не 11  - поле код причины скрывать
    if(smm.PhaseId==SalesQuotationLine.Status
        && smm.IsAskCode==NoYes::Yes)
    {
        SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine,StatusReasonCode)).visible(true);
    //    SalesQuotationLine_ds.write();
     //   SalesQuotationLine_ds.refresh();
    }
    else
    {
       SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine,StatusReasonCode_ZTR)).visible(false);

    }

    //Если стоит галка "запрашивать основное предложение" -показывать основное предложение)
    if(smm.PhaseId == SalesQuotationLine.Status
        && smm.IsAskMainQuotationId == NoYes::Yes)
    {
       SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine,QuotationId)).visible(true);
     //  SalesQuotationLine_ds.write();
     //  SalesQuotationLine_ds.refresh();

    }
   else
   {
      SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine, QuotationId)).visible(false);
   }

   //<- 18.02.2013
}


Цитата:
Сообщение от lev Посмотреть сообщение
я бы написал:
X++:
SalesQuotationLine_StatusReasonCode.visible(smm.PhaseId==SalesQuotationLine.Status && smm.IsAskCode);
То есть если не писать enum NoYes:Yes, он по умолчанию будет равен Yes? Не знал, учту!)
Старый 20.02.2013, 11:37   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
X++:
void visibleCollums()
{
 //->18.02.2013 Если статус не 11  - поле код причины скрывать
    if(smm.PhaseId==SalesQuotationLine.Status
        && smm.IsAskCode==NoYes::Yes)
    {
        SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine,[B]StatusReasonCode[/B])).visible(true);
    //    SalesQuotationLine_ds.write();
     //   SalesQuotationLine_ds.refresh();
    }
    else
    {
       SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine,[B]StatusReasonCode_ZTR[/B])).visible(false);

    }

   ...
   }

   //<- 18.02.2013
}
я выделил жирным разные поля. Вы делаете видимым одно поле, а потом не видимым, другое, так и должно быть?

P.S. что то в теге не выделились слова жирным
в общем скрываете StatusReasonCode_ZTR, а показывает StatusReasonCode.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.02.2013, 11:39   #8  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от lev Посмотреть сообщение
я выделил жирным разные поля. Вы делаете видимым одно поле, а потом не видимым, другое, так и должно быть?

P.S. что то в теге не выделились слова жирным
в общем скрываете StatusReasonCode_ZTR, а показывает StatusReasonCode.

Нет, это я не до конца скопировал, поле одно StatusReasonCode_ZTR и там и там, и показывается и скрывается.
Старый 20.02.2013, 11:42   #9  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
Нет, это я не до конца скопировал, поле одно StatusReasonCode_ZTR и там и там, и показывается и скрывается.
у вас в методе visibleCollums все уже написано.
вот это лишние, в методе visibleFields (SalesQuotationLine_StatusReasonCode - это же тоже столбец, да??)
X++:
if(smm.PhaseId==SalesQuotationLine.Status
        && smm.IsAskCode==NoYes::Yes)
    {
  SalesQuotationLine_StatusReasonCode.visible(true);
    }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.02.2013, 11:44   #10  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от lev Посмотреть сообщение
у вас в методе visibleCollums все уже написано.
вот это лишние, в методе visibleFields (SalesQuotationLine_StatusReasonCode - это же тоже столбец, да??)
X++:
if(smm.PhaseId==SalesQuotationLine.Status
        && smm.IsAskCode==NoYes::Yes)
    {
  SalesQuotationLine_StatusReasonCode.visible(true);
    }
То есть в visibleFields только указывать какой контрол скрыть/показать? или поля датасоурса?


Нет, SalesQuotationLine_StatusReasonCode - это контрол формы, а поле датасоурса назыается просто StatusReasonCode. Вы ведь сказали, что в visibleFields скрывать, показывать контролы, а в visibleCollums - поля датасоурса, или я вас неправильно понял?
Старый 20.02.2013, 12:46   #11  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Работает почти так как надо.
Если при открытии статус стоит который по условию - поле должно отображаться при открытии формы, но оно отображается только если изменить статус на любой, а потом на нужный...

Что ж такое-то(
Старый 20.02.2013, 12:47   #12  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
Работает почти так как надо.
Если при открытии статус стоит который по условию - поле должно отображаться при открытии формы, но оно отображается только если изменить статус на любой, а потом на нужный...

Что ж такое-то(
перекройте в корневых методах формы метод init() и в нем после супера надо вызвать метод visibleFields().
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.02.2013, 12:50   #13  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от lev Посмотреть сообщение
перекройте в корневых методах формы метод init() и в нем после супера надо вызвать метод visibleFields().
Он уже был перекрыт, после супера вызываю

X++:
  element.visibleFields();
А в visibleFields

X++:
 SalesQuotationLine_ds.visibleCollums();
Всё равно при открытии формы не хочет показывать нужное поле.
Старый 20.02.2013, 12:48   #14  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от user_ax Посмотреть сообщение
Работает почти так как надо.
Если при открытии статус стоит который по условию - поле должно отображаться при открытии формы, но оно отображается только если изменить статус на любой, а потом на нужный...

Что ж такое-то(
в методе active() также вызывайте свой новый метод visibleFields()
метод init() оставьте в покое.
__________________
// no comments
Старый 20.02.2013, 12:52   #15  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от dech Посмотреть сообщение
в методе active() также вызывайте свой новый метод visibleFields()
метод init() оставьте в покое.
Из инита убрал, в актив вставил - всё равно не работает.
Старый 20.02.2013, 13:00   #16  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от dech Посмотреть сообщение
в методе active() также вызывайте свой новый метод visibleFields()
метод init() оставьте в покое.
не надо ничего убирать!
этот метод предназначен не только для датасорсов.
инит формы и существует для того, что бы выполнить первоначальные настройки формы из кода при открытии.

З.Ы. user_ax выкладывайте уже .xpo с формой.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.02.2013, 13:04   #17  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Вставил и в инит - всё равно.

Вот форма.

В xpo не получилось, ограничение не позволяет загрузить.

Последний раз редактировалось user_ax; 20.02.2013 в 13:42.
Старый 20.02.2013, 13:24   #18  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
Вставил и в инит - всё равно.

Вот форма.

В xpo не получилось, ограничение не позволяет загрузить.
да у Вас на форме куча примеров как что сделать, даже уже метод реализован под управление колонками (правда там allowEdit).
метод называется setFieldAccessHeader
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.02.2013, 13:21   #19  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Я, кажется понял, изначально, при запуске формы, в моём условии пусто, может быть именно поэтому не отображается.
Старый 20.02.2013, 13:40   #20  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Добавил вызов в метод датасоурса write, как в примере - по-прежнему не отображается при запуске формы...(
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
условие с датой в Query romanja DAX: Программирование 5 07.04.2011 10:25
Условие по агрегатам в запросе cherv DAX: Программирование 5 14.08.2006 14:55
Глючит условие в запросе Sada DAX: Программирование 5 28.04.2006 05:19
Условие на поле NotEmpty Logger DAX: Программирование 3 12.05.2005 12:32
Как в range на одно и тоже контейнерное поле поставить условие: "исключ." && like Pustik DAX: Программирование 15 03.07.2004 11:54

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

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

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