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
- 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
- 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
- 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
- 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'
- 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