|
Как создать пустой текстовый файл из 1С | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
19.02.21
✎
11:19
|
Понадобился некий текстовый файл как признак некоторого результата, сформированного в 1С: пустой файл - нет результата. Написал так:
Функция ИзменениеЛогФайла(Очистить = Истина) Экспорт ИмяФайлаЛог = КаталогАльфаАвто() + "AAAAkit.log"; ФайлЛог = Новый Файл(ИмяФайлаЛог); Если Очистить Тогда Если Не (ФайлЛог.Существует() И ПустойТекстовыйФайл(ИмяФайлаЛог)) Тогда Если ФайлЛог.Существует() Тогда УдалитьФайлы(ИмяФайлаЛог); КонецЕсли; // ФайлЛог = Новый ТекстовыйДокумент; // ФайлЛог.Записать(ИмяФайлаЛог); ФайлЛог = Новый ЗаписьТекста(ИмяФайлаЛог); ФайлЛог.Закрыть(); Возврат Истина; КонецЕсли; Иначе Если Не (ФайлЛог.Существует() И Не ПустойТекстовыйФайл(ИмяФайлаЛог)) Тогда Текст = Новый ЗаписьТекста(ИмяФайлаЛог, КодировкаТекста.ANSI); Текст.ЗаписатьСтроку("Создан " + ТекущаяДата()); Текст.Закрыть(); Возврат Истина; КонецЕсли; КонецЕсли; Возврат Ложь; КонецФункции // ИзменениеЛогФайла() // Возвращает Истина для пустого текстового файла // Функция ПустойТекстовыйФайл(ИмяФайла) Экспорт Файл = Новый ТекстовыйДокумент; Файл.Прочитать(ИмяФайла, КодировкаТекста.ANSI); // Сообщить("КоличествоСтрок " + Файл.КоличествоСтрок() + ?(Файл.КоличествоСтрок() > 0, " строка " + Файл.ПолучитьСтроку(1), "") + " ПустойТекстовыйФайл " + (Файл.КоличествоСтрок() = 0 Или Файл.КоличествоСтрок() > 0 И ПустаяСтрока(СокрЛП(Файл.ПолучитьСтроку(1)))), СтатусСообщения.Информация); Возврат Файл.КоличествоСтрок() = 0 Или Файл.КоличествоСтрок() > 0 И ПустаяСтрока(СокрЛП(Файл.ПолучитьСтроку(1))); КонецФункции // ПустойТекстовыйФайл() Вроде все работало, но сегодня функция ПустойТекстовыйФайл(ИмяФайла) для пустого файла стала выдавать строку: п»ї (закомментирована)!? Вариант v8: Как создать пустой текстовый файл из 1С закомментировал, свой написал все равно тот же результат. Не пойму: в чем причина? |
|||
1
ДенисЧ
19.02.21
✎
11:23
|
Так у тебя уникод заработал внезапно
|
|||
2
Garykom
гуру
19.02.21
✎
11:30
|
(0) погугли BOM
|
|||
3
Mikhail Volkov
19.02.21
✎
11:46
|
(1) п»ї - уникод? Как его выключить, или не учитывался? Блокнотом их (символов) не вижу.
|
|||
4
ДенисЧ
19.02.21
✎
11:48
|
(3) Это BOM - Byte Order Mark. Отличительный признак уникодовых текстов
|
|||
5
GANR
19.02.21
✎
11:50
|
(0) легко
|
|||
6
Галахад
гуру
19.02.21
✎
11:56
|
Тут скорее непонятно зачем в этот файл вообще чего-то писать.
Если нужна дата создания, её же можно прочитать, ну или глазами посмотреть. |
|||
7
Mikhail Volkov
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) А потом кто-нибудь в файл заглянет и телегу напишет "программа матом кроет..."
|
|||
11
acht
19.02.21
✎
13:03
|
(10)
ИмяФайла = ПолучитьИмяВременногоФайла(); Запись = Новый ЗаписьТекста(ИмяФайла, "windows-1251"); Запись.Записать("его"); Запись.Закрыть(); Чтение = Новый ЧтениеТекста(ИмяФайла, "cp866"); Сообщить(Чтение.Прочитать()); Чтение.Закрыть(); УдалитьФайлы(ИмяФайла); |
|||
12
Kassern
19.02.21
✎
13:12
|
(0) сдается мне, что это все для решения проблемы с бекапами)) Ну раз пошли таким тернистым путем, то зачем еще усложнять?
Если вам файл нужен лишь как флаг, то и работайте с ним как с флагом, зачем писать что-то внутрь? Просто выполняете какое-то событие, по результату которого создается файл в определенном месте с определенным именеи Далее, просто проверяете на существование файла, если он есть значит что-то делаем и удаляем файл иначе ждем пока появится |
|||
13
Mikhail Volkov
19.02.21
✎
14:32
|
(12) Да, первоначально этот файл (пустой или нет) использовался как признак есть кто в базе, или нет: при входе пользователя что-то пишется в него, при выходе последнего пользователя он очищается. Не нашел метода определить, есть ли пользователи в базе как для версии 7.7 как из одной базы 1С проверить есть ли кто в другой Но после dt-выгрузку запускаю bat-файлом непосредственно из 1С по завершению работы последнего пользователя.
Текстовый файл обязательно имеет хотя бы одну строку (пустую или нет), можно не писать условие: Файл.КоличествоСтрок() = 0 Или Файл.КоличествоСтрок() > 0 И... для проверки пустой о или нет? |
|||
14
Garykom
гуру
19.02.21
✎
14:39
|
(13) мдя
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |