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
2025
2026
 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.