|
20.02.2013, 11:06 | #1 |
Ищущий знания...
|
Цитата:
скрывается один столбец вместо двух?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 11:11 | #2 |
Участник
|
Нет, отрабатывает одно условие из двух...
Сделал сейчас метод на форме 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 |
Ищущий знания...
|
Цитата:
Сообщение от 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 |
Участник
|
Отрабатывает только одно условие, например: Стоит статус строки продажи 09(Выпадающий список), для этого статуса снизу открывается доп.поле "код", если сменить статус на 14, должно открытся другое поле "id", но оно не открывается. А если вернутся на 09 - нужное поле, относящяеся к 09 появляется. И только если закрыть форму со статусом 14 и открыть снова - нужное поле id оторбазится.
А нужно, чтобы без закрыть\открыть форму: выбрал 09 - одно поле отобразилось, выбрал 14 - другое поле отобразилось, вот |
|
20.02.2013, 11:27 | #5 |
Ищущий знания...
|
поле - это столбец в таблице, я правильно понимаю?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 11:32 | #6 |
Участник
|
Да, вы абсолютно правильно понимаете, это столбец в таблице.
Вот код 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 } То есть если не писать enum NoYes:Yes, он по умолчанию будет равен Yes? Не знал, учту!) |
|
20.02.2013, 11:37 | #7 |
Ищущий знания...
|
Цитата:
Сообщение от 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 |
Участник
|
Цитата:
Нет, это я не до конца скопировал, поле одно StatusReasonCode_ZTR и там и там, и показывается и скрывается. |
|
20.02.2013, 11:42 | #9 |
Ищущий знания...
|
Цитата:
вот это лишние, в методе visibleFields (SalesQuotationLine_StatusReasonCode - это же тоже столбец, да??) X++: if(smm.PhaseId==SalesQuotationLine.Status && smm.IsAskCode==NoYes::Yes) { SalesQuotationLine_StatusReasonCode.visible(true); }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 11:44 | #10 |
Участник
|
Цитата:
Сообщение от lev
у вас в методе visibleCollums все уже написано.
вот это лишние, в методе visibleFields (SalesQuotationLine_StatusReasonCode - это же тоже столбец, да??) X++: if(smm.PhaseId==SalesQuotationLine.Status && smm.IsAskCode==NoYes::Yes) { SalesQuotationLine_StatusReasonCode.visible(true); } Нет, SalesQuotationLine_StatusReasonCode - это контрол формы, а поле датасоурса назыается просто StatusReasonCode. Вы ведь сказали, что в visibleFields скрывать, показывать контролы, а в visibleCollums - поля датасоурса, или я вас неправильно понял? |
|
20.02.2013, 12:46 | #11 |
Участник
|
Работает почти так как надо.
Если при открытии статус стоит который по условию - поле должно отображаться при открытии формы, но оно отображается только если изменить статус на любой, а потом на нужный... Что ж такое-то( |
|
20.02.2013, 12:47 | #12 |
Ищущий знания...
|
перекройте в корневых методах формы метод init() и в нем после супера надо вызвать метод visibleFields().
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 12:50 | #13 |
Участник
|
Цитата:
X++: element.visibleFields(); X++: SalesQuotationLine_ds.visibleCollums(); |
|
20.02.2013, 12:48 | #14 |
Участник
|
Цитата:
метод init() оставьте в покое.
__________________
// no comments |
|
20.02.2013, 12:52 | #15 |
Участник
|
|
|
20.02.2013, 13:00 | #16 |
Ищущий знания...
|
Цитата:
этот метод предназначен не только для датасорсов. инит формы и существует для того, что бы выполнить первоначальные настройки формы из кода при открытии. З.Ы. user_ax выкладывайте уже .xpo с формой.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 13:04 | #17 |
Участник
|
Вставил и в инит - всё равно.
Вот форма. В xpo не получилось, ограничение не позволяет загрузить. Последний раз редактировалось user_ax; 20.02.2013 в 13:42. |
|
20.02.2013, 13:24 | #18 |
Ищущий знания...
|
Цитата:
метод называется setFieldAccessHeader
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 13:21 | #19 |
Участник
|
Я, кажется понял, изначально, при запуске формы, в моём условии пусто, может быть именно поэтому не отображается.
|
|
20.02.2013, 13:40 | #20 |
Участник
|
Добавил вызов в метод датасоурса write, как в примере - по-прежнему не отображается при запуске формы...(
|
|