Показать сообщение отдельно
Старый 09.06.2006, 11:00   #27  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
2 belugin
Насчет & и т.п.
Excel нормально отрабатывает их присутствие в данных, единственно - если угловые скобки идут парой <> - то будет ошибка формата.
Но вообще согласен - надо отрабатывать такие ситуации.

Вот код функции, заменяющей спецсимволы в строке
X++:
    str 1 entity[5];
    str 6 entityReference[5];
    str getEntities(str s1)
    {
        int j, pos;
        ;
        for (j=1;j<=5;j++)
        {
            pos = strscan(s1, entity[j], 1, strlen(s1));
            while (pos)
            {
                s1 = substr(s1, 1, pos-1) + entityReference[j] + substr(s1, pos+1, strlen(s1));
                pos = strscan(s1, entity[j], pos + 1, strlen(s1));
            }
        }
        return s1;
    }
    ;
    entity[1] = "&";
    entity[2] = "<";
    entity[3] = ">";
    entity[4] = "'";
    entity[5] = '"';
    entityReference[1] = "&amp;";
    entityReference[2] = "&lt;";
    entityReference[3] = "&gt;";
    entityReference[4] = "&apos;";
    entityReference[5] = "&quot;";
....
        buf +=
            strfmt(
...
                ledgerTrans.RecId, getEntities(ledgerTrans.AccountNum), getEntities(ledgerTable.AccountName), ledgerTable.AccountPlType,
                ledgerTrans.BondBatchTrans_RU, ledgerTrans.BondBatch_RU,
                date2str(ledgerTrans.TransDate, 321, 2, 3, 2, 3, 4), getEntities(ledgerTrans.Txt),
                strltrim(strrem(num2str(ledgerTrans.AmountMST, 10, 2, 1, 0), "+")), ledgerTrans.Crediting,
                #toFile ? "" : (cnt mod 2 == 1 ? " ss:StyleID=\"s15\"" : " ss:StyleID=\"s16\""),
                cnt mod 2 == 1 ? " ss:StyleID=\"s12\"" : " ss:StyleID=\"s13\"",
                cnt mod 2 == 1 ? " ss:StyleID=\"s10\"" : " ss:StyleID=\"s11\"",
                #toFile ? (cnt mod 2 == 1 ? " ss:StyleID=\"s15\"" : " ss:StyleID=\"s16\"") : "");
...
Время загрузки увеличивается на 3-4 с

PS упс. исправил
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 09.06.2006 в 11:43.