0.0
No commit activity in last 3 years
No release in over 3 years
Wrapper for 1C configuration updates service
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.10
>= 0
~> 10.0

Runtime

~> 2.6
~> 1.6.0
~> 1.1
 Project Readme

Build Status Inline docs Code Climate

AssUpdater

This gem make easy monitoring of release and to get 1C configuration's updates from service http://dounloads.v8.1c.ru. For read more about 1C configurations see http://v8.1c.ru

Installation

Add this line to your application's Gemfile:

gem 'ass_updater'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ass_updater

Usage

Monitoring release configuration's update

Write your script update_monitor.rb like this:

require 'ass_updater'

CONFIGS_ON_SUPPORT = ['HRM 3.0',
                      'Accounting 3.0',
                      'Accounting 2.0',
                      'AccountingKz 2.0'
                     ]
def tmplt_root
# Default path for windows:
  File.join ENV['APPDATA'].gsub('\\', '/'), '1c', '1cv8', 'tmplts'
# Or you can set other value
end

def secrets(conf_code_name)
  case conf_code_name
  when 'AccountingKz' then ['user_kz', 'pass_kz']
  else ['user','pass']
  end
end

def new_updates(updater)
  updater.update_history.all_versions.map do |v|
    max = updater.instaled_versions(tmplt_root).max ||\
          AssUpdater::AssVersion.zerro_version
    v if v > max
  end.compact
end

def send_mail(subject, message, attachments=nil)
  #FIXME puts your code
  puts "#{subject} #{message} #{attachments}"
end

def success_report(distrib)
  subject = '1C update monitor report'
  message = "Reseived update for '#{distrib.ass_updater.conf_code_name}' "\
    "version: #{distrib.version}"
  attachments = distrib.file_list.map do |file|
    file if file =~ /(.*readme.*|.*новое.*\.htm)/i
  end.compact
  [subject,message,attachments]
end

def error_report(e)
  subject = '1C update monitor report'
  message = "Error: #{e.to_s}"
  [subject, message]
end

CONFIGS_ON_SUPPORT.each do |i|
  conf_code_name, conf_redaction = *i.split(' ')
  updater = AssUpdater.new(conf_code_name,conf_redaction)
  begin
    updater.get_updates(*secrets(conf_code_name),
                        new_updates(updater),
                        tmplt_root) do |distrib|
      send_mail *success_report(distrib)
    end
  rescue Exception => e
    send_mail *error_report(e)
  end
end

and put string into crontab:

0 */6 * * * ruby your_path/update_monitor.rb

Get required upadates

If you whant get all updates for your 1C infobase from current version to last release:

require 'ass_updater'

updater = AssUpdater.new 'HRM', '3.0'

updater.get_updates('user',
                    'password',
                    updater.required_versions_for_update(@curen_version),
                    @tmplt_root) do |disrib|
  puts "Reseived update #{disrib.version}"
end

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/leoniv/ass_updater.