Code Climate Gem Version

English version of README is here

AssLauncher

Gem AssLauncher - это обертка поверх платформы 1С:Предприятие v8 написанная на языке Ruby.

Цель AssLauncher - дать в руки "1С программистам" очень мощный, гибкий, простой и лаконичный язык Ruby для того, чтобы их работа стала приятнее и продуктивнее. Наслаждайтесь вместе с Ruby :)

Введение в проблему

Те кто писал скрипты на cmd знают какое это унылое занятие. Те кто писал скрипты на cmd для запуска платформы 1С, с той или иной целью, знают, что это занятие еще более унылое чем первое. И практически никто, кто писал такие скрипты, не пытался закладывать в них требование переносимости между машинами ибо "Хрена тут переносить? Надо писать другой скрипт для другой машины ведь на то он и скрипт." Однако когда зоопарк разрастается такой подход становится слишком дорогим.

Назначение

AssLauncher это библиотека предоставляющая базовый набор абстракций для удобного и надежного доступа к платформе 1С из языка Ruby. AssLauncher берет на себя разрешение путей, поиск исполняемых файлов платформы 1С и прочую рутину без которой сложно создавать надежное и переносимое между системами ПО.

Эти абстракции можно разделить на две группы. Первая группа предназначена для запуска исполняемых файлов платформы 1С:Предприятие в различных вариантах работы с различными наборами параметров.

Вторая группа предназначена для доступа к 1С рантайму и кластеру серверов 1С по средствам OLE(Com) серверов предоставляемых платформой 1С.

Область применения

В общем случае это создание программ на Ruby которые делают некоторые полезные штуки с приложениями 1С. На пример:

  • скрипты автоматизации административных задач сопровождения 1С приложений
  • вынос части бизнес/интеграционной логики из 1С приложения на строну Ruby
  • утилиты автоматизации процесса разработки 1С приложений
  • создание автоматизированных тестов тестирующих 1С приложения

В настоящее время на базе AssLauncher разрабатывается набор библиотек имеющих общую идею имя которой Ruby Powered Workflow

Зависимости

AssLauncher проектировался как кросс-платформенный инструмент. Однако, та часть AssLauncher, которая относится к доступу к платформе 1С через OLE(Com) сервер, будет работать только в ОС Windows. Подробности про использование OLE фичи AssLauncher и связанные с этим проблемы описаны в соответствующем разделе.

Рекомендуемое окружение:

  • OC Widows старше Windows XP
  • UNIX окружение cygwin. Используйте 32-х разрядный вариант установки cygwin setup-x86.exe
  • установленный в cygwin 32-х разрядный Ruby версии старше 2.0

Использование

Основной вариант использования AssLauncher это набор классов.

Однако с версии 0.3.0, AssLauncher в дополнение к набору классов, предоставляет консольную утилиту ass-launcher которая имеет следующие фичи:

  • создание новых экземпляров приложений 1С известных как "информационная база"
  • запуск платформы 1С в различных её вариантах таких как thick/thin/web клиенты и designer он же конфигуратор
  • показывает справку по CLI параметрам платформы 1С в различных её вариантах таких как thick/thin/web клиенты и designer он же конфигуратор
  • и кое-что еще см. ass-launcher --help

Подключение к проекту

Стандартный способ с использованием менеджера зависимостей bundler:

  1. добавить в Gemfile следующую строку:
gem 'ass_launcher'
  1. запустить установку:
$ bundle

Установка в систему

Стандартный способ установки gem-а:

$ gem install ass_launcher

После установки в gem-а в систему станет доступна утилита ass-launcer

$ ass-launcher --help

Базовый Api

Базовый Api AssLauncher выделен в модуль AssLauncher::Api. Используйте этот модуль как mixin. Документация по AssLauncher::Api

Быстрый пример

Для примера предлагается скрипт который выполняет дамп приложения (информационной базы).

развернуть...

```ruby require 'ass_launcher' # Модуль предоставляет общий Api AssLauncher include AssLauncher::Api def main(dupm_path) # Получаем обертку для толстого клиента версии 8.3.8.+ thick_client = thicks('~> 8.3.8.0').last # Если AssLauncher не смог найти исполняемый файл метод thicks вернет # пустой массив, а пустой_массив.last вернет nil fail 'Установка платформы 1С v8.3.8 не найдена'\ ' выполните `ass-launcher env` для просмотра установленных' ' версий платформы 1С' if thick_client.nil? # Создаем объект для запуска толстого клиента в режиме # "конфигуратора" с необходимыми параметрами запуска: # - _S - путь к серверной ИБ - параметр запуска /S # - dumpIB dump_path - выполнение пакетной команды - параметр /DumpIB designer = thick_client.command :designer do _S 'enterprse_server/application_name' dumpIB dupm_path end # Запускам команду на исполнение и ждем завершения designer.run.wait # Проверяем результат. Если работа конфигуратора завершится с ошибкой # verify! кинет исключение designer.process_holder.result.verify! end main ARGV[0] ```

Больше примеров можно найти в каталогах examples/ и examples/troubles

1С:Предприятие x86_64 для Windows

С версии 8.3.9 1С выпустила x86_64 дистрибутив платформы для Windows. Для выбора архитектуры платформы AssLauncher::Enterprise::BinaryWrapper имеет свойсво arch по которому можно фильтровать массив найденных установок платформы 1С. Однако для удобства в модуле AssLauncher::Api реализовано несколько хелперов с суфиксами *_i386 и *_x86_64 котрые возвращают уже отфильтрованный по архитектуре массив.

Для inproc OLE сервера 1С v83.ComConnector, файл comcntr.dll, архитектура бинарного файла сервера выбирается автоматически в зависимости от архитектуры Ruby.

По умолчанию, использование x86_64 OLE сервера 1С, запрещено (из за проблем описанных ниже). Для принудительного использования x86_64 OLE сервера 1С установите флаг use_x86_64_ole конфига AssLauncher:

  AssLauncher.configure do |conf|
    conf.use_x86_64_ole = true
  end