├── rails ├── .keep ├── log │ └── .keep ├── app │ ├── mailers │ │ └── .keep │ ├── models │ │ ├── .keep │ │ └── concerns │ │ │ └── .keep │ ├── assets │ │ ├── images │ │ │ ├── .keep │ │ │ └── testpicture.jpeg │ │ ├── stylesheets │ │ │ ├── ones_soap.scss │ │ │ └── application.css │ │ └── javascripts │ │ │ ├── ones_soap.coffee │ │ │ └── application.js │ ├── controllers │ │ ├── concerns │ │ │ └── .keep │ │ ├── ones_soap_controller.rb │ │ └── application_controller.rb │ ├── helpers │ │ ├── ones_soap_helper.rb │ │ └── application_helper.rb │ └── views │ │ ├── ones_soap │ │ ├── testFiles.html.erb │ │ ├── testText.html.erb │ │ ├── testNumbers.html.erb │ │ └── testObjects.html.erb │ │ └── layouts │ │ └── application.html.erb ├── lib │ ├── assets │ │ └── .keep │ └── tasks │ │ └── .keep ├── test │ ├── models │ │ └── .keep │ ├── controllers │ │ ├── .keep │ │ └── ones_soap_controller_test.rb │ ├── fixtures │ │ └── .keep │ ├── helpers │ │ └── .keep │ ├── integration │ │ └── .keep │ ├── mailers │ │ └── .keep │ └── test_helper.rb ├── public │ ├── favicon.ico │ ├── testpicture.jpeg │ ├── robots.txt │ ├── 500.html │ ├── 422.html │ └── 404.html ├── vendor │ └── assets │ │ ├── javascripts │ │ └── .keep │ │ └── stylesheets │ │ └── .keep ├── bin │ ├── bundle │ ├── rake │ ├── rails │ ├── spring │ └── setup ├── config │ ├── boot.rb │ ├── initializers │ │ ├── cookies_serializer.rb │ │ ├── session_store.rb │ │ ├── mime_types.rb │ │ ├── filter_parameter_logging.rb │ │ ├── backtrace_silencers.rb │ │ ├── assets.rb │ │ ├── wrap_parameters.rb │ │ └── inflections.rb │ ├── environment.rb │ ├── database.yml │ ├── locales │ │ └── en.yml │ ├── secrets.yml │ ├── application.rb │ ├── environments │ │ ├── development.rb │ │ ├── test.rb │ │ └── production.rb │ └── routes.rb ├── config.ru ├── Rakefile ├── db │ └── seeds.rb ├── README.rdoc ├── Gemfile └── Gemfile.lock ├── .gitignore ├── 1c8 ├── OnecSoapClient.epf └── OnecDownloadFileByHttpGET.epf ├── _vendors ├── SOAPЗагрузкаКурсовВалютЦБР │ ├── README.txt │ ├── SOAPЗагрузкаКурсовВалютЦБР.epf │ └── article.htm ├── OnesSendReceiveFileWithREST.epf ├── OnecSoapRssAggregator │ └── RSSАгрегатор.epf └── onec_trash_code.txt ├── _screenshots ├── rais_server.png ├── chrome_wsdl_url.png ├── onec_settings.png ├── onec_file_upload.png └── onec_file_download.png └── README.md /rails/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/log/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/app/mailers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/app/models/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/lib/assets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/lib/tasks/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/test/models/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/test/controllers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/test/fixtures/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/test/helpers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/test/integration/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/test/mailers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/app/assets/images/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/app/models/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/app/controllers/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/vendor/assets/javascripts/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/vendor/assets/stylesheets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rails/app/helpers/ones_soap_helper.rb: -------------------------------------------------------------------------------- 1 | module OnesSoapHelper 2 | end 3 | -------------------------------------------------------------------------------- /rails/app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | end 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | !1c8/db/.keep 3 | 1c8/db/* 4 | rails/tmp/ 5 | rails/db/*.sqlite3 6 | rails/log/* -------------------------------------------------------------------------------- /1c8/OnecSoapClient.epf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/1c8/OnecSoapClient.epf -------------------------------------------------------------------------------- /_vendors/SOAPЗагрузкаКурсовВалютЦБР/README.txt: -------------------------------------------------------------------------------- 1 | Статья взята отсюда: 2 | http://habrahabr.ru/post/148658/ -------------------------------------------------------------------------------- /_screenshots/rais_server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/_screenshots/rais_server.png -------------------------------------------------------------------------------- /rails/public/testpicture.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/rails/public/testpicture.jpeg -------------------------------------------------------------------------------- /_screenshots/chrome_wsdl_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/_screenshots/chrome_wsdl_url.png -------------------------------------------------------------------------------- /_screenshots/onec_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/_screenshots/onec_settings.png -------------------------------------------------------------------------------- /1c8/OnecDownloadFileByHttpGET.epf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/1c8/OnecDownloadFileByHttpGET.epf -------------------------------------------------------------------------------- /_screenshots/onec_file_upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/_screenshots/onec_file_upload.png -------------------------------------------------------------------------------- /_screenshots/onec_file_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/_screenshots/onec_file_download.png -------------------------------------------------------------------------------- /rails/app/views/ones_soap/testFiles.html.erb: -------------------------------------------------------------------------------- 1 |

OnesSoap#testFiles

2 |

Find me in app/views/ones_soap/testFiles.html.erb

3 | -------------------------------------------------------------------------------- /rails/app/views/ones_soap/testText.html.erb: -------------------------------------------------------------------------------- 1 |

OnesSoap#testText

2 |

Find me in app/views/ones_soap/testText.html.erb

3 | -------------------------------------------------------------------------------- /rails/app/views/ones_soap/testNumbers.html.erb: -------------------------------------------------------------------------------- 1 |

OnesSoap#testNumbers

2 |

Find me in app/views/ones_soap/testNumbers.html.erb

3 | -------------------------------------------------------------------------------- /rails/app/views/ones_soap/testObjects.html.erb: -------------------------------------------------------------------------------- 1 |

OnesSoap#testObjects

2 |

Find me in app/views/ones_soap/testObjects.html.erb

3 | -------------------------------------------------------------------------------- /_vendors/OnesSendReceiveFileWithREST.epf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/_vendors/OnesSendReceiveFileWithREST.epf -------------------------------------------------------------------------------- /rails/app/assets/images/testpicture.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/rails/app/assets/images/testpicture.jpeg -------------------------------------------------------------------------------- /_vendors/OnecSoapRssAggregator/RSSАгрегатор.epf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/_vendors/OnecSoapRssAggregator/RSSАгрегатор.epf -------------------------------------------------------------------------------- /rails/bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /rails/config/boot.rb: -------------------------------------------------------------------------------- 1 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 2 | 3 | require 'bundler/setup' # Set up gems listed in the Gemfile. 4 | -------------------------------------------------------------------------------- /rails/config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require ::File.expand_path('../config/environment', __FILE__) 4 | run Rails.application 5 | -------------------------------------------------------------------------------- /rails/config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.action_dispatch.cookies_serializer = :json 4 | -------------------------------------------------------------------------------- /rails/config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.session_store :cookie_store, key: '_soapws_session' 4 | -------------------------------------------------------------------------------- /_vendors/SOAPЗагрузкаКурсовВалютЦБР/SOAPЗагрузкаКурсовВалютЦБР.epf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexKalinin/ws-soap-rails-1c/HEAD/_vendors/SOAPЗагрузкаКурсовВалютЦБР/SOAPЗагрузкаКурсовВалютЦБР.epf -------------------------------------------------------------------------------- /rails/config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require File.expand_path('../application', __FILE__) 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | -------------------------------------------------------------------------------- /rails/bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path('../spring', __FILE__) 4 | rescue LoadError 5 | end 6 | require_relative '../config/boot' 7 | require 'rake' 8 | Rake.application.run 9 | -------------------------------------------------------------------------------- /rails/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | -------------------------------------------------------------------------------- /rails/app/assets/stylesheets/ones_soap.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the OnesSoap controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | -------------------------------------------------------------------------------- /rails/public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /rails/config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /rails/app/assets/javascripts/ones_soap.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | -------------------------------------------------------------------------------- /rails/bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path('../spring', __FILE__) 4 | rescue LoadError 5 | end 6 | APP_PATH = File.expand_path('../../config/application', __FILE__) 7 | require_relative '../config/boot' 8 | require 'rails/commands' 9 | -------------------------------------------------------------------------------- /rails/Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require File.expand_path('../config/application', __FILE__) 5 | 6 | Rails.application.load_tasks 7 | -------------------------------------------------------------------------------- /rails/db/seeds.rb: -------------------------------------------------------------------------------- 1 | # This file should contain all the record creation needed to seed the database with its default values. 2 | # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). 3 | # 4 | # Examples: 5 | # 6 | # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) 7 | # Mayor.create(name: 'Emanuel', city: cities.first) 8 | -------------------------------------------------------------------------------- /rails/test/test_helper.rb: -------------------------------------------------------------------------------- 1 | ENV['RAILS_ENV'] ||= 'test' 2 | require File.expand_path('../../config/environment', __FILE__) 3 | require 'rails/test_help' 4 | 5 | class ActiveSupport::TestCase 6 | # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. 7 | fixtures :all 8 | 9 | # Add more helper methods to be used by all tests here... 10 | end 11 | -------------------------------------------------------------------------------- /rails/app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Soapws 5 | <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 6 | <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 7 | <%= csrf_meta_tags %> 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /rails/config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /rails/bin/spring: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # This file loads spring without using Bundler, in order to be fast. 4 | # It gets overwritten when you run the `spring binstub` command. 5 | 6 | unless defined?(Spring) 7 | require 'rubygems' 8 | require 'bundler' 9 | 10 | if (match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m)) 11 | Gem.paths = { 'GEM_PATH' => [Bundler.bundle_path.to_s, *Gem.path].uniq } 12 | gem 'spring', match[1] 13 | require 'spring/binstub' 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /rails/config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Add additional assets to the asset load path 7 | # Rails.application.config.assets.paths << Emoji.images_path 8 | 9 | # Precompile additional assets. 10 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 11 | # Rails.application.config.assets.precompile += %w( search.js ) 12 | -------------------------------------------------------------------------------- /rails/test/controllers/ones_soap_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class OnesSoapControllerTest < ActionController::TestCase 4 | test "should get testNumbers" do 5 | get :testNumbers 6 | assert_response :success 7 | end 8 | 9 | test "should get testText" do 10 | get :testText 11 | assert_response :success 12 | end 13 | 14 | test "should get testObjects" do 15 | get :testObjects 16 | assert_response :success 17 | end 18 | 19 | test "should get testFiles" do 20 | get :testFiles 21 | assert_response :success 22 | end 23 | 24 | end 25 | -------------------------------------------------------------------------------- /rails/config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] if respond_to?(:wrap_parameters) 9 | end 10 | 11 | # To enable root element in JSON for ActiveRecord objects. 12 | # ActiveSupport.on_load(:active_record) do 13 | # self.include_root_in_json = true 14 | # end 15 | -------------------------------------------------------------------------------- /rails/README.rdoc: -------------------------------------------------------------------------------- 1 | == README 2 | 3 | This README would normally document whatever steps are necessary to get the 4 | application up and running. 5 | 6 | Things you may want to cover: 7 | 8 | * Ruby version 9 | 10 | * System dependencies 11 | 12 | * Configuration 13 | 14 | * Database creation 15 | 16 | * Database initialization 17 | 18 | * How to run the test suite 19 | 20 | * Services (job queues, cache servers, search engines, etc.) 21 | 22 | * Deployment instructions 23 | 24 | * ... 25 | 26 | 27 | Please feel free to use a different markup language if you do not plan to run 28 | rake doc:app. 29 | -------------------------------------------------------------------------------- /rails/config/database.yml: -------------------------------------------------------------------------------- 1 | # SQLite version 3.x 2 | # gem install sqlite3 3 | # 4 | # Ensure the SQLite 3 gem is defined in your Gemfile 5 | # gem 'sqlite3' 6 | # 7 | default: &default 8 | adapter: sqlite3 9 | pool: 5 10 | timeout: 5000 11 | 12 | development: 13 | <<: *default 14 | database: db/development.sqlite3 15 | 16 | # Warning: The database defined as "test" will be erased and 17 | # re-generated from your development database when you run "rake". 18 | # Do not set this db to the same as development or production. 19 | test: 20 | <<: *default 21 | database: db/test.sqlite3 22 | 23 | production: 24 | <<: *default 25 | database: db/production.sqlite3 26 | -------------------------------------------------------------------------------- /rails/config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format. Inflections 4 | # are locale specific, and you may define rules for as many different 5 | # locales as you wish. All of these examples are active by default: 6 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 7 | # inflect.plural /^(ox)$/i, '\1en' 8 | # inflect.singular /^(ox)en/i, '\1' 9 | # inflect.irregular 'person', 'people' 10 | # inflect.uncountable %w( fish sheep ) 11 | # end 12 | 13 | # These inflection rules are supported but not enabled by default: 14 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 15 | # inflect.acronym 'RESTful' 16 | # end 17 | -------------------------------------------------------------------------------- /rails/config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Files in the config/locales directory are used for internationalization 2 | # and are automatically loaded by Rails. If you want to use locales other 3 | # than English, add the necessary files in this directory. 4 | # 5 | # To use the locales, use `I18n.t`: 6 | # 7 | # I18n.t 'hello' 8 | # 9 | # In views, this is aliased to just `t`: 10 | # 11 | # <%= t('hello') %> 12 | # 13 | # To use a different locale, set it with `I18n.locale`: 14 | # 15 | # I18n.locale = :es 16 | # 17 | # This would use the information in config/locales/es.yml. 18 | # 19 | # To learn more, please read the Rails Internationalization guide 20 | # available at http://guides.rubyonrails.org/i18n.html. 21 | 22 | en: 23 | hello: "Hello world" 24 | -------------------------------------------------------------------------------- /rails/app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into application.js, which will include all the files 2 | // listed below. 3 | // 4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 5 | // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 6 | // 7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8 | // compiled file. 9 | // 10 | // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 11 | // about supported directives. 12 | // 13 | //= require jquery 14 | //= require jquery_ujs 15 | //= require turbolinks 16 | //= require_tree . 17 | -------------------------------------------------------------------------------- /rails/app/assets/stylesheets/application.css: -------------------------------------------------------------------------------- 1 | /* 2 | * This is a manifest file that'll be compiled into application.css, which will include all the files 3 | * listed below. 4 | * 5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 6 | * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. 7 | * 8 | * You're free to add application-wide styles to this file and they'll appear at the bottom of the 9 | * compiled file so the styles you add here take precedence over styles defined in any styles 10 | * defined in the other CSS/SCSS files in this directory. It is generally better to create a new 11 | * file per style scope. 12 | * 13 | *= require_tree . 14 | *= require_self 15 | */ 16 | -------------------------------------------------------------------------------- /rails/bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | 4 | # path to your application root. 5 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 6 | 7 | Dir.chdir APP_ROOT do 8 | # This script is a starting point to setup your application. 9 | # Add necessary setup steps to this file: 10 | 11 | puts "== Installing dependencies ==" 12 | system "gem install bundler --conservative" 13 | system "bundle check || bundle install" 14 | 15 | # puts "\n== Copying sample files ==" 16 | # unless File.exist?("config/database.yml") 17 | # system "cp config/database.yml.sample config/database.yml" 18 | # end 19 | 20 | puts "\n== Preparing database ==" 21 | system "bin/rake db:setup" 22 | 23 | puts "\n== Removing old logs and tempfiles ==" 24 | system "rm -f log/*" 25 | system "rm -rf tmp/cache" 26 | 27 | puts "\n== Restarting application server ==" 28 | system "touch tmp/restart.txt" 29 | end 30 | -------------------------------------------------------------------------------- /rails/app/controllers/ones_soap_controller.rb: -------------------------------------------------------------------------------- 1 | class OnesSoapController < ApplicationController 2 | soap_service namespace: 'http://alexkalinin.pro' 3 | 4 | soap_action 'b64_file_upload', 5 | :args => {b64_file: :string}, 6 | :return => :string, 7 | :to => :b64_file_upload 8 | def b64_file_upload 9 | #byebug 10 | decode_base64_content = Base64.decode64(params['b64_file']) 11 | store_path = Rails.root.join('public', 'testpicture.jpeg') 12 | File.open(store_path, 'wb') do |f| 13 | f.write(decode_base64_content) 14 | end 15 | render :soap => 'somesting и какая-то строка на кириллице' 16 | end 17 | 18 | soap_action 'b64_file_download', args: nil, :return => :string 19 | def b64_file_download 20 | # byebug 21 | store_path = Rails.root.join('public', 'testpicture.jpeg') 22 | content = File.binread(store_path) 23 | render :soap => Base64.encode64(content) 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /rails/app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | # Prevent CSRF attacks by raising an exception. 3 | # For APIs, you may want to use :null_session instead. 4 | # protect_from_forgery with: :exception 5 | 6 | # def get_file 7 | # puts request.inspect 8 | # response.headers['Guid'] = SecureRandom.uuid 9 | # send_file Rails.root.join('app', 'assets', 'images', 'testpicture.jpeg') 10 | # end 11 | # 12 | # def send_file 13 | # #require 'debug' 14 | # # puts params.inspect 15 | # # puts 'Got param1: ' + params[:param1] 16 | # # puts 'Got param2: ' + params[:param2] 17 | # byebug 18 | # uploaded_io = params[:file] 19 | # store_path = Rails.root.join('public', uploaded_io.original_filename) 20 | # File.open(store_path, 'wb') do |file| 21 | # file.write(uploaded_io.read) 22 | # end 23 | # puts 'Saved file to: ' + store_path.to_s 24 | # response.headers['Guid'] = SecureRandom.uuid 25 | # render text: 'ok' 26 | # end 27 | end 28 | -------------------------------------------------------------------------------- /rails/config/secrets.yml: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Your secret key is used for verifying the integrity of signed cookies. 4 | # If you change this key, all old signed cookies will become invalid! 5 | 6 | # Make sure the secret is at least 30 characters and all random, 7 | # no regular words or you'll be exposed to dictionary attacks. 8 | # You can use `rake secret` to generate a secure secret key. 9 | 10 | # Make sure the secrets in this file are kept private 11 | # if you're sharing your code publicly. 12 | 13 | development: 14 | secret_key_base: 66dc2e5e07dbcdf95e3c7d0e58d7e1a6d4e8698ec9ee0c3c2a1a32d57f1c623b41afc26ff8fc0719bb349ce55de0bf12dd179262258a593f6982ff2efeea1702 15 | 16 | test: 17 | secret_key_base: 46efed219f167979689dd77bea2cc094062c7135a24ebb26129f1d9012f7c3ba5d307e91fad746afdd8023f9fb44b7e497a45266f4d914390c72a7064b36118d 18 | 19 | # Do not keep production secrets in the repository, 20 | # instead read values from the environment. 21 | production: 22 | secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> 23 | -------------------------------------------------------------------------------- /rails/config/application.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path('../boot', __FILE__) 2 | 3 | require 'rails/all' 4 | 5 | # Require the gems listed in Gemfile, including any gems 6 | # you've limited to :test, :development, or :production. 7 | Bundler.require(*Rails.groups) 8 | 9 | module Soapws 10 | class Application < Rails::Application 11 | # Settings in config/environments/* take precedence over those specified here. 12 | # Application configuration should go into files in config/initializers 13 | # -- all .rb files in that directory are automatically loaded. 14 | 15 | # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. 16 | # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. 17 | # config.time_zone = 'Central Time (US & Canada)' 18 | 19 | # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. 20 | # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] 21 | # config.i18n.default_locale = :de 22 | 23 | # Do not swallow errors in after_commit/after_rollback callbacks. 24 | config.active_record.raise_in_transactional_callbacks = true 25 | 26 | config.middleware.use Rack::ContentLength 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /rails/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Soap webservice library 4 | gem 'wash_out' 5 | 6 | # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 7 | gem 'rails', '4.2.4' 8 | # Use sqlite3 as the database for Active Record 9 | gem 'sqlite3' 10 | # Use SCSS for stylesheets 11 | gem 'sass-rails', '~> 5.0' 12 | # Use Uglifier as compressor for JavaScript assets 13 | gem 'uglifier', '>= 1.3.0' 14 | # Use CoffeeScript for .coffee assets and views 15 | gem 'coffee-rails', '~> 4.1.0' 16 | # See https://github.com/rails/execjs#readme for more supported runtimes 17 | # gem 'therubyracer', platforms: :ruby 18 | 19 | # Use jquery as the JavaScript library 20 | gem 'jquery-rails' 21 | # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks 22 | gem 'turbolinks' 23 | # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 24 | gem 'jbuilder', '~> 2.0' 25 | # bundle exec rake doc:rails generates the API under doc/api. 26 | gem 'sdoc', '~> 0.4.0', group: :doc 27 | 28 | # Use ActiveModel has_secure_password 29 | # gem 'bcrypt', '~> 3.1.7' 30 | 31 | # Use Unicorn as the app server 32 | # gem 'unicorn' 33 | 34 | # Use Capistrano for deployment 35 | # gem 'capistrano-rails', group: :development 36 | 37 | group :development, :test do 38 | # Call 'byebug' anywhere in the code to stop execution and get a debugger console 39 | gem 'byebug' 40 | end 41 | 42 | group :development do 43 | # Access an IRB console on exception pages or by using <%= console %> in views 44 | gem 'web-console', '~> 2.0' 45 | 46 | # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 47 | gem 'spring' 48 | end 49 | 50 | -------------------------------------------------------------------------------- /rails/public/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | We're sorry, but something went wrong (500) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

We're sorry, but something went wrong.

62 |
63 |

If you are the application owner check the logs for more information.

64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /rails/config/environments/development.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # In the development environment your application's code is reloaded on 5 | # every request. This slows down response time but is perfect for development 6 | # since you don't have to restart the web server when you make code changes. 7 | config.cache_classes = false 8 | 9 | # Do not eager load code on boot. 10 | config.eager_load = false 11 | 12 | # Show full error reports and disable caching. 13 | config.consider_all_requests_local = true 14 | config.action_controller.perform_caching = false 15 | 16 | # Don't care if the mailer can't send. 17 | config.action_mailer.raise_delivery_errors = false 18 | 19 | # Print deprecation notices to the Rails logger. 20 | config.active_support.deprecation = :log 21 | 22 | # Raise an error on page load if there are pending migrations. 23 | config.active_record.migration_error = :page_load 24 | 25 | # Debug mode disables concatenation and preprocessing of assets. 26 | # This option may cause significant delays in view rendering with a large 27 | # number of complex assets. 28 | config.assets.debug = true 29 | 30 | # Asset digests allow you to set far-future HTTP expiration dates on all assets, 31 | # yet still be able to expire them through the digest params. 32 | config.assets.digest = true 33 | 34 | # Adds additional error checking when serving assets at runtime. 35 | # Checks for improperly declared sprockets dependencies. 36 | # Raises helpful error messages. 37 | config.assets.raise_runtime_errors = true 38 | 39 | # Raises error for missing translations 40 | # config.action_view.raise_on_missing_translations = true 41 | end 42 | -------------------------------------------------------------------------------- /rails/public/422.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The change you wanted was rejected (422) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

The change you wanted was rejected.

62 |

Maybe you tried to change something you didn't have access to.

63 |
64 |

If you are the application owner check the logs for more information.

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /rails/public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The page you were looking for doesn't exist (404) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

The page you were looking for doesn't exist.

62 |

You may have mistyped the address or the page may have moved.

63 |
64 |

If you are the application owner check the logs for more information.

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /rails/config/environments/test.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # The test environment is used exclusively to run your application's 5 | # test suite. You never need to work with it otherwise. Remember that 6 | # your test database is "scratch space" for the test suite and is wiped 7 | # and recreated between test runs. Don't rely on the data there! 8 | config.cache_classes = true 9 | 10 | # Do not eager load code on boot. This avoids loading your whole application 11 | # just for the purpose of running a single test. If you are using a tool that 12 | # preloads Rails for running tests, you may have to set it to true. 13 | config.eager_load = false 14 | 15 | # Configure static file server for tests with Cache-Control for performance. 16 | config.serve_static_files = true 17 | config.static_cache_control = 'public, max-age=3600' 18 | 19 | # Show full error reports and disable caching. 20 | config.consider_all_requests_local = true 21 | config.action_controller.perform_caching = false 22 | 23 | # Raise exceptions instead of rendering exception templates. 24 | config.action_dispatch.show_exceptions = false 25 | 26 | # Disable request forgery protection in test environment. 27 | config.action_controller.allow_forgery_protection = false 28 | 29 | # Tell Action Mailer not to deliver emails to the real world. 30 | # The :test delivery method accumulates sent emails in the 31 | # ActionMailer::Base.deliveries array. 32 | config.action_mailer.delivery_method = :test 33 | 34 | # Randomize the order test cases are executed. 35 | config.active_support.test_order = :random 36 | 37 | # Print deprecation notices to the stderr. 38 | config.active_support.deprecation = :stderr 39 | 40 | # Raises error for missing translations 41 | # config.action_view.raise_on_missing_translations = true 42 | end 43 | -------------------------------------------------------------------------------- /rails/config/routes.rb: -------------------------------------------------------------------------------- 1 | Rails.application.routes.draw do 2 | # get 'ones_soap/testNumbers' 3 | # 4 | # get 'ones_soap/testText' 5 | # 6 | # get 'ones_soap/testObjects' 7 | # 8 | # get 'ones_soap/testFiles' 9 | 10 | wash_out :ones_soap 11 | 12 | # get 'getfile' => 'application#get_file' 13 | # post 'sendfile' => 'application#send_file' 14 | 15 | # The priority is based upon order of creation: first created -> highest priority. 16 | # See how all your routes lay out with "rake routes". 17 | 18 | # You can have the root of your site routed with "root" 19 | # root 'welcome#index' 20 | 21 | # Example of regular route: 22 | # get 'products/:id' => 'catalog#view' 23 | 24 | # Example of named route that can be invoked with purchase_url(id: product.id) 25 | # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase 26 | 27 | # Example resource route (maps HTTP verbs to controller actions automatically): 28 | # resources :products 29 | 30 | # Example resource route with options: 31 | # resources :products do 32 | # member do 33 | # get 'short' 34 | # post 'toggle' 35 | # end 36 | # 37 | # collection do 38 | # get 'sold' 39 | # end 40 | # end 41 | 42 | # Example resource route with sub-resources: 43 | # resources :products do 44 | # resources :comments, :sales 45 | # resource :seller 46 | # end 47 | 48 | # Example resource route with more complex sub-resources: 49 | # resources :products do 50 | # resources :comments 51 | # resources :sales do 52 | # get 'recent', on: :collection 53 | # end 54 | # end 55 | 56 | # Example resource route with concerns: 57 | # concern :toggleable do 58 | # post 'toggle' 59 | # end 60 | # resources :posts, concerns: :toggleable 61 | # resources :photos, concerns: :toggleable 62 | 63 | # Example resource route within a namespace: 64 | # namespace :admin do 65 | # # Directs /admin/products/* to Admin::ProductsController 66 | # # (app/controllers/admin/products_controller.rb) 67 | # resources :products 68 | # end 69 | end 70 | -------------------------------------------------------------------------------- /rails/config/environments/production.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # Code is not reloaded between requests. 5 | config.cache_classes = true 6 | 7 | # Eager load code on boot. This eager loads most of Rails and 8 | # your application in memory, allowing both threaded web servers 9 | # and those relying on copy on write to perform better. 10 | # Rake tasks automatically ignore this option for performance. 11 | config.eager_load = true 12 | 13 | # Full error reports are disabled and caching is turned on. 14 | config.consider_all_requests_local = false 15 | config.action_controller.perform_caching = true 16 | 17 | # Enable Rack::Cache to put a simple HTTP cache in front of your application 18 | # Add `rack-cache` to your Gemfile before enabling this. 19 | # For large-scale production use, consider using a caching reverse proxy like 20 | # NGINX, varnish or squid. 21 | # config.action_dispatch.rack_cache = true 22 | 23 | # Disable serving static files from the `/public` folder by default since 24 | # Apache or NGINX already handles this. 25 | config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 26 | 27 | # Compress JavaScripts and CSS. 28 | config.assets.js_compressor = :uglifier 29 | # config.assets.css_compressor = :sass 30 | 31 | # Do not fallback to assets pipeline if a precompiled asset is missed. 32 | config.assets.compile = false 33 | 34 | # Asset digests allow you to set far-future HTTP expiration dates on all assets, 35 | # yet still be able to expire them through the digest params. 36 | config.assets.digest = true 37 | 38 | # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb 39 | 40 | # Specifies the header that your server uses for sending files. 41 | # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache 42 | # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX 43 | 44 | # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 45 | # config.force_ssl = true 46 | 47 | # Use the lowest log level to ensure availability of diagnostic information 48 | # when problems arise. 49 | config.log_level = :debug 50 | 51 | # Prepend all log lines with the following tags. 52 | # config.log_tags = [ :subdomain, :uuid ] 53 | 54 | # Use a different logger for distributed setups. 55 | # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) 56 | 57 | # Use a different cache store in production. 58 | # config.cache_store = :mem_cache_store 59 | 60 | # Enable serving of images, stylesheets, and JavaScripts from an asset server. 61 | # config.action_controller.asset_host = 'http://assets.example.com' 62 | 63 | # Ignore bad email addresses and do not raise email delivery errors. 64 | # Set this to true and configure the email server for immediate delivery to raise delivery errors. 65 | # config.action_mailer.raise_delivery_errors = false 66 | 67 | # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 68 | # the I18n.default_locale when a translation cannot be found). 69 | config.i18n.fallbacks = true 70 | 71 | # Send deprecation notices to registered listeners. 72 | config.active_support.deprecation = :notify 73 | 74 | # Use default logging formatter so that PID and timestamp are not suppressed. 75 | config.log_formatter = ::Logger::Formatter.new 76 | 77 | # Do not dump schema after migrations. 78 | config.active_record.dump_schema_after_migration = false 79 | end 80 | -------------------------------------------------------------------------------- /rails/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | actionmailer (4.2.4) 5 | actionpack (= 4.2.4) 6 | actionview (= 4.2.4) 7 | activejob (= 4.2.4) 8 | mail (~> 2.5, >= 2.5.4) 9 | rails-dom-testing (~> 1.0, >= 1.0.5) 10 | actionpack (4.2.4) 11 | actionview (= 4.2.4) 12 | activesupport (= 4.2.4) 13 | rack (~> 1.6) 14 | rack-test (~> 0.6.2) 15 | rails-dom-testing (~> 1.0, >= 1.0.5) 16 | rails-html-sanitizer (~> 1.0, >= 1.0.2) 17 | actionview (4.2.4) 18 | activesupport (= 4.2.4) 19 | builder (~> 3.1) 20 | erubis (~> 2.7.0) 21 | rails-dom-testing (~> 1.0, >= 1.0.5) 22 | rails-html-sanitizer (~> 1.0, >= 1.0.2) 23 | activejob (4.2.4) 24 | activesupport (= 4.2.4) 25 | globalid (>= 0.3.0) 26 | activemodel (4.2.4) 27 | activesupport (= 4.2.4) 28 | builder (~> 3.1) 29 | activerecord (4.2.4) 30 | activemodel (= 4.2.4) 31 | activesupport (= 4.2.4) 32 | arel (~> 6.0) 33 | activesupport (4.2.4) 34 | i18n (~> 0.7) 35 | json (~> 1.7, >= 1.7.7) 36 | minitest (~> 5.1) 37 | thread_safe (~> 0.3, >= 0.3.4) 38 | tzinfo (~> 1.1) 39 | arel (6.0.3) 40 | binding_of_caller (0.7.2) 41 | debug_inspector (>= 0.0.1) 42 | builder (3.2.2) 43 | byebug (8.1.0) 44 | coffee-rails (4.1.0) 45 | coffee-script (>= 2.2.0) 46 | railties (>= 4.0.0, < 5.0) 47 | coffee-script (2.4.1) 48 | coffee-script-source 49 | execjs 50 | coffee-script-source (1.9.1.1) 51 | debug_inspector (0.0.2) 52 | erubis (2.7.0) 53 | execjs (2.6.0) 54 | globalid (0.3.6) 55 | activesupport (>= 4.1.0) 56 | i18n (0.7.0) 57 | jbuilder (2.3.2) 58 | activesupport (>= 3.0.0, < 5) 59 | multi_json (~> 1.2) 60 | jquery-rails (4.0.5) 61 | rails-dom-testing (~> 1.0) 62 | railties (>= 4.2.0) 63 | thor (>= 0.14, < 2.0) 64 | json (1.8.3) 65 | loofah (2.0.3) 66 | nokogiri (>= 1.5.9) 67 | mail (2.6.3) 68 | mime-types (>= 1.16, < 3) 69 | mime-types (2.6.2) 70 | mini_portile (0.6.2) 71 | minitest (5.8.2) 72 | multi_json (1.11.2) 73 | nokogiri (1.6.6.2) 74 | mini_portile (~> 0.6.0) 75 | nori (2.6.0) 76 | rack (1.6.4) 77 | rack-test (0.6.3) 78 | rack (>= 1.0) 79 | rails (4.2.4) 80 | actionmailer (= 4.2.4) 81 | actionpack (= 4.2.4) 82 | actionview (= 4.2.4) 83 | activejob (= 4.2.4) 84 | activemodel (= 4.2.4) 85 | activerecord (= 4.2.4) 86 | activesupport (= 4.2.4) 87 | bundler (>= 1.3.0, < 2.0) 88 | railties (= 4.2.4) 89 | sprockets-rails 90 | rails-deprecated_sanitizer (1.0.3) 91 | activesupport (>= 4.2.0.alpha) 92 | rails-dom-testing (1.0.7) 93 | activesupport (>= 4.2.0.beta, < 5.0) 94 | nokogiri (~> 1.6.0) 95 | rails-deprecated_sanitizer (>= 1.0.1) 96 | rails-html-sanitizer (1.0.2) 97 | loofah (~> 2.0) 98 | railties (4.2.4) 99 | actionpack (= 4.2.4) 100 | activesupport (= 4.2.4) 101 | rake (>= 0.8.7) 102 | thor (>= 0.18.1, < 2.0) 103 | rake (10.4.2) 104 | rdoc (4.2.0) 105 | sass (3.4.19) 106 | sass-rails (5.0.4) 107 | railties (>= 4.0.0, < 5.0) 108 | sass (~> 3.1) 109 | sprockets (>= 2.8, < 4.0) 110 | sprockets-rails (>= 2.0, < 4.0) 111 | tilt (>= 1.1, < 3) 112 | sdoc (0.4.1) 113 | json (~> 1.7, >= 1.7.7) 114 | rdoc (~> 4.0) 115 | spring (1.4.1) 116 | sprockets (3.4.0) 117 | rack (> 1, < 3) 118 | sprockets-rails (2.3.3) 119 | actionpack (>= 3.0) 120 | activesupport (>= 3.0) 121 | sprockets (>= 2.8, < 4.0) 122 | sqlite3 (1.3.11) 123 | thor (0.19.1) 124 | thread_safe (0.3.5) 125 | tilt (2.0.1) 126 | turbolinks (2.5.3) 127 | coffee-rails 128 | tzinfo (1.2.2) 129 | thread_safe (~> 0.1) 130 | uglifier (2.7.2) 131 | execjs (>= 0.3.0) 132 | json (>= 1.8.0) 133 | wash_out (0.9.2) 134 | nori (>= 2.0.0) 135 | web-console (2.2.1) 136 | activemodel (>= 4.0) 137 | binding_of_caller (>= 0.7.2) 138 | railties (>= 4.0) 139 | sprockets-rails (>= 2.0, < 4.0) 140 | 141 | PLATFORMS 142 | ruby 143 | 144 | DEPENDENCIES 145 | byebug 146 | coffee-rails (~> 4.1.0) 147 | jbuilder (~> 2.0) 148 | jquery-rails 149 | rails (= 4.2.4) 150 | sass-rails (~> 5.0) 151 | sdoc (~> 0.4.0) 152 | spring 153 | sqlite3 154 | turbolinks 155 | uglifier (>= 1.3.0) 156 | wash_out 157 | web-console (~> 2.0) 158 | 159 | BUNDLED WITH 160 | 1.10.6 161 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Code Climate](https://codeclimate.com/repos/5731719ed19eee0082006e65/badges/99a91c6c2faa002224a6/gpa.svg)](https://codeclimate.com/repos/5731719ed19eee0082006e65/feed) 2 | 3 | *** 4 | 5 | ### NOTE FOR ENGLISH-SPEAKING 6 | This project was developed mainly for integration Ruby on Rails with [1C Enterprise 8](http://www.1c.ru/eng/title.htm) system. The writing of code in 1C is fully in Russian and 99% for Russian-speaking customers. That is why I don't see the reason to develope this project in English. 7 | 8 | If you have questions, please feel free ask me by writing on my email: login.hedin@gmail.com. 9 | 10 | Another my contacts and info about me, you can find out at [alexkalinin.pro](http://alexkalinin.pro) 11 | 12 | *** 13 | 14 | 15 | ## Ruby on Rails SOAP Server + 1C:Предприятие 8 SOAP Client 16 | 17 | 18 | ## Задачи проекта 19 | 20 | * Реализовать SOAP веб-сервис на Ruby on Rails 21 | * Реализовать SOAP-клиента с помощью 1C:Предприятие 8 22 | * Проверить возможность передавать/получать строки, числа, небольшие файлы (до 100Мб) 23 | 24 | 25 | ### SOAP веб-сервис на Ruby on Rails 26 | 27 | Задачу реализации SOAP-сервиса удалось решить благодаря gem-у **wash_out** ([rubygems](https://rubygems.org/gems/wash_out), [github](https://github.com/inossidabile/wash_out/)) 28 | 29 | 30 | ### SOAP-клиент с помощью 1C:Предприятие 8 31 | 32 | У 1С8 есть возможность подключаться к [SOAP-веб-сервисам](http://v8.1c.ru/overview/Term_000000273.htm) и к [REST-веб-сервисам](http://its.1c.ru/db/metod8dev/content/3790/hdoc). Я выбрал SOAP, т.к. он удобнее реализован в 1С + он удобнее в разрезе передачи разных примитивных данных (строки, числа...), а также благодаря возможности передачи довольно больших строк (до [100Мб](https://github.com/AlexKalinin/1c8-base64-file-decoder-encoder)) - можно передавать / получать также любые файлы, закодированные в [base64](https://github.com/AlexKalinin/1c8-base64-file-decoder-encoder). 33 | 34 | Примечание: если Вам все-же нужно научить 1С выполнять прием/передачу данных по REST (например, если есть необходимость передавать файлы больше 100Мб), то можно посмотреть пример обработки [_vendors/OnesSendReceiveFileWithREST.epf](_vendors/OnesSendReceiveFileWithREST.epf) которая была загружена отсюда: http://forum.aeroion.ru/topic446.html 35 | 36 | 37 | 38 | ## Как развернуть локально 39 | 40 | RoR-часть запускается стандартно, командами: 41 | 42 | ``` 43 | cd rails/ 44 | bundle install 45 | rails s -b 0.0.0.0 -p 3000 46 | ``` 47 | 48 | После сообщений: 49 | 50 | ![rails_server.png](_screenshots/rais_server.png) 51 | 52 | можно запустить браузер и проверить, доступен ли WSDL SOAP-сервиса: 53 | 54 | ![chrome_wsdl_url.png](_screenshots/chrome_wsdl_url.png) 55 | 56 | 57 | Для развертывания 1С-части достаточно в пустой 1С-базе (режим "Обычное приложение") запустить обработку [1c8/OnecSoapClient.epf](1c8/OnecSoapClient.epf). 58 | 59 | Исходя из WSDL-схемы нужно прописать настройки: 60 | 61 | ![onec_settings.png](_screenshots/onec_settings.png) 62 | 63 | Затем можно попробовать отправить по SOAP файл в виде base64-строки: 64 | 65 | ![onec_file_upload.png](_screenshots/onec_file_upload.png) 66 | 67 | и принять его обратно: 68 | 69 | ![onec_file_download.png](_screenshots/onec_file_download.png) 70 | 71 | Также можно убедиться что файл не был поврежден при приеме/передаче 72 | 73 | ``` 74 | md5sum original.png uploaded.png downloaded.png 75 | 87f7b976523270929007e4583e05919a original.png 76 | 87f7b976523270929007e4583e05919a uploaded.png 77 | 87f7b976523270929007e4583e05919a downloaded.png 78 | 79 | ``` 80 | 81 | 82 | 83 | ## Список использованной литературы (ресурсов) 84 | 85 | * [Web-сервисы из 1С в PHP](http://infostart.ru/public/63082/) (форум) 86 | * [Доступ к SOAP веб-сервисам 1С из JavaScript и Html](http://habrahabr.ru/post/184540/) (habr) 87 | * [SOAP, wikipedia](https://en.wikipedia.org/wiki/SOAP) 88 | * Стандарт SOAP [1](http://www.w3.org/TR/2007/REC-soap12-part0-20070427/), 89 | [2](http://www.w3.org/TR/2007/REC-soap12-part1-20070427/), 90 | [3](http://www.w3.org/TR/2007/REC-soap12-part2-20070427/), 91 | [4](http://www.w3.org/TR/2007/REC-soap12-testcollection-20070427/) 92 | * SOAP средствами Ruby on Rails: 93 | * http://habrahabr.ru/company/roundlake/blog/135614/ - SOAP-сервер на Rails 3.x (WashOut) 94 | * https://github.com/inossidabile/wash_out - gem WashOut (rails soap service) 95 | * 1С как клиент для SOAP-вебсервиса: 96 | * http://habrahabr.ru/post/148658/ - Использование внешних веб-сервисов в 1С на примере загрузки курсов валют 97 | * http://howknow1c.ru/programmirovanie-1c/ws-ssylki-1s.html - WS-ссылки 1С 98 | * http://start1c.blogspot.com/2012/09/ws.html - WS-ссылки 1С 99 | * https://github.com/inossidabile/wash_out - Библиотека WashOut 100 | * https://github.com/AlexKalinin/v8unpack -- для распаковки 1С .cf (файла конфигурации) 101 | * [php-заглушка для теста веб-сервиса из 1С](http://fragster.ru/wsfor1c/) 102 | -------------------------------------------------------------------------------- /_vendors/onec_trash_code.txt: -------------------------------------------------------------------------------- 1 | // Значение берется из страницы 2 | // http://.../ones_soap/wsdl 3 | // Параметр: 4 | // targetNamespace="urn:WashOut" 5 | // Либо можно посмотреть через объект WS-ссылки 6 | // WS-ссылка/Модель данных/Пакет 7 | //URIПространстваИменСервиса = "urn:WashOut"; 8 | 9 | // Значение берется из страницы 10 | // http://.../ones_soap/wsdl 11 | // Параметр: service: 12 | // 13 | // 14 | // 15 | // 16 | // 17 | // 18 | // Либо можно посмотреть через объект WS-ссылки 19 | // WS-ссылка/Web-сервисы/СобственноИмя 20 | //ИмяСервиса = "service"; 21 | 22 | // Значение берется из страницы 23 | // http://.../ones_soap/wsdl 24 | // Параметр: port: 25 | // 26 | // 27 | // 28 | // 29 | // 30 | // 31 | // Либо можно посмотреть через объект WS-ссылки 32 | // WS-ссылка/Web-сервисы/СобственноИмя/ИмяПротоколаSoap 33 | //ИмяПорта = "ones_soap_port"; 34 | //Прокси = WSСсылки.MySOAPSever.СоздатьWSПрокси(URIПространстваИменСервиса, ИмяСервиса, ИмяПорта); 35 | 36 | 37 | //Получаем тип параметра, который передается в метод testNumbers. 38 | // ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.w3.org/2001/XMLSchema").Получить("testNumbers"); 39 | 40 | //Создаем параметр на основе типа и заполняем значение параметра testNumbers. 41 | //WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра); 42 | //WSПараметр.testNumbers = 10; 43 | 44 | ////Вызываем метод веб-сервиса, записываем результат в переменную КурсыВалют. 45 | //ответ = Прокси.b64_file_upload("aaaa"); 46 | 47 | 48 | 49 | //Получаем тип параметра, который передается в метод testNumbers. 50 | //ТипWSПараметра = прокси.ФабрикаXDTO.Пакеты.Получить("http://www.w3.org/2001/XMLSchema").Получить("b64_file_upload"); 51 | //ТипWSПараметра = прокси.ФабрикаXDTO.Пакеты.Получить("http://www.w3.org/2001/XMLSchema").Получить("string"); 52 | //ТипWSПараметра = прокси.ФабрикаXDTO.Пакеты.Получить("urn:WashOut").Получить("b64_file_upload"); 53 | 54 | //Создаем параметр на основе типа и заполняем значение параметра testNumbers. 55 | //WSПараметр = прокси.ФабрикаXDTO.Создать(ТипWSПараметра, "b64_file_upload"); 56 | //WSПараметр.Значение = "some_string"; 57 | 58 | ////Вызываем метод веб-сервиса, записываем результат в переменную КурсыВалют. 59 | 60 | --------- 61 | 62 | //URIПространстваИменСервиса = "urn:WashOut"; 63 | //ИмяСервиса = "service"; 64 | //ИмяПорта = "ones_soap_port"; 65 | //Определение = Новый WSОпределения("http://localhost:3000/ones_soap/wsdl"); 66 | ////Прокси = Новый WSПрокси(Определение) 67 | //Прокси = Новый WSПрокси(Определение, URIПространстваИменСервиса, ИмяСервиса, ИмяПорта); 68 | 69 | 70 | --------- 71 | 72 | 73 | // Значение берется из страницы 74 | // http://.../ones_soap/wsdl 75 | // Параметр: 76 | // targetNamespace="urn:WashOut" 77 | // Либо можно посмотреть через объект WS-ссылки 78 | // WS-ссылка/Модель данных/Пакет 79 | URIПространстваИменСервиса = "urn:WashOut"; 80 | 81 | // Значение берется из страницы 82 | // http://.../ones_soap/wsdl 83 | // Параметр: service: 84 | // 85 | // 86 | // 87 | // 88 | // 89 | // 90 | // Либо можно посмотреть через объект WS-ссылки 91 | // WS-ссылка/Web-сервисы/СобственноИмя 92 | ИмяСервиса = "service"; 93 | 94 | // Значение берется из страницы 95 | // http://.../ones_soap/wsdl 96 | // Параметр: port: 97 | // 98 | // 99 | // 100 | // 101 | // 102 | // 103 | // Либо можно посмотреть через объект WS-ссылки 104 | // WS-ссылка/Web-сервисы/СобственноИмя/ИмяПротоколаSoap 105 | ИмяПорта = "ones_soap_port"; 106 | //Прокси = WSСсылки.TestSoap.СоздатьWSПрокси(URIПространстваИменСервиса, ИмяСервиса, ИмяПорта); 107 | 108 | //Получаем тип параметра, который передается в метод testNumbers. 109 | // ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.w3.org/2001/XMLSchema").Получить("testNumbers"); 110 | 111 | //Создаем параметр на основе типа и заполняем значение параметра testNumbers. 112 | //WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра); 113 | //WSПараметр.testNumbers = 10; 114 | 115 | ////Вызываем метод веб-сервиса, записываем результат в переменную КурсыВалют. 116 | //Значение = Прокси.testNumbers(1); 117 | -------------------------------------------------------------------------------- /_vendors/SOAPЗагрузкаКурсовВалютЦБР/article.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Использование внешних веб-сервисов в 1С на примере загрузки курсов валют / Хабрахабр 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 122 | 123 | 124 | 125 | 126 | 127 |
128 |
129 |
130 | 139 |
140 | Спецпроекты: 141 | 142 | 143 |
144 |
145 |
146 | 147 |
148 | 149 | 193 | 194 |
195 | 196 | 222 | 231 | 232 | 233 | 234 | 235 | 236 |
237 | 238 |
239 | 240 | 241 | 242 | 243 | 244 |
245 |
246 | Michael 247 | @mix2000 248 | 249 |
250 |
251 | Пользователь 252 |
253 |
254 |
255 | 256 |
257 | 258 |
259 | 260 |
261 |
117,5
262 |
карма
263 |
264 | 265 |
266 | 267 |
268 |
0,0
269 |
рейтинг
270 |
271 | 272 |
273 | 274 | 275 |
276 | 277 |
278 |
279 | 329 | 330 | 331 |
332 | 333 | 334 |
335 |
30 июля 2012 в 13:19
336 |

337 | 338 | 339 | Использование внешних веб-сервисов в 1С на примере загрузки курсов валют 340 | 341 | 342 | 343 | 344 | 345 |

346 | 347 | 350 | 351 | 352 |
353 | Знаю, что на хабре не очень-то жалуют многострадальную 1С. Хотя, с выходом платформы 8.3 (с клиентами под Linux), ее стали любить несколько больше. Кстати, так же, совсем недавно интерфейс одной из основных разработок 1С – конфигурация Управление производственным предприятием – был полностью переведен на английский язык. Много раз я встречал вопросы о том, почему здесь не пишут об 1С. Ответ на них довольно очевиден – существует множество специализированных ресурсов, где можно оперативно обсудить все вопросы и что-то почитать.
354 |
355 | Есть все основания полагать, что эта статья здесь не выживет, но я все же рискну, потому что в 1С есть некоторые интересные вещи, о которых стоит рассказать.
356 |
357 | С некоторых пор в 1С 8.х появилась возможность использования веб-сервисов: 1С может выступать как поставщиком, так и потребителем. В этой статье я покажу, как использовать 1С в качестве потребителя на примере получения курсов валют с сервера ЦБР.
358 |
359 |

Веб-сервис


360 | У Центробанка существует веб-сервис для получения ежедневных данных: курсы валют, новости, динамика курсов и т.д. Описание сервиса можно найти здесь http://www.cbr.ru/scripts/Root.asp?Prtid=DWS. Нас интересует один из методов этого сервиса: GetCursOnDate(On_date) – получение курсов валют на заданную дату. В метод передается один аргумент On_date – это дата, на которую требуется получить курсы. В результате возвращается XML, содержащий таблицу ValuteCursOnDate (сами курсы и сопутствующая информация).
361 |
362 |

Конфигурирование


363 | Для разработки я взял 1С 8.2 (8.2.15.317 в моем случае) и создал пустую конфигурацию. Для использования внешних веб-сервисов предусмотрен объект WS-ссылки, но использовать его не обязательно, к сервису можно обращаться динамически из кода. Я буду использовать первый вариант, а затем покажу, как можно использовать второй. В конфигурации создал обработку и назвал ее «ЗагрузкаКурсовВалютЦБР». Добавил форму (управляемую) и сделал ее основной. На форме я создал реквизиты и разместил элементы управления так, как показано на рисунке.
364 |
365 |
366 |
367 | Сейчас самое главное – создаем ссылку на описание веб-сервиса. В конфигурации добавляем новый объект типа WS-ссылка. В появившемся окне указываем ссылку на WSDL (описание данного формата выходит за рамки статьи, вы можете почитать о нем на Википедии): http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL.
368 |
369 |
370 |
371 | 1С на основании полученного описания автоматически создаст визуальную карту веб-сервиса. Можно увидеть название веб-сервиса, посмотреть какие у него доступны операции а так же используемые типы данных.
372 |
373 |
374 |
375 | Конфигурирование на этом почти закончено, осталось сделать пару штрихов для того, чтобы наше приложение выглядело более эстетично. Кликнем правой кнопкой мыши по корню конфигурации и вызовем меню «Открыть командный интерфейс рабочего стола». В появившемся окне необходимо снять флаг «Видимость» напротив обработки «Загрузка курсов валют ЦБР». Нажмем кнопку Ок. Далее еще правый клик по корню конфигурации и вызовем меню «Открыть рабочую область рабочего стола», там сделаем настройку как на рисунке:
376 |
377 |
378 |
379 | Эти настройки позволят нам отобразить форму обработки прямо на рабочем столе (имеется ввиду рабочий стол программы 1С) в режиме 1С Предприятие.
380 |
381 |

Программирование


382 | Теперь осталось наполнить смыслом нашу обработку: заставить ее получать курсы валют и отображать в таблице на форме. В режиме редактирования формы необходимо добавить новую команду формы, назовем ее ЗагрузитьВалюты. Эту команду необходимо связать с кнопкой, расположенной на форме. Действие для команды заполним следующим кодом (прим. автора: ничего себе, на хабре есть подсветка кода 1С, правда она работает не корректно):
383 |
384 |
&НаКлиенте
 385 | Процедура ЗагрузитьВалюты(Команда)
 386 | 	
 387 | 	Если НЕ ЗначениеЗаполнено(ДатаЗагрузки) Тогда 
 388 | 		Сообщить("Не выбрана дата загрузки!", СтатусСообщения.Важное);
 389 | 		Возврат;
 390 | 	КонецЕсли;
 391 | 	
 392 | 	ТаблицаКурсовВалют.Очистить();
 393 | 	ЗагрузитьКурсыВалют(ДатаЗагрузки);
 394 | 	
 395 | КонецПроцедуры
 396 | 

397 | Здесь сначала проверяется, заполнена ли дата (если не заполнена, то сообщаем об этом пользователю и больше ничего не делаем). Затем очищается таблица, расположенная на форме и вызывается процедура ЗагрузитьКурсыВалют(), в которую передается дата.
398 |
399 | Код процедуры ЗагрузитьКурсыВалют(), пояснения данны в комментариях к коду:
400 |
401 |
Процедура ЗагрузитьКурсыВалют(фДатаЗагрузки)
 402 | 		
 403 | 	//Создаем прокси для обращения к внешнему веб-сервису,
 404 | 	// передаем в функцию URI пространства имен, имя сервиса, имя порта.
 405 | 	Прокси = WSСсылки.CBR_DailyInfoWebServ.СоздатьWSПрокси(
 406 |                                          "http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");
 407 | 	
 408 | 	//Получаем тип параметра, который передается в метод GetCursOnDate.
 409 | 	ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить(
 410 |                                         "http://web.cbr.ru/").Получить("GetCursOnDate");
 411 | 	//Создаем параметр на основе типа и заполняем значение параметра On_Date.
 412 | 	WSПараметр	   = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
 413 | 	WSПараметр.On_Date	= фДатаЗагрузки;
 414 | 	
 415 | 	//Вызываем метод веб-сервиса, записываем результат в переменную КурсыВалют.
 416 | 	КурсыВалют = Прокси.GetCursOnDate(WSПараметр);
 417 | 	
 418 | 	//Перебираем таблицу ValuteCursOnDate, каждое значение таблицы
 419 | 	// добавляем в таблицу на форме (колонки заполняем соответствующими значениями).
 420 | 	Для Каждого Элемент Из КурсыВалют.GetCursOnDateResult.diffgram.ValuteData.ValuteCursOnDate Цикл 
 421 | 		НоваяСтрокаТЗ = ТаблицаКурсовВалют.Добавить();
 422 | 		НоваяСтрокаТЗ.НазваниеВалюты      = Элемент.Vname;
 423 | 		НоваяСтрокаТЗ.Номинал             = Элемент.Vnom;
 424 | 		НоваяСтрокаТЗ.ЦифровойКодВалюты   = Элемент.Vcode;
 425 | 		НоваяСтрокаТЗ.СимвольныйКодВалюты = Элемент.VChCode;
 426 | 		НоваяСтрокаТЗ.КурсВалюты          = Элемент.Vcurs;
 427 | 	КонецЦикла;
 428 | 	
 429 | КонецПроцедуры
 430 | 

431 | Теперь можно обновлять конфигурацию БД (F7) и запускать 1С Предприятие (F5). Если все сделали верно, то должны увидеть окно как на рисунке ниже:
432 |
433 |
434 |
435 | Чтобы проверить результат, нам нужно ввести дату, на которую хотим получить курсы валют и нажать на кнопку «Загрузить валюты». В случае успешного запроса, таблица на форме заполнится значениями курсов:
436 |
437 |
438 |
439 | Напоследок хочу показать, как можно обратиться динамически к внешнему веб-сервису, то есть без добавления объекта WS-ссылка. Таким образом, мы можем использовать такие веб-сервисы из внешних обработок без привязки к конфигурации.
440 |
441 | В процедуре ЗагрузитьКурсыВалют() строку
442 |
443 |
Прокси = WSСсылки.CBR_DailyInfoWebServ.СоздатьWSПрокси("http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");
 444 | 

445 | необходимо заменить двумя следующими строками
446 |
447 |
Определения = Новый WSОпределения("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL");
 448 | Прокси = Новый WSПрокси(Определения, "http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");
 449 | 

450 | Сначала мы создаем так называемые определения для веб-сервиса из его WSDL. Затем так же создаем прокси для обращения к нему.
451 |
452 | Как видно, использовать внешние веб-сервисы из 1С в целом довольно просто (хотя и есть некоторая сложность в понимании определения типов, у меня в том числе).
453 |
454 | Если данная публикация найдет здесь отклик, то есть еще несколько тем, о которых можно рассказать.
455 |
456 | По ссылке можно скачать конфигурацию с примером (cf-файл). 457 | 458 | 459 |
460 |
461 | 462 | 463 | 470 | 471 | 472 |
473 | 528 |
529 | 530 | 531 | 532 | 533 |
534 | 535 | 536 | 537 | 538 |
539 |
540 | Michael 541 | @mix2000 542 | 543 |
544 | 545 | 546 |
547 | карма 548 | 117,5 549 |
550 | 551 |
552 | 553 |
554 | рейтинг 555 | 0,0 556 |
557 | 558 |
559 | 560 | 561 |
562 |
563 | 564 | 565 |
566 | 567 |
568 |
569 | 570 |
571 | Реклама 572 | 573 | 616 | 617 | 618 |
619 | 620 | 621 | 622 |
623 |

Похожие публикации

624 | 625 | 666 |
667 | 668 | 669 |
670 | 671 | 971 |
972 | 973 |
974 |
975 |
976 | 977 |

Комментарии (13) 979 | 980 | 981 |

982 | 983 | 984 | 985 |
986 | 987 | 988 | 989 |
990 |
991 | 992 |
993 | 994 | 995 | 996 | 997 | nikitok 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 |
1008 | 1009 |
1010 | +1 1011 |
1012 | 1013 | 1014 | 1015 | 1016 |
1017 |
1018 | 1019 |
1020 | Пришлось мне как разработчику WCF REST сервисов столкнуться с 1С-разработчиками, которые реализовывали 1С-клиент (как потребителя контента). Так вот, при работе с web-ресурсами по REST, которые принимают запросы в UTF-8, 1С отправляет HTTP-запрос через создание текстового файла, записи в него тела запроса, и отправки (POST или PUT) только что созданного файла. Это я о кросс-платформенном решении (без использовании XMLHTTPRequest, т.к. через вызов COM-объекта все работает):
1021 |
1022 | HTTPСоединение = Новый HTTPСоединение(urladdress); 1023 | HTTPСоединение.ОтправитьДляОбработки("c:\code\1.txt", "Service.svc/session", "c:\code\2.txt", "Content-Type:application/json" + Символы.ВК + Символы.ПС + "charset:UTF-8");
1024 |
1025 | Особенностью решения 1С-ников было то, что при отправке данных методами POST или PUT, заголовки передаются через аргументы функции, а тело — через файл. Грабли были в том, что при создании файла в кодировке UTF8 1С-ка всегда пишет BOM-символ в начале файла и web-сервис, получая запрос от 1С-клиента с неверным Content-Length'ом (встроенная функция определения длины игнорирует BOM-символ, но это можно исправить вручную) и с BOM-символом в середине тела HTTP-запроса (не в начале) впадает в ступор. Также из-за этого символа.
1026 | Может ли автор статьи рассказать, как обстоят дела с кросс-платформенными запросами в 1С 8.3 при работе с веб-сервисами не по SOAP, а по REST? HTTP-api доработали? 1027 |
1028 | 1029 |
1030 | 1031 |
1032 | 1033 |
1034 |
1035 | 1036 |
1037 |
1038 | 1039 | 1040 | 1041 |
1042 |
1043 | 1044 |
1045 | 1046 | 1047 | 1048 | 1049 | mix2000 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 |
1062 | 1063 |
1064 | 0 1065 |
1066 | 1067 | 1068 | 1069 | 1070 |
1071 |
1072 | 1073 |
1074 | К сожалению, я еще не углублялся в изучение возможностей 8.3, она вышла менее месяца назад. 1075 |
1076 | 1077 |
1078 | 1079 |
1080 | 1081 |
1082 |
1083 | 1084 |
1085 | 1086 |
1087 |
1088 |
1089 | 1090 | 1091 | 1092 |
1093 |
1094 | 1095 |
1096 | 1097 | 1098 | 1099 | 1100 | sacred1972 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 |
1113 | 1114 |
1115 | 0 1116 |
1117 | 1118 | 1119 | 1120 | 1121 |
1122 |
1123 | 1124 |
1125 | Нифига они не доработали. Понимаю, что некропост, но просто сейчас занимаюсь тем же со стороны 1с, задолбало. Формировать запрос через внешний файл ПРИХОДИТСЯ, хотя в 1с есть возможность отправлять запрос без использования внешнего файла, но в этом режиме граблей раскидано ещё больше, поэтому приходится юзать файлы. А BOM-заголовок от файла можно отрезать с помощью такого извращения:
1126 |
1127 | ЗТ = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
1128 | ЗТ.Закрыть();
1129 |
1130 | ЗТ = Новый ЗаписьТекста(ИмяФайла,,, Истина);
1131 | ЗТ.Записать(ТекстПосланияСтрокой);
1132 | ЗТ.Закрыть();
1133 |
1134 | При этом файл ИмяФайла получается в кодировке UTF-8, но без BOM-заголовка. 1135 |
1136 | 1137 |
1138 | 1139 |
1140 | 1141 |
1142 |
1143 | 1144 |
1145 | 1146 |
1147 |
1148 | 1149 |
1150 |
1151 | 1152 |
1153 | 1154 | 1155 | 1156 |
1157 |
1158 | 1159 |
1160 | 1161 | 1162 | 1163 | 1164 | mix2000 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 |
1175 | 1176 |
1177 | 0 1178 |
1179 | 1180 | 1181 | 1182 | 1183 |
1184 |
1185 | 1186 |
1187 | Видимо и правда, целевой аудитории здесь почти нет. Ну да ладно. :-) 1188 |
1189 | 1190 |
1191 | 1192 |
1193 | 1194 |
1195 |
1196 | 1197 |
1198 |
1199 | 1200 | 1201 | 1202 |
1203 |
1204 | 1205 |
1206 | 1207 | 1208 | 1209 | 1210 | xaoc80 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 |
1223 | 1224 |
1225 | 0 1226 |
1227 | 1228 | 1229 | 1230 | 1231 |
1232 |
1233 | 1234 |
1235 | Ошибаетесь, есть=)
1236 | Работа с вэб сервисами, безусловно, интересна
1237 | Сам я давно уже не писал что — либо в 1С, но регулярно слежу за новыми изменениями и анонасами
1238 | И изменения эти, надо сказать радуют, особенно курс на Linux.
1239 | В свое время писал внешние компоненты и меня просто убивали некоторые вещи.
1240 | К примеру, невозможность передать/вернуть массив из внешней компоненты, написанной на 1С Native API.
1241 | Казалось бы очевидная вещь, но не сподобились сделать
1242 | В итоге пришлось писать дикие грабли в виде собственной сериализации на основе строк.
1243 | Получается, реализовать что-то серъезное в Native API просто не получится, все равно придется писать свой сервис.
1244 |
1245 | 1246 |
1247 | 1248 |
1249 | 1250 |
1251 | 1252 |
1253 |
1254 | 1255 |
1256 | 1257 |
1258 |
1259 | 1260 |
1261 |
1262 | 1263 |
1264 | 1265 | 1266 | 1267 |
1268 |
1269 | 1270 |
1271 | 1272 | 1273 | 1274 | 1275 | krak 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 |
1286 | 1287 |
1288 | 0 1289 |
1290 | 1291 | 1292 | 1293 | 1294 |
1295 |
1296 | 1297 |
1298 | Пытался я написать конфигурацию по работе с WS, однако столкнулся с проблемой некорректного определения 1С пустой даты.
1299 | На сайте форуме http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=597342#597342 никто не подсказал вариант решения. Может у Вас больше опыта и есть решение моей проблемы?
1300 | 1301 |
1302 | 1303 |
1304 | 1305 |
1306 | 1307 |
1308 |
1309 | 1310 |
1311 |
1312 | 1313 | 1314 | 1315 |
1316 |
1317 | 1318 |
1319 | 1320 | 1321 | 1322 | 1323 | mix2000 1324 | 1325 | 1326 | 1327 | 1328 | 1329 | 1330 | 1331 | 1332 | 1333 | 1334 | 1335 |
1336 | 1337 |
1338 | 0 1339 |
1340 | 1341 | 1342 | 1343 | 1344 |
1345 |
1346 | 1347 |
1348 | Похоже, вот здесь есть решение проблемы: www.mantisbt.org/forums/viewtopic.php?f=11&t=20480
1349 | Попробуйте, расскажите потом. 1350 |
1351 | 1352 |
1353 | 1354 |
1355 | 1356 |
1357 |
1358 | 1359 |
1360 |
1361 | 1362 | 1363 | 1364 |
1365 |
1366 | 1367 |
1368 | 1369 | 1370 | 1371 | 1372 | krak 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 |
1385 | 1386 |
1387 | 0 1388 |
1389 | 1390 | 1391 | 1392 | 1393 |
1394 |
1395 | 1396 |
1397 | Он обошел тем, что сменил с типа даты, на тип строка, но это немного не то. Хотелось решить именно средствами 1С. Хотя кое-что придется поправить, указав, что это поле можеть быть пустым. 1398 |
1399 | 1400 |
1401 | 1402 |
1403 | 1404 |
1405 |
1406 | 1407 |
1408 |
1409 | 1410 | 1411 | 1412 |
1413 |
1414 | 1415 |
1416 | 1417 | 1418 | 1419 | 1420 | mix2000 1421 | 1422 | 1423 | 1424 | 1425 | 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 |
1433 | 1434 |
1435 | 0 1436 |
1437 | 1438 | 1439 | 1440 | 1441 |
1442 |
1443 | 1444 |
1445 | Здесь похоже, что 1С не может правильно обработать поле due_date. И на стороне 1С сделать ничего не получится.
1446 | Нужно либо сделать так, как по ссылке выше, либо так, чтобы это поле было всегда заполнено, либо вообще исключить его из пакета, если оно не нужно в 1С. 1447 |
1448 | 1449 |
1450 | 1451 |
1452 | 1453 |
1454 |
1455 | 1456 |
1457 |
1458 | 1459 | 1460 | 1461 |
1462 |
1463 | 1464 |
1465 | 1466 | 1467 | 1468 | 1469 | krak 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1476 | 1477 | 1478 | 1479 | 1480 | 1481 |
1482 | 1483 |
1484 | 0 1485 |
1486 | 1487 | 1488 | 1489 | 1490 |
1491 |
1492 | 1493 |
1494 | Как бы его только в 1С исключить? 1495 |
1496 | 1497 |
1498 | 1499 |
1500 | 1501 |
1502 |
1503 | 1504 |
1505 | 1506 |
1507 |
1508 | 1509 |
1510 |
1511 | 1512 |
1513 |
1514 | 1515 |
1516 |
1517 |
1518 | 1519 | 1520 | 1521 |
1522 |
1523 | 1524 |
1525 | 1526 | 1527 | 1528 | 1529 | mix2000 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 |
1542 | 1543 |
1544 | 0 1545 |
1546 | 1547 | 1548 | 1549 | 1550 |
1551 |
1552 | 1553 |
1554 | Кстати, забыл спросить, а вы какую версию платформы используете?
1555 | Простой в 8.2.15.317 нет конструкторов WSОпределения и WSПрокси со столькими параметрами. 1556 |
1557 | 1558 |
1559 | 1560 |
1561 | 1562 |
1563 |
1564 | 1565 |
1566 | 1567 |
1568 |
1569 | 1570 |
1571 |
1572 | 1573 |
1574 | 1575 | 1576 | 1577 |
1578 |
1579 | 1580 |
1581 | 1582 | 1583 | 1584 | 1585 | FeaMor 1586 | 1587 | 1588 | 1589 | 1590 | 1591 | 1592 | 1593 | 1594 | 1595 |
1596 | 1597 |
1598 | 0 1599 |
1600 | 1601 | 1602 | 1603 | 1604 |
1605 |
1606 | 1607 |
1608 | А как обновлять курсы валют, кладр, если система не имеет выхода в интернет? оффлайн версии где скачивать и как ставить7 1609 |
1610 | 1611 |
1612 | 1613 |
1614 | 1615 |
1616 |
1617 | 1618 |
1619 |
1620 | 1621 | 1622 | 1623 |
1624 |
1625 | 1626 |
1627 | 1628 | 1629 | 1630 | 1631 | Apatic 1632 | 1633 | 1634 | 1635 | 1636 | 1637 | 1638 | 1639 | 1640 | 1641 | 1642 | 1643 |
1644 | 1645 |
1646 | 0 1647 |
1648 | 1649 | 1650 | 1651 | 1652 |
1653 |
1654 | 1655 |
1656 | С диска ИТС
1657 | Также файлы КЛАДРов лежат на сайте gnivc.ru 1658 |
1659 | 1660 |
1661 | 1662 |
1663 | 1664 |
1665 |
1666 | 1667 |
1668 | 1669 |
1670 |
1671 | 1672 |
1673 |
1674 | 1675 |
1676 | 1677 | 1678 |

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

1679 | 1680 | 1681 | 1682 | 1683 | 1692 | 1693 |
1694 | 1786 |
1787 | 1788 | 1793 | 1794 | 1795 | 1796 | 1797 |
1798 |
1799 | 1800 | 1801 |
1802 |

Интересные публикации

1803 | 1804 | 1830 | 1831 |
1832 | 1924 |
1925 |
1926 | 1927 | 1928 |
1929 | 1930 | 1931 |
1932 |

1933 | 1934 | Вакансии 1935 |

1936 | 1937 |
1938 | 1980 |
1981 | 1982 | 1987 |
1988 | 1989 | 1990 | 1991 | 1992 | 1993 |
1994 |

1995 | 1996 | Заказы 1997 |

1998 | 1999 |
2000 | 2047 |
2048 | 2049 | 2054 |
2055 | 2056 |
2057 |
2058 | 2059 | 2074 |
2075 | 2076 | 2077 | 2078 |
2079 | 2080 | 2140 |
2141 |
2142 |
2143 | 2144 | 2145 | 2146 | 2166 | 2167 | 2174 | 2175 | 2176 | 2177 | 2178 | 2179 | 2180 | 2181 | 2182 | 2183 | 2217 | 2218 | 2219 | 2220 | 2221 | 2222 | 2223 | 2224 | 2225 | 2226 | 2227 | --------------------------------------------------------------------------------