<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>MyFaces Weblog &#187; 1с</title>
	<atom:link href="http://sidslog.wordpress.com/tag/1%d1%81/feed/" rel="self" type="application/rss+xml" />
	<link>http://sidslog.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Tue, 17 Feb 2009 23:52:02 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='sidslog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/5d50aba598cdccda48488f30ffde5200?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>MyFaces Weblog &#187; 1с</title>
		<link>http://sidslog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sidslog.wordpress.com/osd.xml" title="MyFaces Weblog" />
		<item>
		<title>Работа с 1С с помощью jacob</title>
		<link>http://sidslog.wordpress.com/2009/02/17/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-1%d1%81-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-jacob/</link>
		<comments>http://sidslog.wordpress.com/2009/02/17/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-1%d1%81-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-jacob/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 23:44:46 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[1с]]></category>
		<category><![CDATA[com]]></category>
		<category><![CDATA[jacob]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/2009/02/17/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-1%d1%81-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-jacob/</guid>
		<description><![CDATA[Основная задача состояла в синхронизации нашего сервиса с 1С(списком контрагентов, номенклатуры и т.д.)
При этом 1С могла быть как на dbf-файлах, так и на MSSQL, поэтому было решено испольнозовать COM для связи сервиса с 1С. Конечно, если бы 1С работала на SQL, гораздо проще было бы общаться с ней с помощью jdbc драйвера, но так как [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=22&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Основная задача состояла в синхронизации нашего сервиса с 1С(списком контрагентов, номенклатуры и т.д.)<br />
При этом 1С могла быть как на dbf-файлах, так и на MSSQL, поэтому было решено испольнозовать COM для связи сервиса с 1С. Конечно, если бы 1С работала на SQL, гораздо проще было бы общаться с ней с помощью jdbc драйвера, но так как варианты конфигурации могли быть самые разные, использование сom решало все проблемы.<br />
<a href="http://www.jacob.ca/">JACOB</a> идеально подошел нашим требованиям. Дальше задача выглядела тривиально: переписать код 1С через com.</p>
<p>Инициализация и авторизация в 1С:</p>
<p><span style="font-family:verdana;"> try {<br />
sC = new ActiveXComponent(_1CUtils.V7_APPLICATION);<br />
sControl = (Dispatch)sC.getObject();<br />
} catch (Exception e) {<br />
e.printStackTrace();<br />
throw new _1CException(_1CException._1C_NOT_AVAILABLE) ;<br />
}</span></p>
<p><span style="font-family:verdana;"> int rmTradeId ;<br />
try {<br />
rmTradeId = Dispatch.getIDOfName(sC, _1CUtils.V7_RM_TRADE) ;<br />
} catch (Exception e) {<br />
e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.<br />
throw new _1CException(_1CException.RM_TRADE_NOT_AVAILABLE);<br />
}<br />
Variant rmTradeVar = Dispatch.invoke(sControl, rmTradeId, Dispatch.Get, new Object[]{}, new     int[]{rmTradeId}) ;</span></p>
<p><span style="font-family:verdana;"> int id = Dispatch.getIDOfName(sControl, _1CUtils.V7_INITIALIZE) ;</span></p>
<p><span style="font-family:verdana;"> Object[] args = new Object[3] ;</span></p>
<p><span style="font-family:verdana;"> args[0] = rmTradeVar.getInt() ;<br />
args[1] = &laquo;/D&raquo; + ResourceUtils.getResource(&laquo;path&raquo;) + &raquo; /N&raquo; + ResourceUtils.getResource(&laquo;user&raquo;) + &raquo; /P&raquo; +   ResourceUtils.getResource(&laquo;password&raquo;)  ;<br />
args[2] = new Variant(&laquo;NO_SPLASH_SHOW&raquo;).getString() ;</span></p>
<p><span style="font-family:verdana;"> Variant result = Dispatch.invoke(sControl, _1CUtils.V7_INITIALIZE, Dispatch.Get, args, new int[]{id}) ;</span></p>
<p><span style="font-family:verdana;"> if (!result.getBoolean())  {<br />
throw new _1CException(_1CException.NOT_AUTHORISED);<br />
}</span></p>
<p>В переменных  _1CUtils.V7_APPLICATION, _1CUtils.V7_RM_TRADE, _1CUtils.V7_INITIALIZE хранятся соответсвующие значения:</p>
<ul>
<li>V77.Application</li>
<li>RMTrade</li>
<li>Initialize</li>
</ul>
<p>Для авторизации используется второй параметр функции Initialize &#8211; &laquo;/DПуть /NПользователь /PПароль&raquo;.</p>
<p>Далее, используя стандартные функции 1С, мы можем получить доступ ко всем данным.</p>
<ul>
<li>Для чтения свойства справочника воспользоваться функцией GetAttrib, для записи &#8211; SetAttrib.</li>
<li>Для создания объекта &#8211; CreateObject</li>
<li>Для поиска &#8211; FindByCode, FindByDescr</li>
<li>Для выбора из перечисления функциями &#8211; ValueByIdentifier</li>
<li>Для создания нового объекта &#8211; New</li>
<li>Для получения текщуго значения &#8211; CurrentItem, выбора значений -SelecвtItems, выбора текущего значения &#8211; GetItem</li>
<li>Для записи &#8211; Write</li>
<li>и т.д.</li>
</ul>
<p>Прекрасный справочник по работе с функциями 1С можно скачать <a href="http://komm.gaz.ru/doka/doc/1c/1C_pr77_Lang1.doc">здесь</a></p>
<p>Весь функционал работы с 1С был вынесен на отдельный сервер под Windows)), общение с которым осуществлялось псредством веб-сервисов(использовалась связка tomcat+metro).</p>
<p>Не забудьте положить jacob.dll в classpath(или Windows/system32/)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=22&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2009/02/17/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-1%d1%81-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-jacob/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
	</channel>
</rss>