Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УФ: записывать в лог

УФ: записывать в лог
Я
   dft2014
 
29.03.19 - 17:17
Добрый день!

Пишу обработку, которая последовательно создает три вида документов. Подскажите, как в управляемых формах вести лог (можно в файл-txt), какие документы создаются?


&НаКлиенте
Процедура СформироватьДокументы(Команда)
    
    СформироватьДокументГПХНаСервере();
    ...
    СформироватьДокументНачислениеНаСервере(Структура.мСотрудники,СсылкаДН);
    ...
    док = СформироватьДокументВедомостьНаСервере(Структура.мФизЛица,СсылкаДН);  
        
КонецПроцедуры
 
 
   Fish
 
1 - 29.03.19 - 17:31
"как в управляемых формах вести лог (можно в файл-txt)" - Да вроде точно так же, как и в обычных. Через ТекстовыйДокумент.
   Temai
 
2 - 29.03.19 - 17:32
Подтверждаю ответ из (1), так же как и в обычных формах
   Ник080808
 
3 - 29.03.19 - 17:36
(0) в регистр сведений лучше пихать
   dft2014
 
4 - 29.03.19 - 17:44
Написала функцию, код ниже:

Функция ЗаписатьЛог(Лог) Экспорт
    
    Если НЕ Лог = "" Тогда
        ТекДокумент = Новый ТекстовыйДокумент;
        ТекДокумент.УстановитьТекст("НАЧАЛО:" + Символы.ПС + Лог);
        ТекДокумент.УстановитьТипФайла(КодировкаТекста.UTF8);   
        ТекДокумент.Записать("c:\55.txt");
    КонецЕсли;
    
КонецФункции


Также, в каждой процедуре по созданию документов, вставила соответствующие строчки:
ЗаписатьЛог(Строка(НовыйДокументДГПХ.Ссылка));
ЗаписатьЛог(Строка(НовыйДокументНачислениеДог.Ссылка));
ЗаписатьЛог(Строка(НовыйДокументВедомость.Ссылка));

В результате, в файле c:\55.txt остается только одна запись - о последнем записанном документе. Как сделать, чтобы каждая новая запись не затирала предыдущую, а добавляла новую?
   Temai
 
5 - 29.03.19 - 17:57
Ты каждый раз новый документ создаешь(поэтому 1 строка - последняя), объяви создание заранее в другой процедуре и только 1 раз
   dft2014
 
6 - 29.03.19 - 18:00
(5) Как это реализовать?!
   Temai
 
7 - 29.03.19 - 18:02
(6) Блин ну я же написал.

ТекДокумент = Новый ТекстовыйДокумент; - Убери из функции ЗаписатьЛог()
и Объяви тут:

ТекДокумент = Новый ТекстовыйДокумент;
ЗаписатьЛог(Строка(НовыйДокументДГПХ.Ссылка));
ЗаписатьЛог(Строка(НовыйДокументНачислениеДог.Ссылка));
ЗаписатьЛог(Строка(НовыйДокументВедомость.Ссылка));
   Temai
 
8 - 29.03.19 - 18:02
И передавай в свою функцию этот документ и уже в него пиши
   dft2014
 
9 - 29.03.19 - 18:37
(7) Так не получится, т.к. функция ЗаписатьЛог() вызывается в разных процедурах:


&НаКлиенте
Процедура СформироватьДокументы(Команда)
    
    СформироватьДокументГПХНаСервере();
    ...
    СформироватьДокументНачислениеНаСервере(Структура.мСотрудники,СсылкаДН);
    ...
    док = СформироватьДокументВедомостьНаСервере(Структура.мФизЛица,СсылкаДН);  
    
КонецПроцедуры

&НаСервере
Процедура СформироватьДокументГПХНаСервере()
    
    Для Каждого СтрокаТЧ из Объект.тчСотрудники Цикл
        ЗаписатьЛог(Строка(НовыйДокументДГПХ.Ссылка));
    КонецЦикла;
    
КонецПроцедуры

&НаСервере
Процедура СформироватьДокументНачислениеНаСервере()
    
    Для Каждого СтрокаТЧ из Объект.тчСотрудники Цикл
        ЗаписатьЛог(Строка(НовыйДокументНачисление.Ссылка));
    КонецЦикла;
    
КонецПроцедуры

&НаСервере
Процедура СформироватьДокументВедомостьСервере()
    
    Для Каждого СтрокаТЧ из Объект.тчСотрудники Цикл
        ЗаписатьЛог(Строка(НовыйДокументВедомость.Ссылка));
    КонецЦикла;
    
КонецПроцедуры

Функция ЗаписатьЛог(Лог) Экспорт
    
    Если НЕ Лог = "" Тогда
        ТекДокумент = Новый ТекстовыйДокумент;
        ТекДокумент.УстановитьТекст("НАЧАЛО:" + Символы.ПС + Лог);
        ТекДокумент.УстановитьТипФайла(КодировкаТекста.UTF8);   
        ТекДокумент.Записать("c:\55.txt");
    КонецЕсли;
    
КонецФункции
   ДенисЧ
 
10 - 29.03.19 - 18:42
А что, журнал регистрации уже не котируется?
   dft2014
 
11 - 29.03.19 - 18:51
(10) я созданные документы записываю в лог, а потом в печатную форму на экран хочу выводить.
   Ластик
 
12 - 29.03.19 - 18:53
(0) пиши в ЖР, так быстрее, по ЖР собрать логи не проблема потом
   Ластик
 
13 - 29.03.19 - 18:55
(11) что выводить то в ПФ, логи или документы из лога
   dft2014
 
14 - 29.03.19 - 18:59
(13) Документы из лога. Но можно и не в лог-файл записывать, но и в таблицу значений, например. Но вот как это в моем случае реализовать?
   dft2014
 
15 - 29.03.19 - 18:59
(12) Зачем засорять ЖР?
   MyNick
 
16 - 29.03.19 - 19:04
(11) формировать печатную форму по данным текстового документа, созданного обработкой записи документов? Больше на бред похоже
   lubitelxml
 
17 - 29.03.19 - 19:04
(14) лучше тогда РС использовать. Скажите - как задача стоит, может все проще можно сделать
   dft2014
 
18 - 29.03.19 - 19:07
(17) Задача: чтобы после загрузки бухгалтер увидел что загрузил и в какие документы. В регистре эту информацию хранить не надо.
   singlych
 
19 - 29.03.19 - 19:57
Загрузка из формы? Храни эту инфу в реквизите формы.
   runoff_runoff
 
20 - 29.03.19 - 22:18
Новый ЗаписьТекста
   MyNick
 
21 - 30.03.19 - 07:43
(18) про реквизиты формы, переменную типа массив что-то слышали вообще?
   Сияющий в темноте
 
22 - 30.03.19 - 09:01
Если писать хочется на сервере,то или открытие файла с дописыванием,то есть Новый ЗаписьТекста...дописывание или передачп массива с данными строк обратно на клиента.

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

если хочется пользователю показать,то делаем вкладку журнал на форме,туда таблицу формы и в нее и пишем,в таблице три колонки-когда,кто и что.
   Сияющий в темноте
 
23 - 30.03.19 - 09:02
в модуле управляемой формы вверху:
&НаКлиенте
Перем МойЛог;
   hhhh
 
24 - 30.03.19 - 09:13
(22) так можно же создать реквизит формы МойЛог, и писать в него текст на сервере, с клиентом вообще не париться. На клиенте просто показывать этот текст.
   Franchiser
 
25 - 30.03.19 - 12:33
(21) я пишу в лог на клиенте в реквизит формы типа список значений (тип определяется при создании формы) , лог собирается из работы 10 фоновых заданий в асинхронном режиме.
   Franchiser
 
26 - 30.03.19 - 12:38
(23) меня не устроило то что в этом случае нельзя писать в лог в серверных процедурах
   Franchiser
 
27 - 30.03.19 - 12:41
Если создать реквизит формы неопределенного вида, и при создании формы назначит тип массив то будет ошибка, поэтом варианты только список значений, структура, тз
   Сияющий в темноте
 
28 - 30.03.19 - 20:37
(26)писать можно,только нужнл результат на клиента возвращать.
просто,в функциях без контекста все равно писать вручную с возвратом,а тогда зачем два разных механизма?
   Рэйв
 
29 - 30.03.19 - 20:45
(0)твое НаКиенте уже все портит.
Запомни уже, сто все действия с базой делаются на сервере
   Web00001
 
30 - 31.03.19 - 15:41
(25)Ты и (0) два разных человека?
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.