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С-ка сама проверяет, зарегистрирован ли сервер и если нет - регистрирует.