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