20.02.2013, 11:06 | #21 |
Ищущий знания...
|
Цитата:
скрывается один столбец вместо двух?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 11:11 | #22 |
Участник
|
Нет, отрабатывает одно условие из двух...
Сделал сейчас метод на форме 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:24 | #23 |
Участник
|
Отрабатывает только одно условие, например: Стоит статус строки продажи 09(Выпадающий список), для этого статуса снизу открывается доп.поле "код", если сменить статус на 14, должно открытся другое поле "id", но оно не открывается. А если вернутся на 09 - нужное поле, относящяеся к 09 появляется. И только если закрыть форму со статусом 14 и открыть снова - нужное поле id оторбазится.
А нужно, чтобы без закрыть\открыть форму: выбрал 09 - одно поле отобразилось, выбрал 14 - другое поле отобразилось, вот |
|
20.02.2013, 11:26 | #24 |
Ищущий знания...
|
Цитата:
Сообщение от 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:27 | #25 |
Ищущий знания...
|
поле - это столбец в таблице, я правильно понимаю?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 11:32 | #26 |
Участник
|
Да, вы абсолютно правильно понимаете, это столбец в таблице.
Вот код 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 | #27 |
Ищущий знания...
|
Цитата:
Сообщение от 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 | #28 |
Участник
|
Цитата:
Нет, это я не до конца скопировал, поле одно StatusReasonCode_ZTR и там и там, и показывается и скрывается. |
|
20.02.2013, 11:42 | #29 |
Ищущий знания...
|
Цитата:
вот это лишние, в методе visibleFields (SalesQuotationLine_StatusReasonCode - это же тоже столбец, да??) X++: if(smm.PhaseId==SalesQuotationLine.Status && smm.IsAskCode==NoYes::Yes) { SalesQuotationLine_StatusReasonCode.visible(true); }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 11:44 | #30 |
Участник
|
Цитата:
Сообщение от 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, 11:55 | #31 |
Ищущий знания...
|
Цитата:
Сообщение от user_ax
То есть в visibleFields только указывать какой контрол скрыть/показать? или поля датасоурса?
Нет, SalesQuotationLine_StatusReasonCode - это контрол формы, а поле датасоурса назыается просто StatusReasonCode. Вы ведь сказали, что в visibleFields скрывать, показывать контролы, а в visibleCollums - поля датасоурса, или я вас неправильно понял? в гриде отображаются поля датасорса (ну и display \ edit методы, и в ручную можно поля добавить, но в основном поля датасорса). если есть возможность, выложите принтскрин формы где обведите контрол SalesQuotationLine_StatusReasonCode. З.Ы. на всякий случай, под контролом формы, я понимаю объект, добавленный на форму, который не относится к датасорсу.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 12:00 | #32 |
Участник
|
Цитата:
Сообщение от lev
судя по названию SalesQuotationLine_StatusReasonCode, это контрол грида, правильно?
в гриде отображаются поля датасорса (ну и display \ edit методы, и в ручную можно поля добавить, но в основном поля датасорса). если есть возможность, выложите принтскрин формы где обведите контрол SalesQuotationLine_StatusReasonCode. З.Ы. на всякий случай, под контролом формы, я понимаю объект, добавленный на форму, который не относится к датасорсу. Это StringEdit на гриде, источником которого является поле таблицы SalesQuotationLine датасоурса. Вот. Под обведённым Статусом сейчас есть поле Код причины, вот оно должно отображаться, когда статус 09 или другой(в зависимости от enum-а), а когда хочу переключить на 14, например, оно должно пропасть и появится другое. Этот объект относится к датасоурсу, как я понимаю, ведь оно связано с полем моим )) |
|
20.02.2013, 12:21 | #33 |
Ищущий знания...
|
Цитата:
Сообщение от user_ax
Это StringEdit на гриде, источником которого является поле таблицы SalesQuotationLine датасоурса.
Вот. Под обведённым Статусом сейчас есть поле Код причины, вот оно должно отображаться, когда статус 09 или другой(в зависимости от enum-а), а когда хочу переключить на 14, например, оно должно пропасть и появится другое. Этот объект относится к датасоурсу, как я понимаю, ведь оно связано с полем моим ))
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 12:33 | #34 |
Участник
|
Цитата:
То есть мой метод 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)).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); } // 3816 18.02.2013 } это уже ведь будет не element, а Table_ds |
|
20.02.2013, 12:36 | #35 |
Ищущий знания...
|
Цитата:
Сообщение от user_ax
Все поля, которые я хочу скрывать\показывать (их 2) это поля датасоурса.
То есть мой метод 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)).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); } // 3816 18.02.2013 } это уже ведь будет не element, а Table_ds вызывайте element, ведь в нем вызывается нужный нам метод
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 12:41 | #36 |
Участник
|
Цитата:
а, visibleFields, да, но тогда что в нём писать?? X++: SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine,StatusReasonCode_ZTR)).visible(smm.PhaseId ==SalesQuotationLine.Status_ZTR && smm.IsAskCode_ZTR); SalesQuotationLine_ds.object(fieldnum(SalesQuotationLine, QuotationId)).visible(smm.PhaseId ==SalesQuotationLine.Status_ZTR && smm.IsAskMainQuotationId_ZTR); Последний раз редактировалось user_ax; 20.02.2013 в 12:44. |
|
20.02.2013, 12:44 | #37 |
Ищущий знания...
|
на данный момент, только SalesQuotationLine_ds.visibleColums();
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 12:46 | #38 |
Участник
|
Работает почти так как надо.
Если при открытии статус стоит который по условию - поле должно отображаться при открытии формы, но оно отображается только если изменить статус на любой, а потом на нужный... Что ж такое-то( |
|
20.02.2013, 12:47 | #39 |
Ищущий знания...
|
перекройте в корневых методах формы метод init() и в нем после супера надо вызвать метод visibleFields().
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2013, 12:48 | #40 |
Участник
|
Цитата:
метод init() оставьте в покое.
__________________
// no comments |
|