No commit activity in last 3 years
No release in over 3 years
Features for hot plug a ConfigurationExtension to 1C:Enterprise application instance (aka infobase) and some more
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.15
~> 5.0
>= 0
>= 0
~> 10.0

Runtime

 Project Readme

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