Может кто подскажет (хотя бы с чего начать изучение, ключевые слова): как можно в 8-ке реализовать обмен данными. Например, я работаю в конф. "Бухгалтерия" и хочу запросить кадровые данные на сотрудника из конф. "УПП" (на удаленном компе) синхронизированные по таб номеру (или ИНН). Можно ли это сделать штатными способами (и сколькими)?
Или проще писать dll-ки, которые через wind-овый COM-маршаллинг запустят на удаленном компе другую dll-2, которая запустит 1Сv8, которая выудит данные, которые отправятся обратно ко мне и т.д. и т.п.
(Так часто сталкиваешься с запросами и их обработкой (например при googl-ении), что начинает казаться, что это очень просто.)
Насколько я на сегодняшний день понимаю (этой темой и 8-кой занимаюсь недавно):
1) Получить разовые данные из удаленной базы можно через COM- (объект v8COMConnect) или Automation- (v8.Application) подключения. Которые, похоже, подключаются напрямую к ФАЙЛАМ удаленной базы (при наличии соответствующих Windows-прав доступа на файлы). Независимые подключения к файлам базы, похоже разрешены 1С.
2) Если удаленная база хорошо запрятана в удаленной сети, то взаимодействовать нужно через WEB-сервер и Активные Страницы, постоянно-запущенные в удаленной сети. К Активным Страницам можно делать подобие разового кадрового запроса. Сама удаленная Активная Страница взаимодействует с целевой базой также через COM- или Automation- подключения к ФАЙЛАМ базы.
Можно ли подключиться не к ФАЙЛАМ, а к самому постоянно-запущенному ПРИЛОЖЕНИЮ/ПРОЦЕССУ 1С через порт и посылать ему раз в неделю кадровый запрос непойму. Хотя наличие 3-уровневой архитектуры (выделенный сервер приложения) и кода, выполняемого на стороне сервера вроде зовет проверить эту возможность.
Хотя, т.к. кадровые данные могут вестись не только в 1С, но и в Excel, Paradox/DBF и т.д., то взаимодействие через постоянно-запущенный WEB-сервер возможно лучче.
Или, ещё проще, -- позвонить (не в обед), чтобы прислали по электронке хорошо-запароленный rar-архив с необходимыми данными и "немного" подождать. Главный плюс "телефонного" запроса -- наличие "подписи/ответственности" за предоставленные данные. А главнейший минус -- возможность ошибок, фальсификаций, отсутствие независимого контроля данных.
3) В 7-ке, вроде была какая-то функция "ОбработкаВеншнегоСобытия()", возможно это и есть прямой путь достучаться до запущенного 1С-ехе-шника. Только наверняка придется прикинуться dll-кой. Но и в этом случае проблемы с запросами из внешних сетей останутся. Так что -- web-службы отлаженные и защищаемые ?
4) В общем случае прямой доступ ко всей базе (всем файлам) ВСЕМ пользователям давать не хочется. Должен быть какой-то фильтрующий орган (WEB-сервер, 1С-ский ехе-шник).
(Слышал, что в SQL-базах можно разграничить доступ до отдельных записей. Далее всякие "источники Данных ADO" и т.д. Но 1С-овские данные хранятся во внутреннем формате...)
В принципе, для не слишком обильного траффика сообщений можно не "отправлять" запрос в целевую конфигурацию, а "положить" запрос для целевой конфигурации в предопределенную папку. Пусть сама оттуда берет, анализирует и шлет мне ответ.
Возможно стоит посмотреть в сторону MOM (Message Oriented Middleware).
Например MSMQ http://en.wikipedia.org/wiki/MSMQ.
Вся прелесть обмена данными через MSMQ в том, что посылающее и принимающее приложения не обязаны одновременно быть on-line.
Пример кода для v7.7 есть тут: http://www.1cpp.ru/forum/YaBB.pl?num=1154885072/37#37 легко адаптируется для v8.
Наверное, лучший выход - это электронная почта.
1) Может прорваться далеко в сеть, к любому настроенному компу.
2) Принимающее приложение 1с играет активную роль по фильтрации запроса.
3) Ответ может сформировать автоматически постоянно-запущенный сеанс (сервер) [наверное(?)], даже при отключенных пользователях. (например проверка почты 1 раз в час)
4) При необходимости, ответ можно ускорить -- пользователь вручную. (Почти on-line.)