|
07.11.2012, 08:13 | #1 |
Участник
|
Цитата:
Сообщение от Narayana
С помощью формы такое можно сделать. Data Source формы позволяет добавить еще одно поле, не привязанное к таблице, которая является источником для Data Source и потом в методе дата-сорса вычислить значения и подставить их в нужное поле. Причем, ссылаться при вычислениях нужно на имя дата-сорса как на имя таблицы. При этом строки временной таблицы станут видны в форме.
Если просто отображать вычисленное значение не достаточно, то стандартный подход - использовать временные таблицы для промежуточных вычислений. Есть ещё не стандартный способ создания нужного View, заключающийся в том чтобы подменять аксаптовский View на нужный на уровне БД. Правда, как и у всех нестандартных способов, и у этого есть свои проблемы Запрет синхронизации объекта АОТ |
|
07.11.2012, 09:11 | #2 |
Участник
|
Если не устраивают дисплейные методы, которые можно использовать как вычисляемые поля, можешь завести отдельное поле и сделать такую операцию:
X++: ThisIsMyTable mytable; ; mytable.skipDataMethods(true); update_recordset mytable setting field3 = mytable.field1 + mytable.field2; where mytable.field4 == "F4";
__________________
// no comments |
|
07.11.2012, 13:27 | #3 |
Участник
|
Цитата:
Сообщение от dech
Если не устраивают дисплейные методы, которые можно использовать как вычисляемые поля, можешь завести отдельное поле и сделать такую операцию:
X++: ThisIsMyTable mytable; ; mytable.skipDataMethods(true); update_recordset mytable setting field3 = mytable.field1 + mytable.field2; where mytable.field4 == "F4"; А для постоянной таблицы такого рода тактика не айс, потому как держать в одной постоянной таблице и записи для свертки и результаты свертки как-то странно. |
|
07.11.2012, 13:13 | #4 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Немного сумбурно написано. В аксапте есть возможность отображать на форме или в отчёте результат вычисления метода, написанного непосредственно на X++. Если по вычисленному значению вам не нужно проводить фильтрацию сортировку или агрегацию, а нужно всего лишь отображать значение, то можно использовать механизм display-методов. Их можно реализовывать не только на формах но и на таблицах.
Если просто отображать вычисленное значение не достаточно, то стандартный подход - использовать временные таблицы для промежуточных вычислений. Есть ещё не стандартный способ создания нужного View, заключающийся в том чтобы подменять аксаптовский View на нужный на уровне БД. Правда, как и у всех нестандартных способов, и у этого есть свои проблемы Запрет синхронизации объекта АОТ Отображение вычисляемых значений в полях форм и отчетов возможно и удобно с помощью методов, но нужно не это. Нужно готовый View, для того, чтобы передавать его как дата-сорс в Data Set для портала. Не, ну это, вообще, чисто идейно кривой ход, вычисления делать уже в форме. Вся смысловая бизнес логика должна реализовывать в единой структуре данных. И потом, это же Аксапта, а не 1С. В общем, недоработка. Причем, крупная. А вот как использовать дисплей-методы для вычисления полей в таблице я не понял. В хелпе про это ничего нет. Только про формы и отчеты. Если можно, приведите пример. Здесь ведь в чем тонкость. Просто создать в коде переменную для временной таблицы и вычислить для этой таблицы все поля, не сложно. Невозможно эту таблицу как объект в виде переменной привязать ко View. Ну, то есть, можно просто View не предлагает временную таблицу для подстановки в качестве дата-сорса. То же самое и с запросом. Вы можете выбрать временную таблицу в качестве дата-сорса, но когда этот запрос затолкаете во View, то он не будет отражаться в дата-сорсах для этого View. Переходить ко вьшкам в базе, это уже выглядит извращением для такой простой задачи. Но, если ничего не получится, можно попробовать. Хотя, наверное, проще переформатировать таблицы и перейти от горизонтальной агрегации в вертикальной, доступной. |
|
07.11.2012, 14:10 | #5 |
Участник
|
Цитата:
Цитата:
Сообщение от Narayana
Здесь ведь в чем тонкость.
Просто создать в коде переменную для временной таблицы и вычислить для этой таблицы все поля, не сложно. Невозможно эту таблицу как объект в виде переменной привязать ко View. Ну, то есть, можно просто View не предлагает временную таблицу для подстановки в качестве дата-сорса. То же самое и с запросом. Вы можете выбрать временную таблицу в качестве дата-сорса, но когда этот запрос затолкаете во View, то он не будет отражаться в дата-сорсах для этого View. TmpTable в QueryRun |
|
|
За это сообщение автора поблагодарили: Narayana (1). |
Теги |
query, архитектура, как правильно |
|
|