Показать сообщение отдельно
Старый 01.02.2020, 08:01   #11  
oleggy is offline
oleggy
Участник
 
256 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
В продолжении темы.
Согласен info тоже удобен. Но в нем очень неудобно осуществлять навигацию, если записей очень много получается. Трудно даже ползунок сдвинуть.

Подскажите еще.

Вопрос 1
Пакетник ведет лог в файл, все хорошо. Но при работе есть случаи когда происходит вывод сообщений в инфолог из глубины различных методов.
Соответственно на финише получается такая картина, лог выводится в файл и выводится инфолог в котором масса сообщения тоже.
Невозможно понять в рамках какой строки лога выводились конкретное сообщения в инфоологе.

Мне было бы удобнее к каждой строке лога текстового файла добавлять текстовое значение из инфолога которое были выведены. Только вопрос: Как сообщение извлечь из инфолога в текстовую переменную? И главное что бы это сообщение из инфолога было без эффекта накопления..

Вопрос 2
Я использую класс для вывода сообщений System.IO.StreamWriter (код из примера):
X++:
static void Job_StreamWriter(Args _args)
{
    System.IO.StreamWriter sw;
    InteropPermission perm = new InteropPermission(InteropKind::ClrInterop);
    ;

    perm.assert();

    sw = new System.IO.StreamWriter(@"C:\test.txt");
    sw.WriteLine("Line 1");
    sw.WriteLine("Line 2");
    sw.Flush();
    sw.Close();
    sw.Dispose();

    CodeAccessPermission::revertAssert();
}
Пытался указать:
X++:
sw = new System.IO.StreamWriter(@"%USERPROFILE%\test.log");
Но система выводит ошибку "Объект "CLRObject" не может быть создан".
Похоже она не понимает переменные окружения.
Нужно для того что если пакетник выполняется вручную на сервере соответственно сохранить возможно лог только в папку текущего пользователя запустившего пакетник.

Вопрос 3
Возможно ли как то узнать какая ошибка генерируется в случае когда выводится ошибка "Объект "CLRObject" не может быть создан".
Это нужно для того что бы обрабатывать различные ошибки. Как в вопросе выше.
Если нет доступа к пути то нужно выводить такое сообщение.
Создавал вот такую конструкцию:
X++:
try
    {
        sw = new System.IO.StreamWriter(@"%USERPROFILE%\test.log");
        if (!sw)
        {
            throw error('ошибка');
        }
    }
    //catch(Exception::CLRError)
    catch(Exception::Error)
    {
        info("свой текст ошибки");
    }
Но ни в каком случае свой текст ошибки не выводится. Выводится только "Объект "CLRObject" не может быть создан".

Последний раз редактировалось oleggy; 01.02.2020 в 08:29.