Вход | Регистрация
 
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) два разных человека?
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.