Имя: Пароль:
1C
1С v8
УФ: записывать в лог
0 dft2014
 
29.03.19
17:17
Добрый день!

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


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

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


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

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

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

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


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

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

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

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

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

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

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