Имя: Пароль:
1C
 
Запись лога в файл на клиенте параллельно с выполнением на сервере
0 SeiOkami
 
20.01.20
09:34
Добрый день.

Подскажите, как лучше всего сделать запись лога в файл параллельно с выполнением.

Есть обработка. Она создаёт документы в фоновом задании, на форме самой обработки крутится обработчик ожидания, который постоянно опрашивает фоновое. Хочу писать лог из фонового задания в файл на клиентской машине. Загвоздка в том, что писать нужно параллельно с выполнением. То есть, если сеанс вдруг упадёт, то в логе должен быть лог до падения.

Можно было бы писать при помощи ЗаписьТекста, но нужно записывать в таком формате, чтобы этот файл можно было бы программно преобразовать в таблицу лога. То бишь, это должен быть или ЗначениеВСтрокуВнутр или XML или JSON. Чтобы потом нормально данные прочитать и вывести в отчёт

Какой объект платформы можно для этого использовать?
1 Конструктор1С
 
20.01.20
09:41
Кури метод БСП ДлительныеОперации.СообщитьПрогресс(), у него есть параметр, в который можно передать примитивное значение. В частности, можно сериализовать нужные тебе данные в XML и протащить через этот параметр
2 Конструктор1С
 
20.01.20
09:42
3 SeiOkami
 
20.01.20
09:43
(1), приведённый тобой метод поможет передать инфу из сервера на клиент, но загвоздка именно в том, как потом эту инфу записывать в файл лога
4 ezhikofff
 
20.01.20
09:46
(0) зачем писать лог именно на клиенте? можно же писать на сервере в сетевую папку, доступную клиентам...не?

На сервере можно писать лог сразу в табличный документ
5 ДенисЧ
 
20.01.20
09:47
В базу данных пиши каждый чих с фиксированием транзакции
6 SeiOkami
 
20.01.20
09:48
(4), нужно именно писать на клиенте
7 Конструктор1С
 
20.01.20
10:14
(3) в клиентском методе складывай в коллекцию значений, а потом закинешь в файл
8 Cyberhawk
 
20.01.20
10:16
(7) Клиент упал и лога нет
9 Cyberhawk
 
20.01.20
10:16
А какие проблемы с ЗаписьТекста?
10 Cyberhawk
 
20.01.20
10:17
(4) "писать на сервере в сетевую папку, доступную клиентам...не?" // Неуниверсально. Никакой общей папки, доступной рабочему процессу, может и не быть
11 Конструктор1С
 
20.01.20
10:26
(8) ага, свет рубанут и каюк
12 SeiOkami
 
20.01.20
10:33
(9), просто нужно не просто строчки для пользователя писать, а данные, которые потом можно сериализовать в 1Сные и в отчете вывести.
Например, каждая строка лога - это структура с свойствами "Дата,Документ,ОписаниеОшибки".
13 SeiOkami
 
20.01.20
10:33
пока что вижу только один вариант - писать всё в текстовый файл при помощи ЗаписьТекста. и вставлять всякую заранее заготовленную безумную строку, чтобы потом по ней разбивать элементы. Тип "балблаблаздесьразделительстрок"
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший