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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2006, 11:57   #1  
Jox is offline
Jox
Developer
Аватар для Jox
 
112 / 24 (1) +++
Регистрация: 26.07.2005
Адрес: Питер
:( Проблема с инициализацией экземпляра объекта
Проблема с инициализацией экземпляра объекта (класса AsciiIo)

Из класса "XXX extends RunBaseBatch" создаю экземпляр класса ExportToCrystall_Item, в его new-методе создается экземпляр класса AsciiIo - вываливается трассировка: "Ошибка инициализации объекта AsciiIo".

Если экз. класса создается в джобе - New-метод отрабатывает нормально

Код в абстрактном классе:
PHP код:
abstract class ExportToCrystall
{
    
#ExportToCrystall
    
AsciiIo                 myfile;


Код в потомке:
PHP код:
class ExportToCrystall_Item extends ExportToCrystall
{
}

void new(InventLocationId _shop)
{
    
myfile = new AsciiIo(this.getExportFolder(_shop) + this.getFileName(),"w");
    
myfile.outFieldDelimiter("|");

Код в потомке RunBaseBatch:
PHP код:
class ExportToCrystall_Items_PO extends RunBaseBatch
{
    
DialogField         dfInventLocationId;
    
DialogField         dfItemRange;

    
InventTable         inventTable;
    
InventItemBarCode   inventItemBarCode;
    
VendTable           vendTable;
    
PurchTable          purchTable;
    
PurchLine           purchLine;

    
InventLocationId_Shop locationId;
    
anyItemRangeId      itemRange;

    
#define.CurrentVersion(1)
    #localmacro.CurrentList
        
locationId,
        
itemRange
    
#endmacro
}

void run()
{
    
ClassificatorRanges     classificator = new ClassificatorRanges();
    
tmpRangesInvent         itemBuffer;
    
#avifiles
    
SysOperationProgress    progressBar;
    
int                     im;
    
ExportToCrystall_Item   exportToCrystallItem = new ExportToCrystall_Item(locationId);
    ;

    
classificator.run(itemRange);

    
= (select count(RecIdfrom tmpRangesInvent).RecId;
    
progressBar SysOperationProgress::newGeneral(#AviTransfer, 'Экспорт в Кристалл',m);

    
while select itemBuffer
    
{

        
exportToCrystallItem.WriteLine(locationId, [itemBuffer.ItemId]);

        
i++;
        
progressBar.incCount();
        
progressBar.setText(strfmt("Передано: %1 из %2 товаров"im));
        
progressBar.update(true);

    }

    
classificator.finalize();
    
progressBar.kill();

А вот тотже код, но в джобе - РАботает

PHP код:
static void Job7(Args _args)
{
    
ClassificatorRanges     classificator = new ClassificatorRanges();
    
tmpRangesInvent         itemBuffer;
    
#avifiles
    
SysOperationProgress    progressBar;
    
int                     im;
    
ExportToCrystall_Item   exportToCrystallItem = new ExportToCrystall_Item("М6_ОСН");
    
ItemRangeId             itemRange "00002706_147";
    
InventLocationId        locationId "М6_ОСН";
    ;


    
classificator.run(itemRange);

    
= (select count(RecIdfrom tmpRangesInvent).RecId;
    
progressBar SysOperationProgress::newGeneral(#AviTransfer, 'Экспорт в Кристалл',m);

    
while select itemBuffer
    
{
        
exportToCrystallItem.WriteLine(locationId, [itemBuffer.ItemId]);
        
i++;
        
progressBar.setText(strfmt("Передано: %1 из %2 товаров"im));
        
progressBar.incCount();
    }

    
classificator.finalize();


Последний раз редактировалось Jox; 11.01.2006 в 12:01.
Старый 11.01.2006, 12:26   #2  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Первое что бросается, Вы передаете переменную типа InventLocationId_Shop, а в методе new класса ExportToCrystall_Item, параметр типа InventLocationId.
InventLocationId_Shop наследник от InventLocationId?
Старый 11.01.2006, 12:55   #3  
Jox is offline
Jox
Developer
Аватар для Jox
 
112 / 24 (1) +++
Регистрация: 26.07.2005
Адрес: Питер
Да это наследник, тут все в порядке, просто фильтр стоит...

Один хороший человек высказал предположение.
Проверил - заработало!!!

Дело в том, что Батчевый классец выполняется на сервере, а другие классы на клиенте.
зашел на двушке все заработало!

зашел в трешку, заработал, после того как явно задал у классов свойство RunOn = Server, а не Called from
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с единицей измерения longson DAX: Программирование 4 16.07.2007 14:35
Проблема с получение коллекции (массива) из COM-объекта. VES DAX: Программирование 6 24.03.2006 18:59
Проблема с созданием объекта Lelya DAX: Администрирование 33 27.06.2005 16:38
Есть ли таблица соответствий ID -объекта - Имя объекта в Аксапта? coja DAX: Администрирование 5 26.04.2005 15:25
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20

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

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

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