Показать сообщение отдельно
Старый 14.09.2009, 14:40   #21  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Цитата:
Сообщение от ZVV Посмотреть сообщение
ну во-первых покажите весь цикл,
а во-вторных, по мере ненадобности предыдущие "ассерты" надо отменять, я ж писал:
X++:
CodeAccessPermission::revertAssert();
я ж так понимаю у вас один файл обрабатывается в каждой итерации цикла?
Значит в начале итерации - assert, в конце - revertAssert...
Вот:
X++:
   InventDim               inventDim;
    ProdJournalProd         pjp;
    str                     _printStr;
    InventTrans             inventTrans;
    InventTable             inventTable;
    PrintLabel pL           = new printLabel();
    container               cnt;
    TextIO                  txtFile;
    str                     printerName,scriptZebra;
    FileIOPermission        fileIOperm;

    while
        select * from pjp
        where ProdJournalTable.JournalId == pjp.JournalId
        {
            while
                select * from inventTrans
                where inventTrans.InventTransId == pjp.InventTransId
                {
                    while
                        select * from inventDim
                        where inventDim.inventDimId == inventTrans.inventDimId
                        {
                            select * from inventTable
                            where inventTable.ItemId == ProdTable::find(pjp.ProdId).ItemId;
                            //breakpoint;
                            _printStr = inventTable.NameAlias;
                            _printStr += "|"+date2str(pjp.TransDate,123,2,2,2,2,2);
                            _printStr += "|"+inventDim.inventSerialId;
                            _printStr += "|"+inventDim.InventLocationId;
                            _printStr += "|"+inventTable.ItemId;
                            _printStr += "| С/П"+int2str(ProdTable::find(pjp.ProdId).Height)+'X'+int2str(ProdTable::find(pjp.ProdId).Width)+'|';

                            cnt = pL.PrintMmethod(_printStr);

                            printerName = conpeek(cnt,1);
                            scriptZebra = conpeek(cnt,2);

                            if (_clserv == 'client') // client
                            {
                                txtFile = new TextIo(printerName, "w", 866);
                                txtFile.write(ansi2ascii(scriptZebra));
                            }
                            else // server
                            {
                                fileIOperm = new FileIOPermission(printerName,"w");
                                fileIOperm.assert();
                                txtFile = new TextIo(printerName, "w", 866);
                                txtFile.write(ansi2ascii(scriptZebra)); //Вот тут уходит в ошибку
                                CodeAccessPermission::revertAssert();
                            }
                            sleep(2000);
                        }
                }
        }