ВК позволяет выполнять в среде 1С код, написанный на языке
Lua.
Lua считается самым быстрым из интерпретируемых языков программирования.
Примитивы, заложенные в язык, позволяют писать в стиле ООП и ФП.
Для Lua написано огромное количество библиотек (
http://lua-users.org/wiki/LibrariesAndBindings)
Цитата:По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями, спроектирован с целью «не плодить сущности сверх необходимого». Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы объектно-ориентированного программирования с поддержкой прототипов (включая множественное наследование) легко реализуются с использованием метатаблиц, которые также позволяют перегрузку операций и т. п. Реализуемая модель ООП (как и в JavaScript) —
прототипная Цитата:Как и многие интерпретируемые языки программирования, реализация Lua имеет отдельно компилятор с исходного языка в исполняемый байт-код и
виртуальную машину для исполнения сгенерированного байт-кода. Причём байт-код — это не команды стековой машины, а команды некоего виртуального процессора с несколькими регистрами, что повышает эффективность исполнения. В стандартной виртуальной машине Lua используется распределение памяти со сборкой мусора (аналогично Java или .NET).
Для задач критичных по времени имеется
JIT компилятор Lua
LuaJIT.
ВК включает в себя библиотеки
LPeg и
LuaCOMВК Реализует один объект LuaRef.
LuaRef инкапсулирует виртуальную машину Lua.
Объект не имеет собственных свойств и методов, а предоставляет доступ к глобальным переменным и функциям Lua.
Возможна передача агрегатных типов 1с как аргументов для Lua-функций и значений для свойств.
Возможен вызов методов и доступ к свойствам агрегатных типов 1с из Lua.
При создании ВМ загружаются все стандартные библиотеки и переопределяются следующие глобальные функции:
- print - выводит текст в окно сообщений 1С.
- dofile - работает согласно документации, но переделана для запуска в безопасной среде
- dostring - выполняет код в переданной строке
- create1sobject - аналог ф-и СоздатьОбъект встроенного языка 1с
При доступе к свойствам и вызове функций из 1С, выполняются преобразования типов Lua в типы 1С:
- числа преобразуются в числа
- строки преобразуются в строки
- таблицы преобразуются в объекты LuaRef. При этом значения таблиц типа "функция" становятся методами, а все остальные - свойствами.
ВК не требует регистрации в реестре.
Скачать ВК можно тут:
http://code.google.com/p/v7lua/
Версия 1.0.1.0:- добавлена работа с типами 1С (вызов методов и установка свойств объектов 1С из скрипта)
Версия 1.0.1.1:Версия 1.0.1.2:- разрешено использование русских идентификаторов
- исправлен вылет при вызове функций Lua из других ВК.
- реализовано чтение/установка свойств и вызов методов групповых контекстов
Версия 1.0.1.3:- исправлено поведение ф-и print (выводился только последний аргумент)
- добавлена ф-я create1sobject - аналог ф-и СоздатьОбъект встроенного языка 1с.
- изменено сообщение вызывающему коду количества параметров ф-й:
теперь при вызове GetNParams возвращается количество параметров, полученное ранее в вызове IsOleContext из регистра ebx или 0
Версия 1.0.2.0:- minor bugfixes
- в компоненту включены библиотеки LPeg и LuaCOM
- COM-объекты теперь передаются из 1с в Lua через LuaCOM, минуя CValue, CBLContext и т.п.