Giter VIP home page Giter VIP logo

ass_ole-app_extension's Introduction

Gem Version

AssOle::AppExtension

Gem for working with 1C:Enterprise ConfigurationExtension. Provides features for hot plug a ConfigurationExtension to 1C:Enterprise application instance (aka infobase) and some more.

Installation

Add this line to your application's Gemfile:

gem 'ass_ole-app_extension'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ass_ole-app_extension

Usage

  1. Describe your extension
require 'ass_ole/app_extension'

class FooExtension < AssOle::AppExtension::Abstract::Extension

  VERSION = '1.1.1'.freeze

  def path
    File.expand_path '../foo_extension.cfe', __FILE__
  end

  # Override abstract method
  # must returns WIN32OLE object(1C extension BinaryData)'
  def data
    newObject('BinaryData', real_win_path(path))
  end

  # Override abstract method
  # must returns `Gem::Requirement` 1C platform version requirement
  def platform_require
    Gem::Requirement.new '~> 8.3.10'
  end

  # Override abstract method
  # must returns `Hash` :1c_app_name => (Gem::Requirement|String '~> 1.2.4')
  # or nil for independent extension
  def app_requirements
    {Accounting: '~> 3.0.56',
     AccountingCorp: '~> 3.0.56'}
  end

  # Override abstract method
  # must returns extension name
  def name
    'FooExtension'
  end

  # Override abstract method
  # must returns extension version
  def version
    VERSION
  end
end
  1. Plug extension
require 'ass_maintainer/info_base'

# Describe 1C application instance
ib = AssMaintainer::InfoBase.new('app_name', 'File="path"')

extension = AssOle::AppExtension.plug(ib, FooExtension, 'safe profile name')

extension.plugged? # => true
  1. Or explore infobase extensions with AssOle::AppExtension::Spy
require 'ass_maintainer/info_base'

# Describe 1C application instance
ib = AssMaintainer::InfoBase.new('app_name', 'File="path"')

# Get all extensions and check all is plugged
AssOle::AppExtension::Spy.explore(ib).each do |spy|
  logger.error "#{spy.name} isn't plugged because:\n - "\
    "#{spy.apply_errors.map(&:Description).join(' - ')}"\
    unless spy.plugged?
end
  1. Convert xml extension source to .cfe binary file
src = AssOle::AppExtension::Src::Xml.new('foo_ext/xml.src', '~> 8.3.9')
src.to_binary('foo_ext.cfe') #=> 'foo_ext.cfe'
  1. Convert .cfe extension binary file to xml files
src = AssOle::AppExtension::Src::Cfe.new('foo_ext.cfe', '~> 8.3.9')
src.to_xml('foo_ext/xml.src') #=> 'foo_ext/xml.src'

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.