Скриптовый движок уже выбран?

14 views
Skip to first unread message

trdm

unread,
Dec 24, 2011, 12:56:17 PM12/24/11
to qbalance
Я вот тут просматриваю parrot.
http://www.parrot.org/
http://docs.parrot.org/parrot/latest/html/
И вполне себе его представляю как скриптовый движек для системы.
Можно имплементировать свой синтаксис и заюзать.
Например как http://winxed.org/
Есть ООП и дебугер.

С одним пока не разобрался, кирилицу он поддерживает?
Вроде бы да, но попытался модифициировать
.sub main
say "Hello world!"
say "Привет мир!" << ошибка: "Invalid character in ASCII string"
.end

Надо бы разобраться как сконфигурировать его на UTF-8 хотябы.

TI_Eugene

unread,
Dec 24, 2011, 1:39:46 PM12/24/11
to qbal...@googlegroups.com
Здесь полезно определиться - свой незалежный язык - или как.
И - 1С-совместимо - или как.
Если несовместимо - то смысла нет в велосипеде - лучше внедрить
питон/ecmascript.
Если совместимо - то не надо этого делать.

trdm

unread,
Dec 24, 2011, 2:28:29 PM12/24/11
to qbalance
У меня под 1С-ный ланг скриптов валом - от Intellisence отказываться
чета не хочется.
так что лично я предпочитаю сначала потужиться, а уже потом писать с
комфортом.
это не считая всяких лексеров-парсеров под 1С-ный язык.
питон - не мое.

TI_Eugene

unread,
Dec 24, 2011, 2:52:19 PM12/24/11
to qbal...@googlegroups.com
> У меня под 1С-ный ланг скриптов валом - от Intellisence отказываться чета не хочется.
> так что лично я предпочитаю сначала потужиться, а уже потом писать с комфортом.
> это не считая всяких лексеров-парсеров под 1С-ный язык. питон - не мое.

1. Язык 7.7 не стоит повторять- гиблая платформа. Очень дорого.
2. Язык 8ки повторяет питон примерно на 90%. IMHO, ессно.
3. смысл в своем языке есть только в том случае, если он _кардинально_
облегчит работу. /me не эксперт - но не вижу смысла рожать новый язык.

PS. это не троллинг. Это - выяснение истины.

trdm

unread,
Dec 24, 2011, 3:02:42 PM12/24/11
to qbalance
> 1. Язык 7.7 не стоит повторять- гиблая платформа. Очень дорого.
Бейсик он и в африке бейсик.
А "гиблая" - это совсем непонятный, но душещипательный всхлип. Не
более.

Vladimir

unread,
Dec 26, 2011, 12:42:17 AM12/26/11
to qbalance
On 24 дек, 22:39, TI_Eugene <ti.eug...@gmail.com> wrote:

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

Vladimir

unread,
Dec 26, 2011, 12:49:37 AM12/26/11
to qbalance
On 24 дек, 21:56, trdm <trdm...@gmail.com> wrote:
> Я вот тут просматриваю parrot.http://www.parrot.org/http://docs.parrot.org/parrot/latest/html/

> И вполне себе его представляю как скриптовый движек для системы.
> Можно имплементировать свой синтаксис и заюзать.
> Например какhttp://winxed.org/

> Есть ООП и дебугер.
>
> С одним пока не разобрался, кирилицу он поддерживает?
> Вроде бы да, но попытался модифициировать
> .sub main
>         say "Hello world!"
>         say "Привет мир!" << ошибка: "Invalid character in ASCII string"
> .end
>
> Надо бы разобраться как сконфигурировать его на UTF-8 хотябы.

Не вижу смысла пока использовать какой-либо другой скриптовый язык
вместо встроенного ECMAScript. Тут важнее проработанность объектной
модели и событий, в среде которых будет выполняться скрипт.

trdm

unread,
Dec 26, 2011, 2:07:01 AM12/26/11
to qbalance
> Не вижу смысла пока использовать какой-либо другой скриптовый язык
> вместо встроенного ECMAScript. Тут важнее проработанность объектной
> модели и событий, в среде которых будет выполняться скрипт.
Зависит от целей вообще-то.
Для меня написавшего не 1 мегабайт кода язык имеет огромное значение.
Обслуживаемые мною 1С-ные конфы не перестают расти и я уж не по
наслышке знаю,
сколько левого кода пишу из-за того, что язык не поддерживает
наследование или
динамическое создание контролов.
Слава богу, что для 1Сv7 ребята сделали ООП ( http://www.1cpp.ru/index.php/Main
)
но все равно этого мало. Старый код давит. Оверхед по объему ненужного
кода ~30-40%.
Вывод: не хочу хуже чем есть %)

Vladimir

unread,
Dec 26, 2011, 2:23:40 AM12/26/11
to qbalance
Тоже приходилось писать под 1С8. Неприятно поразило количество кода в
конфигурации. Фактически при наличии необходимых справочников и
регистров, но без кода, сама платформа вообще ничего не может. Я
стремлюсь к другому - при наличии необходимых справочников, плана
счетов и набора типовых проводок система уже должна работать. Скрипты
могут потребоваться только для тонкой настройки системы.

trdm

unread,
Dec 26, 2011, 3:18:54 AM12/26/11
to qbalance

Это сложная задача. Но в пределах 1-го уникального
ускоспециализированного
приложения она решается (наверное).
Меня скорее интересует среда для создания приложений, чем
узкоспециализированный стандалон.
Давно мечтаю о такой схеме расширения внутренних объектов:
Объект + скрипт.
Т.е. абстрактно: есть в системе такой объект "Документ" -
инкапсулируюзий
поведение документа.
Создается в скрипте так:
вДокум = создатьОбъект("Документ.РасходнаяНакладная");
вДокум.Метод();

У него несколько системных методов. а(); б(); с(); Метод();
в дереве метаданных присутствует узел:
"РасширенияСтандартныхОбъектов"->Документ.
который содержит модуль расширения.
Пишем в этом модуле:
Функция блаБлаБла() {
Возврат 1+2;
}

В метаданных виду документа "РасходнаяНакладная" выбираем предка
"РасширенияСтандартныхОбъектов"->Документ.
И опа:
можно вызвать
вДокум = создатьОбъект("Документ.РасходнаяНакладная");
вДокум.блаБлаБла();
Знаете сколько кода это бы съэкономило, если бы так можно было
расширить любой объект системы?
Знаете сколько хлама можно было-бы убрать из конфигурации? Ого-го.
Разделять системные методы (код которых написан на низкоуровневом
языке) и скриптовые нужно - обеспечит скорость работы.

Vladimir

unread,
Dec 26, 2011, 4:57:30 AM12/26/11
to qbalance
Не имеет смысла обсуждать вопрос в деталях, пока у Вас нет четкого
представления, как построена система. Вы смотрите на проблему глазами
программиста. Надо смотреть глазами бухгалтера. Ему пофиг на объекты,
их наследование и т.д. Он никогда с ними не будет иметь дела. Ему
ближе понятия проводок, дебет, кредит, сальдо и т.п.. Я хочу сказать,
что при построении системы нужно использовать понятийный аппарат
бухгалтера в первую очередь, а не программиста. Нужно сделать так,
чтобы задав набор проводок, бухгалтер получил нужную среду для работы
с определенным типом документов. Это можно сделать.

trdm

unread,
Dec 26, 2011, 5:49:37 AM12/26/11
to qbalance
On 26 дек, 13:57, Vladimir <MorozovVladi...@mail.ru> wrote:
> Не имеет смысла обсуждать вопрос в деталях, пока у Вас нет четкого
> представления, как построена система. Вы смотрите на проблему глазами
> программиста. Надо смотреть глазами бухгалтера.

Я бухгалтер-программист по специальности. :)
Обладаю правом смотреть под любым углом :)))

Message has been deleted

trdm

unread,
Dec 26, 2011, 6:10:03 AM12/26/11
to qbalance
On 26 дек, 09:42, Vladimir <MorozovVladi...@mail.ru> wrote:
> Язык будет ECMAscript. Вообще использование встроенного языка нужно
> свести к минимуму.

проверку ИНН и КПП у в справочнике "контрагенты" куда вставишь?
В движек?

==============================================================================
// проверкаИНН( псСтрокаПлохо ) © trdm 2011
Процедура проверкаИНН( псСтрокаПлохо )
// http://www.-------.ru/bugtrack/view.php?id=2021
Если (ВидКонтрагента = Перечисление.ВидыКонтрагентов.Организация) ИЛИ
(ВидКонтрагента = Перечисление.ВидыКонтрагентов.ОрганизацияБезОПФ)
Тогда
вИНН = СокрЛП(ИНН_отдельно);
вИННЧ = глТолькоЧисла(вИНН);
Если вИННЧ <> вИНН Тогда
псСтрокаПлохо = глДобавитьКСтроке(псСтрокаПлохо,"Неправильный
ИНН у клиента (только числа)");
КонецЕсли;
вИННДлина = СтрДлина(вИНН);
Если (вИННДлина = 0) ИЛИ (вИННДлина = 10) Тогда
Иначе
псСтрокаПлохо = глДобавитьКСтроке(псСтрокаПлохо,"Неправильный
ИНН у клиента (10 симв.)");
КонецЕсли;
вКПП = СокрЛП(КПП_отдельно);
вКППЧ = глТолькоЧисла(вКПП);
Если вКППЧ <> вКПП Тогда
псСтрокаПлохо = глДобавитьКСтроке(псСтрокаПлохо,"Неправильный
КПП у клиента (только числа)");
КонецЕсли;
вКППДлина = СтрДлина(вКПП);
Если (вКППДлина = 0) ИЛИ (вКППДлина = 9) Тогда
Иначе
псСтрокаПлохо = глДобавитьКСтроке(псСтрокаПлохо,"Неправильный
КПП у клиента (9симв.)");
КонецЕсли;
ИначеЕсли (ВидКонтрагента =
Перечисление.ВидыКонтрагентов.ЧастноеЛицо) ИЛИ (ВидКонтрагента =
Перечисление.ВидыКонтрагентов.Предприниматель) Тогда
вИНН = СокрЛП(ИНН_отдельно);
вИНН = глТолькоЧисла(вИНН);
Если вИННЧ <> вИНН Тогда
псСтрокаПлохо = глДобавитьКСтроке(псСтрокаПлохо,"Неправильный
ИНН у клиента (только числа)");
КонецЕсли;
вИННДлина = СтрДлина(вИНН);
Если (вИННДлина = 0) ИЛИ (вИННДлина = 12) Тогда
Иначе
псСтрокаПлохо = глДобавитьКСтроке(псСтрокаПлохо,"Неправильный
ИНН у клиента (12 симв.)");
КонецЕсли;
вКПП = СокрЛП(КПП_отдельно);
вКПП = глТолькоЧисла(вКПП);
вКППДлина = СтрДлина(вКПП);
Если вКППДлина = 0 Тогда
Иначе
псСтрокаПлохо = глДобавитьКСтроке(псСтрокаПлохо,"Неправильный
КПП у клиента (0 симв.)");
КонецЕсли;
КонецЕсли;
КонецПроцедуры // проверкаИНН()

Vladimir

unread,
Dec 26, 2011, 6:11:42 AM12/26/11
to qbalance

Ну тогда легче.

Vladimir

unread,
Dec 26, 2011, 6:16:40 AM12/26/11
to qbalance
On 26 дек, 15:10, trdm <trdm...@gmail.com> wrote:
> On 26 дек, 09:42, Vladimir <MorozovVladi...@mail.ru> wrote:
>
> > Язык будет ECMAscript. Вообще использование встроенного языка нужно
> > свести к минимуму.
>
> проверку ИНН и КПП у в справочнике "контрагенты" куда вставишь?
> В движек?
>

В программе будут 3 разновидности скриптового движка, которые
наследуются от одного базового: движок для работы с документами, со
справочниками и с отчетами. В данном случае проверку ИНН и КПП я бы
вставил как функцию движка для справочника. Он бы вызывался при
проверке валидности соответствующих полей справочника "Контрагенты".

Vladimir

unread,
Dec 26, 2011, 6:19:01 AM12/26/11
to qbalance
Добавлю, что реализация функции проверки ИНН была бы скрыта от
пользователя (внедренца). Если не смотреть исходники.
Reply all
Reply to author
Forward
0 new messages