27.06.2016, 14:31 | #1 |
Участник
|
Добавление полей
Решил поучить ax и появилась такая задача. Необходимо добавить в форму RDefferlasTrans поле RassetIdService. Подскажите способы и если можно толковую книгу по разработке. Используется ax 2004.
|
|
27.06.2016, 15:29 | #2 |
Юзовские
|
Например эта книга, стр 171. http://book.axforum.info/morphx.pdf
|
|
19.07.2016, 07:09 | #3 |
Участник
|
Все привет. В общем прочитал книженцию, но я появилась уйма вопросов. С тем же добавлением поля. Я сделал дисплэй метод в RDefferalsJournalTrans, но выходит ошибка что долго тянет и посылает меня лесом. Нашел такую штуку как cacheAddMethod, но не могу допереть как, что и куда.
Собсна мне надо чтоб на форме RDeferralsJournalTrans появилось поле RassetIdService. Решил тянуть дисплэйем из таблицы Purchline. А вот в init в ds формы RDeferralsJournalTrans не робит cacheAddMethod. То синтаксис не правильный (хотя вроде как по мануалу сделано) то еще какие то ошибки. В общем хэлп по возможности. Display method display RassetId testdisplay(PurchLine _PurchLine) { PurchLine purchLine; select RassetIdService from purchLine where purchLine.PurchID == RDeferralsJournalTrans.PurchId; return purchLine.RassetIdService; } cacheAddMethod в init public void init() { super(); this.cacheAddMethod(tableMethodStr(PurchLine, testdisplay); } |
|
19.07.2016, 08:45 | #4 |
Участник
|
1) На какой таблице вы расположили дисплэй метод? Какую таблицу вы указываете в tableMethodStr?
2) На табличном дисплей-методе не должно быть входных параметров. Он работает в контексте собственного курсора this. Рассматривайте дисплей метод как аналог вычисляемых полей, который на основании уже имеющихся в таблице полей вычисляет (или выбирает из связанных таблиц) дополнительные данные. 3) У вас не хватает круглой закрывающейся скобки ) в последней строке с cacheAddMethod. Опечатка? Судя по тому что вы уже написали. Метод у вас должен расширять таблицу RDeferralsJournalTrans (т.е. должен находится в списке её методов). И выглядеть примерно так: X++: display RassetId testdisplay() { PurchLine purchLine; select RassetIdService from purchLine where purchLine.PurchID == this.PurchId; return purchLine.RassetIdService; } X++: this.cacheAddMethod(tableMethodStr(RDeferralsJournalTrans, testdisplay)); У вас в закупке может быть больше одной строки? Могут быть в одной закупке строки с разными RassetIdService? Сейчас у вас выбирается произвольная строка в закупке. Последний раз редактировалось S.Kuskov; 19.07.2016 в 08:59. |
|
19.07.2016, 09:13 | #5 |
Участник
|
display метод лежит в RDeferralsJournalTrans. Как я понял в tableMethodStr указывается источник для моего поля а это PurchLine.
со скобкой это опечатки при копировании строк может быть в закупке несколько, но RassetIdService у всех одинаковый Последний раз редактировалось BooGA; 19.07.2016 в 09:23. |
|
19.07.2016, 09:40 | #6 |
Участник
|
|
|
19.07.2016, 10:29 | #7 |
Участник
|
Цитата:
Цитата:
1. не начинайте изучение с журналов. там как правило оооочень плотно используются framework, которые вас окончательно запутают 2. добавление поля и добавление "дисплэй метод" - это совершенно разные задачи. особенно в журнал. прежде всего из-за фреймворков 3. никогда не используйте объекты с префиксом r или суффиксом ru для изучения. с огромной вероятностью там антипаттерны. Что посоветую: 1. читать книжки 2. добавить поле в обычную и простую форму CustTable 3. разобраться с map'ами и понять как одно и то же по смыслу поле добавить в разные формы CustTable, VendTable 4. добавить "дисплэй метод", понять общее с полем и осознать отличия в Аксапте после того, как разберетесь с хранением и отображением полей в Аксапте, начните разбираться с журналами и их фреймворками. повторюсь - ни в коем случае не начинайте с r* объектов. начните с ежедневного журнала или журнала платежей. Последний раз редактировалось mazzy; 19.07.2016 в 10:34. |
|
20.07.2016, 12:28 | #8 |
Участник
|
Всем большое спасибо за советы и помощь.
|
|