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

Как создать пустой текстовый файл из 1С

Как создать пустой текстовый файл из 1С
Я
   Mikhail Volkov
 
19.02.21 - 11:19
Понадобился некий текстовый файл как признак некоторого результата, сформированного в 1С: пустой файл - нет результата. Написал так:
Функция ИзменениеЛогФайла(Очистить = Истина)   Экспорт
    ИмяФайлаЛог = КаталогАльфаАвто() + "AAAAkit.log";
    ФайлЛог = Новый Файл(ИмяФайлаЛог);
    Если Очистить Тогда
        Если Не (ФайлЛог.Существует() И ПустойТекстовыйФайл(ИмяФайлаЛог)) Тогда
            Если ФайлЛог.Существует() Тогда
                УдалитьФайлы(ИмяФайлаЛог);
            КонецЕсли;
        //    ФайлЛог = Новый ТекстовыйДокумент;
        //    ФайлЛог.Записать(ИмяФайлаЛог);
            ФайлЛог = Новый ЗаписьТекста(ИмяФайлаЛог);
            ФайлЛог.Закрыть();
            Возврат Истина;
        КонецЕсли;
    Иначе
        Если Не (ФайлЛог.Существует() И Не ПустойТекстовыйФайл(ИмяФайлаЛог)) Тогда
            Текст = Новый ЗаписьТекста(ИмяФайлаЛог, КодировкаТекста.ANSI);
            Текст.ЗаписатьСтроку("Создан " + ТекущаяДата());
            Текст.Закрыть();
            Возврат Истина;
        КонецЕсли;
    КонецЕсли;
    Возврат Ложь;
КонецФункции  // ИзменениеЛогФайла()

// Возвращает Истина для пустого текстового файла
//
Функция ПустойТекстовыйФайл(ИмяФайла)   Экспорт
    Файл = Новый ТекстовыйДокумент;
    Файл.Прочитать(ИмяФайла, КодировкаТекста.ANSI);
//    Сообщить("КоличествоСтрок " + Файл.КоличествоСтрок() + ?(Файл.КоличествоСтрок() > 0, " строка " + Файл.ПолучитьСтроку(1), "") + " ПустойТекстовыйФайл " + (Файл.КоличествоСтрок() = 0 Или Файл.КоличествоСтрок() > 0 И ПустаяСтрока(СокрЛП(Файл.ПолучитьСтроку(1)))), СтатусСообщения.Информация);
    Возврат Файл.КоличествоСтрок() = 0 Или Файл.КоличествоСтрок() > 0 И ПустаяСтрока(СокрЛП(Файл.ПолучитьСтроку(1)));
КонецФункции  // ПустойТекстовыйФайл()

Вроде все работало, но сегодня функция ПустойТекстовыйФайл(ИмяФайла) для пустого файла стала выдавать строку: п»ї (закомментирована)!? Вариант v8: Как создать пустой текстовый файл из 1С закомментировал, свой написал все равно тот же результат. Не пойму: в чем причина?
 
 Партнерская программа EFSOL Oblako
   ДенисЧ
 
1 - 19.02.21 - 11:23
Так у тебя уникод заработал внезапно
   Garykom
 
2 - 19.02.21 - 11:30
(0) погугли BOM
   Mikhail Volkov
 
3 - 19.02.21 - 11:46
(1) п»ї - уникод? Как его выключить, или не учитывался? Блокнотом их (символов) не вижу.
   ДенисЧ
 
4 - 19.02.21 - 11:48
(3) Это BOM - Byte Order Mark. Отличительный признак уникодовых текстов
   GANR
 
5 - 19.02.21 - 11:50
(0) легко
   Галахад
 
6 - 19.02.21 - 11:56
Тут скорее непонятно зачем в этот файл вообще чего-то писать.
Если нужна дата создания, её же можно прочитать, ну или глазами посмотреть.
   Mikhail Volkov
 
7 - 19.02.21 - 12:36
(5) Да:
    ФайлЛог = Новый ТекстовыйДокумент;
    ФайлЛог.Записать(ИмяФайлаЛог, КодировкаТекста.ANSI);
(6) Нет, нужен некий внешний признак готово ли все в 1С, стоит ли в нее входить.
   Йохохо
 
8 - 19.02.21 - 12:38
(7) одно решение при начале регламента пишет в файлик @, а при окончании меняет на #
   УдавВПопугаях
 
9 - 19.02.21 - 12:53
Микхаил...
вы как всегда, все темы у вас чем то похожи
   ДенисЧ
 
10 - 19.02.21 - 12:54
(8) А потом кто-нибудь в файл заглянет и телегу напишет "программа матом кроет..."
   acht
 
11 - 19.02.21 - 13:03
(10)

    ИмяФайла = ПолучитьИмяВременногоФайла();
    
    Запись = Новый ЗаписьТекста(ИмяФайла, "windows-1251");
    Запись.Записать("его");
    Запись.Закрыть();
    
    Чтение = Новый ЧтениеТекста(ИмяФайла, "cp866");
    Сообщить(Чтение.Прочитать());
    Чтение.Закрыть();
    
    УдалитьФайлы(ИмяФайла);
   Kassern
 
12 - 19.02.21 - 13:12
(0) сдается мне, что это все для решения проблемы с бекапами)) Ну раз пошли таким тернистым путем, то зачем еще усложнять?
Если вам файл нужен лишь как флаг, то и работайте с ним как с флагом, зачем писать что-то внутрь?
Просто выполняете какое-то событие, по результату которого создается файл в определенном месте с определенным именеи
Далее, просто проверяете на существование файла, если он есть значит что-то делаем и удаляем файл иначе ждем пока появится
   Mikhail Volkov
 
13 - 19.02.21 - 14:32
(12) Да, первоначально этот файл (пустой или нет) использовался как признак есть кто в базе, или нет: при входе пользователя что-то пишется в него, при выходе последнего пользователя он очищается. Не нашел метода определить, есть ли пользователи в базе как для версии 7.7 как из одной базы 1С проверить есть ли кто в другой Но после dt-выгрузку запускаю bat-файлом непосредственно из 1С по завершению работы последнего пользователя.
Текстовый файл обязательно имеет хотя бы одну строку (пустую или нет), можно не писать условие: Файл.КоличествоСтрок() = 0 Или Файл.КоличествоСтрок() > 0 И... для проверки пустой о или нет?
   Garykom
 
14 - 19.02.21 - 14:39
(13) мдя

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