ВК позволяет выполнять в среде 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. При этом значения таблиц типа "функция" становятся методами, а все остальные - свойствами.
ВК не требует регистрации в реестре.