EvilBeaver / OneScript

Исполняющая среда скриптов на языке 1С
http://oscript.io
Mozilla Public License 2.0
479 stars 107 forks source link

Сообщить(ИнформацияОСценарии.Источник) в Testapp возвращает <string> вместо пути #160

Closed EvilBeaver closed 8 years ago

EvilBeaver commented 9 years ago

Originally reported by: Vladimir Skvortsov (Bitbucket: viskvortsov, GitHub: viskvortsov)


День добрый.

Собственно, в теме все обозначено. В консоле все выводится верно.


EvilBeaver commented 9 years ago

Original comment by EvilBeaver (Bitbucket: EvilBeaver, GitHub: EvilBeaver):


Зарегистрировал отдельную задачу #163

EvilBeaver commented 9 years ago

Original comment by Sergey Batanov (Bitbucket: dmpas, GitHub: dmpas):


В поставке не нужен, согласен. Но вот именно что движок отлаживать - крайне нужная штука. Я б туда хотя бы горячие клавиши бы допилил и запоминалку предыдущего файла/текста, чтобы не открывать каждый раз. А под шумок заодно можно и этот источник подправить.

EvilBeaver commented 9 years ago

Original comment by EvilBeaver (Bitbucket: EvilBeaver, GitHub: EvilBeaver):


Я-то вообще подумывал его выпилить совсем. Он только для отладки движка и используется. В дистрибутиве он, пожалуй и не нужен.

EvilBeaver commented 9 years ago

Original comment by Sergey Batanov (Bitbucket: dmpas, GitHub: dmpas):


Чисто подсознательно, если я делаю Файл-Открыть, то в источнике ожидаю увидеть именно этот файл :) Вообще, я согласен с @viskvortsov , TestApp не мешало бы чуть-чуть подработать. В отладке он удобнее, когда надо в самом движке ковыряться.

EvilBeaver commented 9 years ago

Original comment by EvilBeaver (Bitbucket: EvilBeaver, GitHub: EvilBeaver):


@viskvortsov, какое поведение, все-таки, на ваш взгляд, должно быть у свойства ТекущийСценарий().Источник при работе внутри TestApp?

EvilBeaver commented 9 years ago

Original comment by EvilBeaver (Bitbucket: EvilBeaver, GitHub: EvilBeaver):


Дело в том, что это свойство не случайно названо "Источник". Если бы это всегда был путь к файлу, то оно так бы и называлось "Файл", "Путь" или как-то так. Движок может выполнять код, который не обязательно взялся из файла.

В TestApp как раз такой случай - код берется не из файла, а вбивается в окно. Я не придумал ничего лучше, как просто писать для такого источника. Это наверное не самое удачное решение, но другого я не придумал.

В WIKI написано:

Путь к файлу сценария, если выполняется сценарий из файла. Для всех прочих сценариев возвращаемое значение определяется хост-приложением.

Пожалуй, это действительно, звучит непонятно. "Источник определяется хост-приложением". Для консольного oscript.exe это будет путь к файлу, т.к. он выполняет код из файлов. Для TestApp.exe это будет string, т.к. там не всегда может быть файл. Я попробую перефразировать это предложение на вики, возможно станет проще.

Ну и еще один момент: все-таки TestApp - не задумывался, как редактор для приложений сложнее чем "Hello World". Основное ее назначение - это изучение байт-кода, генерируемого компилятором (кнопка Compile). Даже текстовый редактор в TestApp - очень примитивный и не предназначен для набора большого количества кода. Если нужно писать какую-то реальную задачу, то нужно сразу брать Notepad++ и тестировать OneScript в штатном "консольном" режиме, как написано вот в этой статье http://infostart.ru/public/327581/

Цикл "написал-запустил-посмотрел" в Notepad++ намного быстрее, чем в TestApp. И работает уже как задумано, "ТекущийСценарий().Источник" возвращает путь файлу.

EvilBeaver commented 9 years ago

Original comment by Vladimir Skvortsov (Bitbucket: viskvortsov, GitHub: viskvortsov):


Источник в TestApp мне потребовался в целях отладки. Так как я не знаю до конца механизмов работа oscript, то проводил исследование согласно wiki проекта. Мне было необходимо получить путь до скрипта, чтоб вычислить в какой папке он находится. Поэтому, когда он выдал мне меня это смутило в результате чего я потерял время на проработку других вариантов решения задачи. И наткнулся на то, что он все-таки нормально отрабатывает случайно.

Мне кажется, что следует указать такую особенность поведения здесь: https://bitbucket.org/EvilBeaver/1script/wiki/stdlib/ИнформацияОСценарии и можно этим ограничиться, если выводить в testapp это проблематично.

EvilBeaver commented 9 years ago

Original comment by EvilBeaver (Bitbucket: EvilBeaver, GitHub: EvilBeaver):


Дело в том, что TestApp выполняет именно строку, написанную в окне. Код в окне не привязан к файлу, и источник данного сценария действительно string. Так что здесь ошибки нет.

А для чего вам потребовался "Источник" в окне TestApp? Какую задачу вы решаете? Мы можем выработать более правильное поведение.