EvilBeaver / OneScript

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

Функция "ВвестиСтроку" не работает в демо-приложении ... #317

Closed bbslipers closed 8 years ago

bbslipers commented 8 years ago

Выдается сообщение "Строка введена", реального же ожидания ввода строки не происходит. Это доставляет огромное неудобство при отладке скриптов.

EvilBeaver commented 8 years ago

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

bbslipers commented 8 years ago

Пока не подскажите как передать указатель на функцию (использую WSO) в обработчик события button.OnClick?

Функция CloseFormHandler(Sender) Экспорт
Возврат Sender.Form.Close(); КонецФункции

wso = Новый COMObject("Scripting.WindowSystemObject"); wso.EnableVisualStyles = true;

form = wso.CreateForm(0,0,0,0); form.ClientWidth = 150; form.ClientHeight = 120; form.CenterControl();

input = form.CreateEdit(10,10,100,25); button = form.CreateButton(10,70,75,25,"Close"); button.OnClick = "CloseFormHandler";

form.Show(); wso.Run();

Script started: 08.08.2016 0:57:01 {Модуль C:\Users\Администратор\Desktop\1CScript\bin\test.os / Ошибка в строке: 15 / Внешнее исключение: Параметр задан неверно. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG))}
button.OnClick = "CloseFormHandler";

Error detected. Exit code = 1 Script completed: 08.08.2016 0:57:01 Duration: 00:00:00.0227158

ret-Phoenix commented 8 years ago

bbslipers , Если хочешь сделать GUI на 1script посмотри сюда: https://github.com/ret-Phoenix/oscript-simple-gui

EvilBeaver commented 8 years ago

@bbslipers я не знаком с WSO, поэтому не знаю ответ про обработчик. Правильный путь в GUI вам уже подсказали )

bbslipers commented 8 years ago

Пока использую такое решение: ActiveX

Регистрируем: regsvr32 InputDlg.dll

В скрипте:

Функция ВвестиЗначение(ЗаголовокОкна,ЗаголовокПоляВвода,ЗначениеПоУмолчанию) InputDlg = Новый COMObject("InputDlg.Dialog"); Возврат InputDlg.InputBox(ЗаголовокПоляВвода,ЗаголовокОкна,ЗначениеПоУмолчанию); КонецФункции

Сообщить(ВвестиЗначение("Заголовок окна","Заголовок поля ввода","Значение по умолчанию"));

bbslipers commented 8 years ago

Я понимаю, что TestApp "не для этого", но я ребенка учу процедурному программированию в 1С, и данное приложение как нельзя лучше подходит для этой задачи. Просто, быстро, понятно, ни чего не отвлекает (работа с объектами метаданных пока не нужна, а писать вполне работающие обучающие скрипты - одно удовольствие). Ввода строки реально не хватало.

ret-Phoenix commented 8 years ago

Поставь SublemeText. интерфейс минималистичен и удобен ) сам сижу на VSCode

EvilBeaver commented 8 years ago

Ну да. Есть же редакторы от @nixel2007. Я с телефона, коллеги, дайте ссылку, пожалуйста.

ret-Phoenix commented 8 years ago

https://github.com/xDrivenDevelopment/1c-syntax

bbslipers commented 8 years ago

SublemeText, EmEditor - прекрасные редакторы, и подсветка и подсказки, все это очень удобно для программистов давно и плотно работающих. Ребенку не нужен список всех методов после точки и многое еще что не нужно. В TestApp есть все, написал - выполнил - увидел результат или описание ошибки, автомат Калашникова: Заряд - Выстрел - Выброс - Заряд :)