Yoksel: haxe1s ...
SourceForge.net Logo

Home Page | Изменения / НовыеКомментарии / Справка / Помочь проекту | Вход:  Пароль:  

Haxe1s


Haxe1s – это проект, который делает возможным при разработке под 1С:Предприятие 8.х и 7.7 использование следующих возможностей:









Проект haxe1s представляет собой доработку компилятора языка Haxe. Особенностью компилятора языка Haxe является то, что при компиляции программы на языке Haxe получается программа на каком-то другом языке программирования. В настоящее время возможна компиляция в JavaScript, PHP, Flash, C++, C#, Java. Грубо говоря, компилятор Haxe состоит из фронтенда, который анализирует программу на Haxe и строит ее внутреннее представление, удобное для анализа, и бэкенда, который получает внутреннее представление программы и генерирует конечный код. haxe1s добавляет к компилятору бэкенд для генерации кода для 1С 7.7 и 8.х.

О языке Haxe


Документация по языку Haxe находится здесь: http://haxe.org/doc
В частности подраздел по возможностям языка: http://haxe.org/ref


На сайте иногда доступен перевод на русский язык – внизу страницы есть выбор языка – значки с флагами разных стран.


Так же есть русский сайт, посвященный haxe: http://haxe.ru/

Ссылки для скачивания

Проект haxe1s на SourceForge: http://sourceforge.net/projects/haxe1s/
Скачать компилятор, вспомогательные инструменты и проекты-примеры можно по этой ссылке: http://sourceforge.net/projects/haxe1s/files/
В архиве есть переписанные на Haxe отчеты «Досье партнера» для УТ 11.1 для 1С 8.2 и «Остатки ТМЦ» для ТиС 9.2 для 1С 7.7.
Исходный код находится здесь: http://sourceforge.net/p/haxe1s/code/ci/default/tree/

Ключи компилятора

Основная справка по ключам находится здесь: http://haxe.org/doc/compiler
Проект haxe1s добавляет следующие дополнительные ключи:


Компиляцию необходимо выполнять так же с ключом --dead-code-elimination. Дело в том, что стандартная библиотека была получена копированием библиотеки JavaScript и не совсем доделана и без этого ключа теоретически возможна компиляция, чего не надо.

Статус проекта

Проект находится в стадии «бета» и не факт, что будет сильно дорабатываться. Он был создан для личного использования и свои функции уже выполняет достаточно хорошо. Выкладывается исключительно в надежде, что проект будет полезен еще кому-нибудь.

Об использовании в 1С

В случае с 1С 8.х предполагается, что полученный при компиляции модуль будет использоваться как модуль какого-нибудь объекта: модуль документа, отчета или обработки. При этом экспортируются статические публичные методы классов. Например, для класса

Функция doWork будет экспортироваться, а someMethod нет. При этом извне функцию doWork можно вызывать по имени “Example_doWork”. Т.е. «имя класса», «подчеркивание», «имя метода».
При этом все экспортируемые методы необходимо объявлять с тегом @:keep. Например @:keep public static function doWork () {} Это связано с работой ключа --dead-code-elimination. При его использовании компилятор вырезает весь «неиспользуемый» код. У компилятора нет возможности узнать, что данный статический метод используется для вызовов извне и он его удалит. Чтобы исключить удаление и нужен тег @:keep.


В случае использовании с 1С 7.7 предполагается, что для обработки событий формы будут использоваться статические публичные методы какого-нибудь класса/классов. Их так же надо объявлять с тегом @:keep. Имена методов генерируются так же, как в 8.х. Для обработки ряда событий, для которых требуются «предопределенные» процедуры потребуется задействовать ключ компилятора -gen1s_include_file. Например, чтобы обработать событие «ПриОткрытии» понадобится включить в конечный модуль примерно такой текст:


Примеры использования лучше смотреть в файле, доступном для скачивания на SourceForge.net.

Среды разработки

Лучше всего разработку вести с использование FlashDevelop: http://www.flashdevelop.org/
В этой среде при создании Haxe-проекта, к сожалению, не получится выбрать 1С 7.7 или 8.х, поэтому придется создавать обычный “Empty project”. Проект настраиваем так, чтобы в post-build step запускался наш cmd-файл для сборки. При редактировании hx-файла будет доступна подсветка кода, дерево классов и методов текущего файла и небольшие возможности автодополнения. В основном, среда может выдать подсказки только по классам текущего файла. Иногда по классам другого файла, если этот файл открыт в соседней вкладке. При ошибках во время сборки будет возможность быстро перейти к строке с ошибкой, т.к. среда понимает формат вывода компилятора.


Как вариант можно использовать Eclipse с плагином eclihx. Проекты Haxe в этом случае собираются при помощи hxml-файла, который можно отредактировать и, в частности, указать там наши, одинэсные, платформы. При этом плагин использует возможности компилятора для выдачи подсказок. Поэтому, если все настроено верно, то подсказки будут выдавать очень хорошо – гораздо лучше, чем у FlashDevelop. Проблемы плагина в том, что нет дерева классов и методов. Поэтому, когда объем когда переваливает за 1000 строк, работать с hx-файлами становится неудобно.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]