Интеграция приложений (Interbase + 1C)

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

MMF
Сообщения: 17
Зарегистрирован: 17 дек 2004, 17:59

Сообщение MMF » 21 окт 2005, 23:17

Я бы посоветовал зайти с другой стороны. Более производительно и надежно - написать внешнюю компоненту 1С и из нее отслеживать изменения как в 1С (вызывая при записи элемента справочника метод компоненты), так и в ИБ (подписавшись из компоненты на события базы). В этом случае не будет использоваться тормозной код
App1C := CreateOleObject('V8.COMConnector');
Connect1C := App1C.Connect('Srvr="okulov";Ref="ovvDemo";...
можно будет не бояться падений udf и вообще все будет в шоколаде :-)

ovv
Сообщения: 13
Зарегистрирован: 19 окт 2005, 09:03

Сообщение ovv » 22 окт 2005, 09:24

А есть ли у кого-нибудь исходники внешнего компонента для 1С, лучше для 1С 8.0 ?

MMF
Сообщения: 17
Зарегистрирован: 17 дек 2004, 17:59

Сообщение MMF » 22 окт 2005, 12:01


ovv
Сообщения: 13
Зарегистрирован: 19 окт 2005, 09:03

Сообщение ovv » 24 окт 2005, 08:42

По своей тёмности, возник вопрос: внешняя компонета это dll-ка, она постоянно будет в памяти, и будет принимать эвенты с interbase ? Объясните пожалуйста по подробнее о запуске и взаимодействии внешней компонеты с interbase.

MMF
Сообщения: 17
Зарегистрирован: 17 дек 2004, 17:59

Сообщение MMF » 24 окт 2005, 10:52

Внешняя компонента 1С - in-proc сервер, реализующий несколько обязательных условий для подключения. 1С загружает его при выполнении метода "ЗагрузитьВнешнююКомпоненту". Описание можно найти в "Технологии разработки внешних компонент", методичке 1С.
Загрузив компоненту в ПриНачалеРаботыСистемы() создаешь объект компоненты, экспортируемый из глобального модуля. В событии записи элемента справочника 1С вызываешь метод объекта компоненты, к-й добавляет запись в ИБ (через IBX, FIBplus и т.п.). А при возникновении эвента - компонента создает соответствующий элемент в справочнике 1С, это выполняется быстро, поскольку в компоненте доступен IDispatch 1С-ки (передается в Init - при инициализации компоненты).

ovv
Сообщения: 13
Зарегистрирован: 19 окт 2005, 09:03

Сообщение ovv » 24 окт 2005, 11:21

Тут наверно будет проблема, если допустим кто-то добавить новую запись в TechnologiCS (Interbase), а в 1С ни кто не работает, т.е. ловить эвент некому. И если несколько пользователей работают в 1С, то каждый будет ловить эвенты и пытаться добавить новую запись в 1С, добавленную в TechnologiCS (Interbase) ?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 окт 2005, 12:21

о чем я тебе и пытаюсь растолковать.

MMF
Сообщения: 17
Зарегистрирован: 17 дек 2004, 17:59

Сообщение MMF » 24 окт 2005, 12:58

Можно сделать специального пользователя 1С - Репликатор. Только его сеанс загружает компоненту и он постоянно в 1С. Конечно, в этом случае возможна рассинхронизация данных.
Полноценную систему написать сложнее. в 8-ке получить соответствие Объект1С.Свойство <-> ТаблицаБД.ПолеТаблицы из внешнего приложения несколько проблемно (хотя я знаю человека, продающего решение для репликации баз 1С 8-ки).

ovv
Сообщения: 13
Зарегистрирован: 19 окт 2005, 09:03

Сообщение ovv » 25 окт 2005, 08:45

А можно ли сделать внешнюю компоненту 1С в виде exe-ка или службы NT ?

MMF
Сообщения: 17
Зарегистрирован: 17 дек 2004, 17:59

Сообщение MMF » 25 окт 2005, 08:55

" можно ли сделать внешнюю компоненту 1С в виде exe-ка или службы NT ?" - нет :-(

ovv
Сообщения: 13
Зарегистрирован: 19 окт 2005, 09:03

Сообщение ovv » 26 окт 2005, 08:15

В доке "технология создания внешних компонент" написанно:
  • ПодключитьВнешнююКомпоненту
    Описание:
    Внешние компоненты подключаются функцией встроенного языка ПодключитьВнешнююКомпоненту . Внешняя компонента может быть как динамически загружаемой библиотекой (например, DLL или OCX), так и ПРИЛОЖЕНИЕМ.
Ни вкурсе, что конкретно имеется в виду под словом "ПРИЛОЖЕНИЕМ" ?

MMF
Сообщения: 17
Зарегистрирован: 17 дек 2004, 17:59

Сообщение MMF » 26 окт 2005, 11:43

Предполагаю, что в этом случае 1С может использовать не внутренний, а внешний сервер автоматизации. Только так никто не делает. При использовании ЗагрузитьВнешнююКомпоненту 1С-ка сама проверяет, зарегистрирован ли сервер и если нет - регистрирует.

Ответить