Открытие файла

Тема в разделе "1C и всё что с ней связано", создана пользователем unknown181538, 5 окт 2010.

  1. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Код ( (Unknown Language)):
    ФСписка = "%APPDATA%\1C\1Cv81\ibases.v8i"
    Текст = Новый ТекстовыйДокумент;
    Текст.Прочитать(ФСписка);
    Пишет "файл не найден"
    Сам файл через командную строку открывается.
    Что тут не так, что делать, и кто виноват?
     
  2. Hryv

    Hryv Гость

    Думаю что Текст.Прочитать(ФСписка) не умеет подставлять значения переменных среды вместо их имен
     
  3. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Может быть есть процедура для замены?
     
  4. Hryv

    Hryv Гость

    У 8-ки может и есть, не знаю

    Могу предложить обходной вариант
    делаем bat файл с содержимым
    set > 1.txt
    где вместо 1.txt подставляем путь и имя файла, который потом будем открывать в 1С
    Далее из 1С:
    1. Запускаем наш bat файл
    2. Открываем наш 1.txt

    в нем найдем строку типа
    APPDATA=C:\...\Application Data

    дальше, думаю, понятно

    ЗЫ конечно этот вариант силно обходной, но зато точно рабочий
     
  5. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Идею понял.
     
  6. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    В чем я лично сомневаюсь... Как узнаете, что командный файл отработал уже? Нет, конечно, можно пойти по пути 1С - крутить пустой цикл, пока ждем нужного события, но я бы за такое руки отрывал.
     
  7. Hryv

    Hryv Гость

    Опять же, не знаю как в 8.х, а в 7.7 при использовании КомандаСистемы() этой проблемы не будет
    Кстати батник можно и не делать, а прям запускать КомандаСистемы("set > 1.txt")
     
  8. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Код ( (Unknown Language)):
    Шелл = Новый COMОбъект("Wscript.Shell");
    АппДата = Шелл.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData");
     
  9. Hryv

    Hryv Гость

    спору нет, так гораздо проще :lovecodeby:
     
  10. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Будет - предлагаю проверить
     
  11. Hryv

    Hryv Гость

    Проверил - нету

    Код (Text):
    Процедура Сформировать()
    КомандаСистемы("pause");
    Сообщить("ОК");
    КонецПроцедуры
    1С ждет пока окно не закрыто
    даже если она "висит" для команды set это не важно, она выполняется долю секунды
     
  12. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Hryv, есть желание узнать, до каких пор я могу зарезать идеи? Откуда уверенность, что даже после отработки команды системы файл все же был создан? И второе... Не стоит путать команду pause с созданием файла. Винда просто может еще не выставить флага о том, что файл свободен и доступен :(
    Для решения этой проблемы надо создавать временный файл, а потом его переименовывать. Вот тогда проблем не будет. Но все равно даже это не решает проблему с успешным завершением батника.
     
  13. Hryv

    Hryv Гость

    Проще обработать ситуацию что файл еще не создан
    1 раз в миллиард лет юзер увидит сообщение об этом
     
Загрузка...

Поделиться этой страницей