• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы unknown181538
  • Дата начала Дата начала
U

unknown181538

Код:
ФСписка = "%APPDATA%\1C\1Cv81\ibases.v8i"
Текст = Новый ТекстовыйДокумент; 
Текст.Прочитать(ФСписка);
Пишет "файл не найден"
Сам файл через командную строку открывается.
Что тут не так, что делать, и кто виноват?
 
Думаю что Текст.Прочитать(ФСписка) не умеет подставлять значения переменных среды вместо их имен
 
У 8-ки может и есть, не знаю

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

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

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

ЗЫ конечно этот вариант силно обходной, но зато точно рабочий
 
У 8-ки может и есть, не знаю

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

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

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

ЗЫ конечно этот вариант силно обходной, но зато точно рабочий
В чем я лично сомневаюсь... Как узнаете, что командный файл отработал уже? Нет, конечно, можно пойти по пути 1С - крутить пустой цикл, пока ждем нужного события, но я бы за такое руки отрывал.
 
Опять же, не знаю как в 8.х, а в 7.7 при использовании КомандаСистемы() этой проблемы не будет
Кстати батник можно и не делать, а прям запускать КомандаСистемы("set > 1.txt")
 
Код:
Шелл = Новый COMОбъект("Wscript.Shell");
АппДата = Шелл.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData");
 
спору нет, так гораздо проще :lovecodeby:
 
Проверил - нету

Код:
Процедура Сформировать()
КомандаСистемы("pause");
Сообщить("ОК");
КонецПроцедуры

1С ждет пока окно не закрыто
даже если она "висит" для команды set это не важно, она выполняется долю секунды
 
Hryv, есть желание узнать, до каких пор я могу зарезать идеи? Откуда уверенность, что даже после отработки команды системы файл все же был создан? И второе... Не стоит путать команду pause с созданием файла. Винда просто может еще не выставить флага о том, что файл свободен и доступен :(
Для решения этой проблемы надо создавать временный файл, а потом его переименовывать. Вот тогда проблем не будет. Но все равно даже это не решает проблему с успешным завершением батника.
 
Проще обработать ситуацию что файл еще не создан
1 раз в миллиард лет юзер увидит сообщение об этом
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab