18.08.2011, 16:41 | #1 |
Участник
|
Множественное значение
Здраствуйте! Подскажите какой control надо на форму кинуть, чтобы обрабатывать значения типа: 2*, 3* или !2, 3* (чтобы можно запятыми разделять было) - сейчас кинул IntEdit, он не дает этого сделать. Может надо дописать метод какой?И как такие числа в памяти отображаются, я так понимаю 2* значит 2000-2999??? Спасибо!
|
|
18.08.2011, 16:47 | #2 |
Участник
|
|
|
18.08.2011, 17:06 | #3 |
Участник
|
Какой вопрос - такой ответ
Как вы хотите использовать это поле?
__________________
Ivanhoe as is.. |
|
18.08.2011, 17:14 | #4 |
Участник
|
В это поле будет вводиться статья затрат, затем значение control'a будет использованно в while select. Я кинул StringEdit и из него получаю значение, то что нужно! Спасибо S.Kuskov ))) Мне интересно каким образом оно в памяти представлено? Введя 2* под отладчиком увидел в значении - 2. Спасибо за помошь!
|
|
18.08.2011, 17:26 | #5 |
Участник
|
Забавно, а селект то правильно работает? Можете привести код селекта?
__________________
Ivanhoe as is.. |
|
18.08.2011, 19:23 | #6 |
Участник
|
Сейчас не на работе)) Поэтому примерно так выглядит
vendDim = str2int(StrEdit.valueStr()); X++: while select _vendTrans where _vendTrans.Dimension[2] == vendDim && _vendTrans.TransDate >= toDate && _vendTrans.TransDate <= fromDate { <- . VendTable } Последний раз редактировалось JuniorAx; 18.08.2011 в 19:26. |
|
18.08.2011, 19:48 | #7 |
Участник
|
А можно вопрос? Почему вы вообще решили что вам нужно целочисленное, а не строковое значение?
Поле _vendTrans.Dimension[2] хранит текстовое, а не числовое значение. Поэтому переменная vendDim из вашего примера тоже должна быть объявлена как строка. Соответственно при инициализации этой переменной не нужно использовать функцию преобразования из строки в число str2int. X++: // Вместо // vendDim = str2int(StrEdit.valueStr()); vendDim = StrEdit.valueStr(); Последний раз редактировалось S.Kuskov; 18.08.2011 в 20:02. |
|
18.08.2011, 20:00 | #8 |
Участник
|
Невнимательность и поспешность! :-) Спасибо!
|
|
18.08.2011, 20:22 | #9 |
Участник
|
Я что-то не понимаю? Вы, похоже, хотите написать в поле "2*" и получить в выборке все значения аналитики, начинающиеся с двойки? Это не будет работать.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: JuniorAx (1). |
18.08.2011, 20:32 | #10 |
Участник
|
Да. Именно так и хочу, сделать, причем еще, чтобы была возможность, делать это сразу по нескольким статьям расходов. т.е. можно писать "2*, 3*, 4*". В чем моя ошибка не подскажете???
|
|
18.08.2011, 20:38 | #11 |
Участник
|
Можно использовать в условии вместо равенства like. Но он работае только для маски, несколько условий через запятую передать нельзя
Для этого переделайте на использование Query - в Range можно задавать сложные условия, в том числе и множественные
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 18.08.2011 в 20:50. |
|
18.08.2011, 21:01 | #12 |
Участник
|
qbds.addRange(value(vendDim)) - я так понимаю??? Сейчас Axapt'ы под рукой нет, не могу поэксперементировать.
|
|
19.08.2011, 08:00 | #13 |
Участник
|
|
|
19.08.2011, 08:01 | #14 |
Участник
|
Если имелось в виду SysQuery::Value(), то нет. Этот метод экранирует переданные метасимволы.
Можно передавать условие так SysQuery::FindOrCreateRange(qbds, fieldId2Ext( fieldNum(VendTrans, Dimension), 2)).value(vendDim), либо так qbds.addRange(fieldId2Ext(fieldNum(VendTrans, Dimension), 2)).value(vendDim). Во втором случае, при каждом вызове addRange() будет добавляться новое условие.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: JuniorAx (1). |
19.08.2011, 08:10 | #15 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: JuniorAx (1). |
19.08.2011, 09:02 | #16 |
Участник
|
Спасибо большое!!!
|
|
19.08.2011, 09:32 | #17 |
северный Будда
|
Использовать в селектах ограничение по значению финаналитики ИМХО - очень нездоровое решение. Сегодня вам нужно отобрать 2*, а завтра понадобится 2*, 31??, !4040. Я бы сделал по-другому
1) добавил в custTrans новое поле NewCheckBox 2) Заполнял его в момент разноски накладной, если она удовлетворяет нужным критериям (например, по значению финаналитики) 3) В селектах по custTrans отбирал бы строки со значением NewCheckBox == true.
__________________
С уважением, Вячеслав |
|
19.08.2011, 09:52 | #18 |
Участник
|
Цитата:
Сообщение от pitersky
Использовать в селектах ограничение по значению финаналитики ИМХО - очень нездоровое решение. Сегодня вам нужно отобрать 2*, а завтра понадобится 2*, 31??, !4040. Я бы сделал по-другому
1) добавил в custTrans новое поле NewCheckBox 2) Заполнял его в момент разноски накладной, если она удовлетворяет нужным критериям (например, по значению финаналитики) 3) В селектах по custTrans отбирал бы строки со значением NewCheckBox == true. |
|
19.08.2011, 10:09 | #19 |
Участник
|
Моя задача написать отчет по статьям затрат, поэтому и плясать от неё я и хочу. Нужно выводить статью затрат и все проводки поставщиков по ней с указанием кода, имени поставщика, суммы, даты и тексьта проводки! Все это, за исключением имени есть в VendTrans! И мне уже сейчас надо, реализовать
Цитата:
Сегодня вам нужно отобрать 2*, а завтра понадобится 2*, 31??, !4040.
|
|
19.08.2011, 10:50 | #20 |
северный Будда
|
Цитата:
Ну и вообще финаналитика в моём понимании - это не источник данных для обработки, а инструмент управленческого анализа
__________________
С уважением, Вячеслав |
|