Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Проблемы с FSO (http://forums.kuban.ru/f1040/problemy_s_fso-7567723.html)

USSR 01.03.2016 06:10

Проблемы с FSO
 
Какие то неожиданные и непонятные проблемы с FSO. Формирую файл html, потом в другой проверяю его сушествование FSO.FileExists, упорно выдает "0" - файла нет. Начинаю юзать отладчик - возвращает -1 (это как я понимаю = true) Аналогичный трабл с FSO.GetFile, собственно из за ошибки в нем и стал проверять существование файла. В отладчике работает, без отладчика - посылает меня.Файл в каталоге есть, прекрасно открывается. До этого маялся с примитивным копированием и удалением файла, аналогичные косяки.
Винда -7, x64, 1C - 7.7
Может просто весна ?

Шухер 01.03.2016 08:38

Может из за пробелов в имени или пути к файлу?

VZ 01.03.2016 09:09

0-USSR > "[em]FSO.FileExists[/em]" - СОМ-вызов FSO, или к "семерошному" ФС?
У меня с ФС были неприятности из-за длины названия.

USSR 01.03.2016 10:14

(2)FSO.FileExists
(1)пробелов нет
Ситуация странная.
1 - в отладчике все работает
2 - Файлы записываются ADODDB Stream (это веб страница)
Если записать, а потом другой обработкой читать (или этой же но в закомментарить записб файлов), то все нормально, а вот если сразу после записи проблемы
Записывается так:
олеАДО.SaveToFile(ИмяВремФайла, 2);
олеАДО.Close();

Шухер 01.03.2016 10:31

[quote=USSR;41538253]а вот если сразу после записи проблемы[/quote]
Похоже записывается только в виртуале, а физическая запись (чтобы её можно прочитать с диска) происходит уже позже, при выходе из процедуры к примеру.
Не помнишь фишку? - В фоксе что-то похожее происходило, запись делаешь в таблицу, а она не обновляется, и приходилось делать какую-то промежуточную манипуляцию, типа команды brow/list без вывода на экран, тогда все появлялось и читалось. Как-то так, сейчас уже не помню в подробностях.

Шухер 01.03.2016 10:37

[quote=USSR;41537143]В отладчике работает, без отладчика - посылает меня.[/quote]
Отладчик как раз и выступает в роли промежуточного манипулятора, заставляющего процедуру сделать физическую запись на диск.

USSR 01.03.2016 10:54

(5) ну так как сделать ее (запись на диск) без отладчика ?)) Так то я тоже уловил закономерность

Шухер 01.03.2016 11:06

(6) хз :)
может между записью и чтением попробовать еще сделать запись пустого файла в темп, или выполнить типа форма.обновить.
Доставай бубен :)

USSR 01.03.2016 11:19

(7)был бы бубен - достал бы ) Обидно, что все куски по отдельности отладил, а все вместе не работает. Какие то то необычные файлв записывает этот самый ADODDB Stream
Есть советы альтернативные по скачиванию из 7.7 web странички в файл? свой код приведу (взят с Мисты), он работает, но вот ...)

Шухер 01.03.2016 11:52

Кстати, про необычные файлы, а код работает с другими файлами, не html? В Тотал фтп клиент эти сохраненные странички не может загрузить на хостинг, пишет ошибка. Думал на имя файла ругается, сохранил с именем 123.html - нифига не помогает, ошибка и всё. Другие файлы грузит, а эти какие-то необычные :)
Интересно бы разодраться, что в них необычного.

USSR 01.03.2016 12:18

(9)да я с FSО c 13 года. как Высоцкий с конем. Тут отладил сохранение web странички в файл. перекодировку в 1251 (Romeх-у спасибо), самопальный парсинг странички закупки и страничек извещения и заказчика, а все вместе - Вася. И именно на файловых процедурах. Если ничего не записывать, а натравить обработку на ранее созданные ей и отвергнутые ей же файлы, то все прекрасно
Имена очень простые - номер закупки + ".html"

Шухер 01.03.2016 12:31

Какие еще мысли ... может не успевает записать, антивирус отключить.

[quote=USSR;41539448]да я с FSО c 13 года.[/quote]
ага,- я все мели тут зна..ю ... - вот первая :)

Billi 01.03.2016 13:39

Поставь паузу между записью и чтением.

USSR 01.03.2016 15:09

ну причина действительно в паузе ) Только виноват не
ADODDB Stream, а ЗапуститьПриложение в котором запускал утилиту Ромикса по перекодировке файла из UTF-8 в 1251.
Поставил цикл и все работает. Но как то мне не нравится такое решение. Как на соплях

Billi 01.03.2016 15:17

13-USSR >Таймаут - это нормально.

Helen1986 01.03.2016 15:20

FlushBuffer или как там это в ФСО называется

USSR 01.03.2016 15:35

все равно еще не все заработало, но это уже другая песня )
(14)Просто как подобрать паузу, на одно машине ее достаточно, на другой будет мала

USSR 01.03.2016 15:37

(15)так тут ЗапуститьПриложение виновато. Страницы в UTF-8 и приходится их перекодировать, иначе не удалось мне нормально прочитать с помощью FSO. Как то неправильно это )

user1C 01.03.2016 15:43

[quote=USSR;41540955]а ЗапуститьПриложение в котором запускал утилиту Ромикса по перекодировке файла из UTF-8 в 1251.[/quote]
[url=http://forum.script-coding.com/viewtopic.php?id=997]WSH: пример конвертации текста из кодировки в кодировку[/url]

USSR 01.03.2016 15:53

(18)спасибо огромное )

USSR 01.03.2016 16:02

(18)это все отлично заработало) еще раз спасибо.
Со ссылками еще случается путаница, надо разбираться)
А я уж было утром в ступор впал, когда простые файловые операции отказались работать. Сразу мир вокруг становится такой неустойчивый ))

user1C 01.03.2016 16:04

(20)
))
можно и напрямую utf читать, вот примерчик на вбс:
Dim objStream, strData

Set objStream = CreateObject("ADODB.Stream")

objStream.CharSet = "utf-8"
objStream.Open
objStream.LoadFromFile("C:\Users\admin\Desktop\ArtistCG\folder.txt")

strData = objStream.ReadText()

objStream.Close
Set objStream = Nothing


Текущее время: 00:00. Часовой пояс GMT +3.