|
Com объект 1с в T-SQL | ☑ | ||
---|---|---|---|---|
0
managed_heap
20.12.11
✎
11:22
|
Добрый день, уважаемое сообщество.
Я работаю на производственном предприятии, имеющем 6 независимых АИС. В начале декабря мне была поставлена задача разработать схему интеграции части этих систем. Я решил произвести интеграцию путем централизованной базы данных. Система табельного учета, а так же планирования производства написаны мной и работают под управлением СУБД Adaptive Server Anywere, с ними проблемы не возникло. Для управления финансами используется 1с 8.2 "Управление производственным предприятием", и здесь появилась трудность. Необходимо организовать онлайн обмен между ЦБД(MsSql Server 2008 R2) и средой 1с. Насколько я понял наиболее подходящим является метод COM объектов. Но я никак не могу написать создание COMConnector 1с в тригере ЦБД на T-SQL. Есть ли у кого-нибудь опыт выполнения подобной задачи? Не могли бы привести пример кода? |
|||
1
Морозов Александр
20.12.11
✎
11:32
|
как подключался то?
|
|||
2
sapphire
20.12.11
✎
11:35
|
(0) База 1С серверная или файловая?
|
|||
3
managed_heap
20.12.11
✎
11:42
|
(1) Прописал в системной переменной Path?но боюсь это не то, совет по подключнию был бы не лишним(возможно ссылку на рус/англ ресурс).
(2) Серверная. Архитектура вкратце: 1С, MsSql для 1С и MsSql Server 2008 R2 для ЦБД стоя на 3х разных виртуальных машинах, поднятых на Hypervisor под управлением Windows server 2008 |
|||
4
sapphire
20.12.11
✎
11:47
|
(3) И? проблема написать view-шки и посмотреть как 1С хранит данные?
|
|||
5
ДенисЧ
20.12.11
✎
11:48
|
В триггере каждый раз создавать ком-объект? Пипец...
|
|||
6
sapphire
20.12.11
✎
11:49
|
(0) В Вашем случае, обмен посредством COM-соединения нецелесообразен.
Вариантов масса. |
|||
7
sapphire
20.12.11
✎
11:50
|
(5) Я в шоке.
|
|||
8
sapphire
20.12.11
✎
11:51
|
(0) Выбор инструмента за Вами, либо Вы разбираетесь в SQL...
Или изобретаете очередное квадратное колесо для сферического коня. |
|||
9
Axel2009
20.12.11
✎
11:53
|
СУБД как бы не то место, где нужно юзать КОМобъекты.
|
|||
10
managed_heap
20.12.11
✎
11:56
|
(4)view-шами осуществляется обмен данными из 1С в ЦБД.
(6)Я только недавно взялся за изучение Ms Sql, до этого работал с Sybase. Я не настаиваю на том, что мое решение единственно верное. Не могли бы вы предложить иные варианты реализации обмена. Com я выбрал, опасаясь за сохранность метаданных 1С. |
|||
11
sapphire
20.12.11
✎
12:02
|
(10) Наверное, стОит узнать как 1С устроена, чем умеет обмениваться и, как именно в Вашем конкретном случае лучше всего организовать обмен.
ИМХО, не проще ли переписать с Sybase на MS SQL дабы не плодить разнородных СУБД? Далее, SQL умеет обмениваться между СУБД... Механизмов так же много и в самом SQL и не трогая SQL, а настраивая 1С, но в последнем случае Вам придется освоить 1С. |
|||
12
rs_trade
20.12.11
✎
12:27
|
(10) через АДО делайте.
|
|||
13
Vakhrin
20.12.11
✎
12:27
|
Опишите вкратце какие данные и в каких направлениях вам необходимо "гонять"...
|
|||
14
sapphire
20.12.11
✎
12:27
|
(13) Дядя Андрей, с прошедшим ДР тебя ! :)
|
|||
15
МихаилМ
20.12.11
✎
12:28
|
названия таблиц и полей бд в 1с могут поменяться,
com к названиям равнодушен, но медленный, если каждый раз в триггере создавать. если создать подключение в глоб переменной то >1 триггера паралельно писать не смогут. Предлогаю комбинированный вариант он-лайн триггеры пишут напрямую а при реструктуризации проверка изменения имен полей, таблиц на бд 1с ddl тригеер проверки реструктуризации который запустит джоб. далее джоб по ком сверит структуру и подправить тексты скриптов. НО онлайн всегда требует внимания .тоже обновление в сингл моде и триггеры не сработают -> как синхронизироваться ? значит офф лайн механизм нужен по-любому. либо подразделение (а их 6) переедет вместе с субд. опять неувязочка. так что стройте оф лайн решение с сколь угодно частой синхронезацией. |
|||
16
sapphire
20.12.11
✎
12:36
|
(15) Ну можно помещать XDTO значения измененных в 1С объектов во внешнюю очередь сообщений и средствами Sybase (или через адаптер) читать сообщения. В обратную сторону - можно вызывать веб-сервис 1С или организовать универсальный план обмена.
Говорю же, вариантов - масса. |
|||
17
Vakhrin
20.12.11
✎
13:00
|
(14) спасибо )
|
|||
18
DmitrO
20.12.11
✎
13:46
|
Ну вообще говоря работа через COMConnector вполне возможна.
Вот рабочий примерчик: declare @Connector int, @V8 int; declare hr int; declare @src nvarchar(255), @desc nvarchar(255) execute hr = sp_OACreate N'V82.ComConnector', @Connector out if hr<>0 begin execute sp_OAGetErrorInfo @Connector, @src out, @desc out select HRESULT=convert(varbinary(4),hr), Source=@src, Description=@desc return end execute hr = sp_OAMethod @Connector, N'Connect', @V8 out, N'Srvr="MyV8Server";Ref="MyDatabase";' if hr<>0 begin execute sp_OAGetErrorInfo @Connector, @src out, @desc out select HRESULT=convert(varbinary(4),hr), Source=@src, Description=@desc return end select 'I am ready to work.' execute hr = sp_OADestroy @V8 execute hr = sp_OADestroy @Connector Кроме того COMConnector поддерживает пулинг, так что и с практической стороны применения вполне возможна тоже. |
|||
19
rs_trade
20.12.11
✎
13:57
|
(18) Как представить какой это гемор, вот так с 1С работать из скуля. Все желание сразу отпадет. Если нужна работа именно по ком с 1С то лучше уж CLR сборку сделать.
|
|||
20
managed_heap
20.12.11
✎
13:58
|
Благодарю всех отписавшихся. Основная проблема состоит в том, что предприятие государственное и невыполненный в сроки план= лишение премии, а под праздники этого не хочется.
(13) Первая очередь это нормативно-справочная и условно-постоянная инфромация: Справочники номенклатуры, контрагентов, подразделений и т.д. В последствие предполагается реализовать он-лайн обмен данными между ЦБД(MsSQL 2008R2 Enterprise) и 1С УПП 8.2(СУБД MsSQL 2008R2 Standart). (16) Sybase в сторону реплики между ним и ЦБД уже сделал. Моих текущих знаний 1с и MsSQL 2008R2 не хватает для создания импорта данных из ЦБД в 1С. А сроки жмут, как и человеческие ресурсы. (18) Спасибо, попробую. |
|||
21
DmitrO
20.12.11
✎
14:02
|
(19)Да согласен, писать не удобно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |