Имя: Пароль:
1C
1C 7.7
v7: Дозапись в txt файл
0 Svetka
 
18.03.13
13:51
Делаю обработку по замене значений. Требуется писать эти замены в лог-файл.
Проблема в том, что мне надо добавить в лог только те замены, которые произведены в этом сеансе работы обработки, а добавляются все.

Процедура СоздатьЛогФайл()
Если ФлагЛогФайла=1 Тогда
   ЛогФайл = СоздатьОбъект("Текст");
   ЛогФайл.КодоваяСтраница(0);
   наим = СокрЛП(Тек)+"1Slog.TXT";
   Если ФС.СуществуетФайл(Пут+наим)=1 Тогда
       ЛогФайл.Открыть(Пут+наим);
   КонецЕсли;
Иначе
   ЛогФайл=0;
КонецЕсли;
КонецПроцедуры

Процедура ВЛогФайл(текст,вид="I")
Если ФлагЛогФайла=1 Тогда
   ЛогФайл.ДобавитьСтроку(текст);
   наим = СокрЛП(Тек)+"1Slog.TXT";
   ЛогФайл.Записать(Пут+наим);
КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
   ФлагЛогФайла=1;
   Пут=КаталогИБ();
   СоздатьЛогФайл();
КонецПроцедуры

Процедура ВыполнитьЗамены()
       ...........
ВЛогФайл("Справочник: "+ТЗСсылки.Ссылка.Вид()+ " " +Спр.ТекущийЭлемент()+" "+"Поле: " + Рекв);
       ...........
КонецПроцедуры
1 Chum
 
18.03.13
13:55
(0) что мешает плодить файлы по времени? Один запуск = один файл. Останется только с именем файла повыпендриваться.
2 palpetrovich
 
18.03.13
13:56
из кода непонятно чем определяются актуальность "замен"
3 palpetrovich
 
18.03.13
13:59
+(2) т.е. должно наверное быть нечто типа
Если ФлагЗаменаВЭтомСеансе Тогда
ВЛогФайл("Справочник: "+ТЗСсылки.Ссылка.Вид()+ " " +Спр.ТекущийЭлемент()+" "+"Поле: " + Рекв);
КонецЕсли;
4 Svetka
 
18.03.13
13:59
(1) Мешает: Лог создается для квартала.
В квартале много контрагентов у каждого надо сменить договор. Замены делаются в разное время.
(2) не поняла ваш вопрос.
5 palpetrovich
 
18.03.13
14:03
(4) аналогично  :)
6 Svetka
 
18.03.13
14:03
Есть подозрение, что проблема в объекте "Текст" и штатными методами работы с ними 1с.
7 palpetrovich
 
18.03.13
14:05
(6) давай весь текст ВыполнитьЗамены()
8 Svetka
 
18.03.13
14:08
(7) Зачем? Замены выполняются прекрасно. Проблема в дозаписи файла txt, в который пишутся замены из всех сеансов.
9 Svetka
 
18.03.13
14:16
В Книга знаний: Пример чтения и записи текстовых файлов (Scripting.FileSystemObject)

Процедура ПрочитатьФайл()
   ИмяФайла=КаталогИБ()+"romix_test.txt";
   fso=СоздатьОбъект("Scripting.FileSystemObject");
   file=fso.OpenTextFile(ИмяФайла, 1, 0, 0); //Открываем файл в режиме "только чтение"          
   Пока file.AtEndOfStream=0 Цикл
     стр=file.ReadLine();
     Сообщить(стр);
   КонецЦикла;
   file.Close();
КонецПроцедуры

Т.е., видимо VBScript мне в помощь?
10 Torquader
 
19.03.13
00:59
Если через Fso и дописывать в конец, то открываем
Файл=fso.OpenTextFile(ИмяФайла,8,0,0);// открываем на дозапись
и потом всё, что мы запишем в наш "журнал", будет дописано в конец файла.
11 Svetka
 
19.03.13
06:29
(10) Спасибо.
FSO творит чудеса!
Больше никогда не буду пытаться пользоватьтся СоздатьОбъект("Текст").


Процедура СоздатьЛогФайл()
   Если ФлагЛогФайла=1 Тогда
       наим = СокрЛП(Тек)+"1Slog.TXT";
       fso=СоздатьОбъект("Scripting.FileSystemObject");  
       Если ФС.СуществуетФайл(Пут+наим)=1 Тогда
           ЛогФайл=fso.OpenTextFile(Пут+наим, 8, 0, 0);        Иначе
           ЛогФайл=fso.CreateTextFile(Пут+наим, -1, 0);        КонецЕсли;
   Иначе
       ЛогФайл=0;
   КонецЕсли;    
КонецПроцедуры

//*******************************************
Процедура ВЛогФайл(текст,вид="I")
   Если ФлагЛогФайла=1 Тогда
       ЛогФайл.WriteLine(текст);
   КонецЕсли;
КонецПроцедуры
12 1Сергей
 
19.03.13
07:19
echo "удаление базы..." >> log.txt