AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.02.2009, 11:35   #1  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
! вопрос по Buf2Buf
Имеется такой код, но при выполнении выдает ошибку:
"Поле с кодом "1" в таблице "Common" не обнаружено."
как можно избежать эту ошибку? или только использовать переменные таблиц каждого типа, определять тип _record и уже в нужную переменную копировать.
Хотелось бы кода по минимуму и чтобы метод был универсальным для записи любой таблицы, переданной в качестве параметра.
X++:
Common _newrecord, _record;
    ;

....
    ChangeCompany("DAT")
    {
        buf2buf(_record,_newrecord);
        _newrecord.insert();

    }
Старый 27.02.2009, 11:44   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
buf2buf можно использовать только для таблиц, у которых одинаковая структура полей, полностью совпадает...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 27.02.2009, 11:48   #3  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
а в моем случае она совпадает.
в _record я передаю запись
а _newrecord так и остается common.
Старый 27.02.2009, 11:55   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от propeller Посмотреть сообщение
а в моем случае она совпадает.
в _record я передаю запись
а _newrecord так и остается common.
сами себе противоречите если newRecord у Вас common, то структура поле у него с Record не совпадает
воспользуйтесь советом tourist
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 27.02.2009, 12:12   #5  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от lev Посмотреть сообщение
сами себе противоречите если newRecord у Вас common, то структура поле у него с Record не совпадает
воспользуйтесь советом tourist
Вы бы сами попробовали сначала, прежде чем говорить про противоречие...

propeller, совершенно верно вам выше подсказали, нужно табличную переменную "коммон" как бы инициализировать нужным типом, иначе она останется просто "коммон" и с ней практически ничего нельзя будет сделать.
buf2buf() или data() этого не делают.
__________________
Zhirenkov Vitaly
Старый 27.02.2009, 12:35   #6  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
да уже так сделал. пока все супер, спасибо за совет
Старый 27.02.2009, 12:47   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от ZVV Посмотреть сообщение
Вы бы сами попробовали сначала, прежде чем говорить про противоречие...

... нужно табличную переменную "коммон" как бы инициализировать нужным типом, иначе она останется просто "коммон" и с ней практически ничего нельзя будет сделать.
buf2buf() или data() этого не делают.
кодга говорил про противоречие, именно это и имел ввиду "иначе она останется просто "коммон" и с ней практически ничего нельзя будет сделать"!
в обычном common нет полей (TableId, RecId не считаю)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 27.02.2009, 11:48   #8  
tourist is offline
tourist
Участник
 
21 / 14 (1) ++
Регистрация: 03.05.2006
Перед вызовом buf2buf используйте makeRecord
X++:
_newrecord = new DictTable(record.tableId).makeRecord();
За это сообщение автора поблагодарили: propeller (1).
Старый 27.02.2009, 18:12   #9  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от propeller Посмотреть сообщение
Хотелось бы кода по минимуму и чтобы метод был универсальным для записи любой таблицы, переданной в качестве параметра.
А может не стоит она того, эта псевдоуниверсальность, ради 15-то таблиц? Слишком уж плохое это слово, "любой". Не буду повторять одну из любимых фраз Маззи.

А то была вот такая вот тема помнится (Как вызвать один метод при записи в любую таблицу), так сначала спросили про "любую таблицу", а потом оказалось, что их всего пять.
Старый 02.03.2009, 11:35   #10  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
Всем спасибо за помощь.
вот такой еще вопрос. можно ли не вешая на каждую таблицу в инсерте и в апдейте эту трансляцию, а где то все это в одном месте перекрыть?
Старый 02.03.2009, 12:17   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Простите, я не прочитал всю ветку полностью, но рискну дать совет:

X++:
Common _newrecord, _record;
    ;

....
    ChangeCompany("DAT")
    {
[B]       _newRecord = null;[/B]
        buf2buf(_record,_newrecord);
        _newrecord.insert();

    }
Возможно кто-то это уже посоветовал
Старый 02.03.2009, 12:46   #12  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
можно и без 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  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
да с этим уже все понятно. вот может кто на мой последний вопрос подскажет.
Старый 02.03.2009, 19:59   #14  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от propeller Посмотреть сообщение
да с этим уже все понятно. вот может кто на мой последний вопрос подскажет.
ответ - "нет".
__________________
Zhirenkov Vitaly
Старый 03.03.2009, 16:25   #15  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Во-первых, расскажите, пожалуйста, если у вас даже 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
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по возвратам soad DAX: Функционал 2 24.07.2008 13:04
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Вопрос по проектам Фиксированная цена PSA DAX: Функционал 9 29.06.2006 14:23
Еще вопрос про покрытие по аналитикам в Сводном планировании rt2 DAX: Функционал 3 24.03.2006 18:56
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:22.