• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

unknown181538

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

Hryv

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

Hryv

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

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

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

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

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

vitfil

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

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

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

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

ЗЫ конечно этот вариант силно обходной, но зато точно рабочий
В чем я лично сомневаюсь... Как узнаете, что командный файл отработал уже? Нет, конечно, можно пойти по пути 1С - крутить пустой цикл, пока ждем нужного события, но я бы за такое руки отрывал.
 
H

Hryv

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

unknown181538

Код:
Шелл = Новый COMОбъект("Wscript.Shell");
АппДата = Шелл.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData");
 
H

Hryv

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

Hryv

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

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

1С ждет пока окно не закрыто
даже если она "висит" для команды set это не важно, она выполняется долю секунды
 
V

vitfil

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

Hryv

Проще обработать ситуацию что файл еще не создан
1 раз в миллиард лет юзер увидит сообщение об этом
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!