Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > из программы вызвать процедуру 1С


Автор: chaos 18.9.2007, 11:57
здрасте!!!
столкнулся такой проблемой
необходимо из программы(TAPI манагер так сказать) вызвать процедуру в 1С. те надо просто передать строку(номер телефона) в процедуру 1С. как это сделать? 


Заранее благодарен!

Автор: SaschaL 18.9.2007, 12:49
То есть тебе из одной программы нужно передать информацию в 1С я правильно понял?
А можно уточнить что имеено эта программа делает? чтобы более точно представлять что нужно именно сделать...

Автор: chaos 18.9.2007, 13:11
программа ни чего не делает по большому счету smile при загрузке системы "сидит и ждет" пока не поступит выходящий звонок. далее она должна передать номер звонящего в 1С. вот и все

Автор: SaschaL 18.9.2007, 13:43
Понял! Это способ конечно есть, но вот не плохо бы посмотреть на эту программу, я так понял что это программа для мини АТС.
А библиотеке у него открытые или может есть Внешняя компанента, для соединения с другими программами, посмотри в комплекте к этой программе или в документации которая с ним шла если таковая имеется...

Автор: chaos 18.9.2007, 13:57
SaschaL, есть вариант(но пока не пробовал) написал COM сервер для работы с АТСкой. думал что можно его в 1С загружать и "опрашивать" по таймеру в 1С, но вроде как мне сказали что этот таймер в 1С(не помню процедуру) не работает в SQL версии - это так? если он будет работать то все ок.

Добавлено через 5 минут и 26 секунд
Цитата(SaschaL @ 18.9.2007,  15:43)
Понял! Это способ конечно есть, но вот не плохо бы посмотреть на эту программу, я так понял что это программа для мини АТС.
А библиотеке у него открытые или может есть Внешняя компанента, для соединения с другими программами, посмотри в комплекте к этой программе или в документации которая с ним шла если таковая имеется...

прога самописная использующая TAPI виндовый

Автор: alexterium 18.9.2007, 16:10
chaos
А почему нельзя из твоей проги запускать 1С как COM-сервер и передавать в 1С данные?
Или проблема в том, как вызвать процедуру через COM-подключение?

Автор: chaos 19.9.2007, 07:10
дело в том что идея такая: при поступлении звонка нада передать номер в 1С а в 1С в свою очередь должна показать окошка опреатору о том кто звонит

Добавлено через 1 минуту и 10 секунд
Цитата(alexterium @ 18.9.2007,  18:10)
chaos
А почему нельзя из твоей проги запускать 1С как COM-сервер и передавать в 1С данные?
Или проблема в том, как вызвать процедуру через COM-подключение?

1. так не хочется
2. не понял

Добавлено через 1 минуту и 49 секунд
Цитата

думал что можно его в 1С загружать и "опрашивать" по таймеру в 1С, но вроде как мне сказали что этот таймер в 1С(не помню процедуру) не работает в SQL версии - это так? если он будет работать то все ок.


а что с этим, кто-нибудь подскажет?

Автор: AkelaSQL 19.9.2007, 13:18
Вот посмотри:

http://www.mista.ru/articles1c/ole.htm

Там описано как зацепиться к 1С извне. Далее пишешь свой номер в специально созданный справочник. Справочник будешь опрашивать на наличие новых записей процедурой, которую необходимо написать в 1С, жел. в глобальном модуле. Эту процедуру будет вызывать "ОбработкаОжидания(ИмяПроцедуры, интервал)"

Обрати внимание, что при подключение 1С по OLE есть некоторые "грабли". Все операторы желательно(иногда обязательно) писать в англоязычном варианте. Передавать между приложениями можно только параметры примитивных типов (объектные не проглатывает).

Удачи, будут проблемы пиши, выложу образцы кода.

Автор: chaos 20.9.2007, 09:28
Цитата(AkelaSQL @ 19.9.2007,  15:18)
Справочник будешь опрашивать на наличие новых записей процедурой, которую необходимо написать в 1С, жел. в глобальном модуле. Эту процедуру будет вызывать "ОбработкаОжидания(ИмяПроцедуры, интервал)"

такое у меня и раньше было

Код

//*****************************************************************************
//Date: 5 June 2007                                                          
//Version: 1.0                                                                    
//Author: Kononenko Denis                                               
//Email: xxxxxxxxxx@yahoo.com                                       
//*****************************************************************************
Var MAL_TapiObj;
 
Function MAL_InitTapi()
 Var fResult, sProgId, nElapsed;
 
 nElapsed = 1;
 sMalTapiProgId = "malptapi.ptapif1c";
 
 Try
  MAL_TapiObj = New COMObject(sMalTapiProgId);      
  fResult = TRUE;
  AttachIdleHandler("MAL_OnTapiProcess", nElapsed);
 Except
  fResult = FALSE;
  DoMessageBox(ErrorDescription());
 EndTry;     
  
 Return fResult;
EndFunction
 
Procedure MAL_UnInitTapi()
 DetachIdleHandler("MAL_OnTapiProcess");
 MAL_TapiObj = NULL;
EndProcedure
 
Procedure MAL_OnTapiProcess() Export
 Try
  If MAL_TapiObj.IsCalling() > 0 Then
   MAL_TapiObj.Reset();
   MAL_OnCalling(MAL_TapiObj.GetPhoneNumber());
  EndIF
 Except
  DoMessageBox(ErrorDescription());
 EndTry;     
EndProcedure
//*****************************************************************************
 
Процедура ПередНачаломРаботыСистемы(Отказ)  
 If FALSE = MAL_InitTapi() Then Отказ = TRUE; Return; EndIf;   
КонецПроцедуры
 
Процедура ПередЗавершениемРаботыСистемы()
 MAL_UnInitTapi();
КонецПроцедуры

Автор: AkelaSQL 20.9.2007, 10:47
Слушай, а какое хранилище использует Прога для АТС. Просто мысль пошла вот в каком направлении:
Если возможно подключить БД АТС по ODBC, то найти таблицу и опрашивать её по таймеру - это как два байта переслать! ВК для работы с БД по ODBC для 1С полно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)