|
27.02.2009, 11:35 | #1 |
Участник
|
вопрос по Buf2Buf
Имеется такой код, но при выполнении выдает ошибку:
"Поле с кодом "1" в таблице "Common" не обнаружено." как можно избежать эту ошибку? или только использовать переменные таблиц каждого типа, определять тип _record и уже в нужную переменную копировать. Хотелось бы кода по минимуму и чтобы метод был универсальным для записи любой таблицы, переданной в качестве параметра. X++: Common _newrecord, _record; ; .... ChangeCompany("DAT") { buf2buf(_record,_newrecord); _newrecord.insert(); } |
|
27.02.2009, 11:44 | #2 |
Ищущий знания...
|
buf2buf можно использовать только для таблиц, у которых одинаковая структура полей, полностью совпадает...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
27.02.2009, 11:48 | #3 |
Участник
|
а в моем случае она совпадает.
в _record я передаю запись а _newrecord так и остается common. |
|
27.02.2009, 11:55 | #4 |
Ищущий знания...
|
Цитата:
воспользуйтесь советом tourist
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
27.02.2009, 12:12 | #5 |
MCITP
|
Цитата:
propeller, совершенно верно вам выше подсказали, нужно табличную переменную "коммон" как бы инициализировать нужным типом, иначе она останется просто "коммон" и с ней практически ничего нельзя будет сделать. buf2buf() или data() этого не делают.
__________________
Zhirenkov Vitaly |
|
27.02.2009, 12:35 | #6 |
Участник
|
да уже так сделал. пока все супер, спасибо за совет
|
|
27.02.2009, 12:47 | #7 |
Ищущий знания...
|
Цитата:
в обычном common нет полей (TableId, RecId не считаю)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
27.02.2009, 11:48 | #8 |
Участник
|
Перед вызовом buf2buf используйте makeRecord
X++: _newrecord = new DictTable(record.tableId).makeRecord(); |
|
|
За это сообщение автора поблагодарили: propeller (1). |
27.02.2009, 18:12 | #9 |
Axapta
|
Цитата:
А то была вот такая вот тема помнится (Как вызвать один метод при записи в любую таблицу), так сначала спросили про "любую таблицу", а потом оказалось, что их всего пять. |
|
02.03.2009, 11:35 | #10 |
Участник
|
Всем спасибо за помощь.
вот такой еще вопрос. можно ли не вешая на каждую таблицу в инсерте и в апдейте эту трансляцию, а где то все это в одном месте перекрыть? |
|
02.03.2009, 12:17 | #11 |
Участник
|
Простите, я не прочитал всю ветку полностью, но рискну дать совет:
X++: Common _newrecord, _record; ; .... ChangeCompany("DAT") { [B] _newRecord = null;[/B] buf2buf(_record,_newrecord); _newrecord.insert(); } |
|
02.03.2009, 12:46 | #12 |
NavAx
|
можно и без ChangeCompany
X++: static void Job2(Args _args) { SalesTable salesTable; SalesTable salesTableNew; ; select firstonly reverse salesTable; salesTableNew = null; salesTableNew.company("DAT"); buf2Buf(salestable, salesTableNew); salesTableNew.doinsert(); ChangeCompany("DAT") { salesTableNew = null; salesTableNew = SalesTable::find(salesTable.SalesId); info(strfmt("%1 %2 %3", salesTableNew.dataAreaId, salesTableNew.RecId, salesTableNew.SalesId)); } } |
|
02.03.2009, 13:37 | #13 |
Участник
|
да с этим уже все понятно. вот может кто на мой последний вопрос подскажет.
|
|
02.03.2009, 19:59 | #14 |
MCITP
|
ответ - "нет".
__________________
Zhirenkov Vitaly |
|
03.03.2009, 16:25 | #15 |
Administrator
|
Во-первых, расскажите, пожалуйста, если у вас даже RecId должны совпадать, то почему вас не устраивют виртуальные компании?
Во-вторых, посмотрите как работают Alerts.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|