![]() |
#1 |
Участник
|
![]()
Такая проблема. Есть класс, там запрос, например по Номенклатурному справочнику.
X++: If(qweryRun.changedNo(1))
{
inventTable = getRun(1);
} И как запомнить эти два поля ? Дальше заполняется временная таблица и формируется форма, на основе запросов. И вот сама проблема...параметры запроса в виде отдельных полей нужно вывести на форму. Чтобы пользователь мог видеть с какими параметрами запустил форму. в каком направлении плыть .. не подскажете? |
|
![]() |
#2 |
Модератор
|
У Query есть ряд параметров - фильтров.
Можно в цикле их перебрать все. Только будьте аккуратны - их может быть больше, чем Вы предусмотрели ![]() Поищите по "Query" и "фильтр" С Уважением, Георгий |
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Модератор
|
Посмотрите tutorialRunBase - класс и форму. Там автоматом в определенную группу добавляются все поля, по которым стоит фильтр. Я бы так поступил.
Удачи! Георгий |
|
|
За это сообщение автора поблагодарили: fialka (1). |
![]() |
#5 |
Участник
|
X++: static void tutorial_ListQueryBuildRange(Args _args) { Query query = new Query(); QueryBuildDataSource qbdsInventTable = query.addDataSource(tableNum(InventTable)); Counter qbrCount; QueryBuildRange qbrItem; ; qbdsInventTable.addRange(fieldNum(InventTable, ItemGroupId)).value("Something"); qbdsInventTable.addRange(fieldNum(InventTable, ItemType)).value(queryValue(ItemType::Item)); for (qbrCount = 1; qbrCount <= qbdsInventTable.rangeCount(); qbrCount++) { qbrItem = qbdsInventTable.range(qbrCount); info(strFmt("%1 (FieldId = %2) = %3", qbrItem.name(), qbrItem.field(), qbrItem.value())); } } Также обрати внимание, что там кол-во полей там тоже ограничено. По-моему 7ью полями. Или 11. не помню точно, надо смотреть. |
|
|
За это сообщение автора поблагодарили: fialka (1). |
![]() |
#6 |
Участник
|
Спасибо... большое...
Пойду пилить )) |
|
![]() |
#7 |
Участник
|
Таки не угадал
![]() ![]() MAXRANGES(6) AxPath://AOT/Classes/RunBaseDialogMo...line=30&pos=30 |
|
![]() |
#8 |
Участник
|
Цитата:
И всё равно до меня не дошло.. С датой и клиентом понятно на форме и в классе. А как вот "выцепить из запроса Номенклатуру? ![]() и сохранить значение для передачи например на другую форму? |
|
![]() |
#9 |
Участник
|
решила проблему вот так... может кому понадобится..
X++: // 22.08.2007, {}, , KiurOl void addQueryControl() { Query query = purchForecast.queryRun().query(); QueryBuildDataSource qbdsInventTable = query.dataSourceTable(tablenum(InventTable)); Counter qbrCount; QueryBuildRange qbrItem; FormBuildDesign formBuilddesign = form.design(); FormBuildGroupControl formBuildGroupControl; formStringControl c; DictTable dictTable; DictField dictField; ; dictTable = new DictTable(tablenum(InventTable)); for (qbrCount = 1; qbrCount <= qbdsInventTable.rangeCount(); qbrCount++) { qbrItem = qbdsInventTable.range(qbrCount); dictField = new DictField(dictTable.id(), qbrItem.field()); // create control // info(strFmt("%1 (FieldId = %2) = %3", qbrItem.name(), qbrItem.field(), qbrItem.value())); c = ParametersGroup.addControl(FormControlType::STRING,'RunTimeControl'); c.label(dictField.label()); c.extendedDataType(dictField.typeId()); c.allowEdit(false); c.text(qbrItem.value()); formBuildGroupControl = formBuildDesign.control( ParametersGroup.id() ); } } Спасибо за помощь . |
|
![]() |
#10 |
Участник
|
закрыта тема
решила так.
X++: c.label(strlen(dictField.label()) > 15 ? substr(dictField.label(), 1, 14) + '.' : dictField.label()); Вот создаются программно поля на форме, на основе запроса. А вот если задают в запросе длинное название поля, то само поле с значением вываливаются за край формы.. Вообщем, вопрос такой .. как тут можно программно размер названия поля, при автоматическом создании...? Ведь получается берём системное название поля...Например, Номенклатурная группа, название поля видно, а вот значения его нет (( А вот как его обрезать, сделать например , не больше 15 символов? Последний раз редактировалось fialka; 23.08.2007 в 10:55. |
|
|
|