Необходимо привязать 1С к TS CRM для выписки счета на оплату, Акта выполненных работ, Приходно-кассового ордера, и получения данных из документа Выписка банка. Планирую связь реализовать через OLE.
Связь с 1С
onesobj = new ActiveXObject('V77.Application');
var ConnectString = '/D"g:\\c\\1c"\\" /N ....';
onesobj.initialize(onesobj.rmtrade, ConnectString, 'NO_SPLASH_SHOW');
var ConnectString = '/D"g:\\c\\1c"\\" /N ....';
onesobj.initialize(onesobj.rmtrade, ConnectString, 'NO_SPLASH_SHOW');
Выписка Счета на оплату
var Dok=onesobj.createobject('Документ.Счет');
Dok.Новый();
Dok.Записать();
//глОткрытьформу1- это функция в глобальном модуле 1с,отображающая модально документ с определенным номером и датой
var s= 'глОткрытьформу1("%1","%2","%3");';
var dat= new Date(Dok.ДатаДок);
var dat1=DatToStrV(dat)
var s1=FormatStr(s,'Документ.Счет',Dok.НомерДок,dat1);
//Отображает окно 1С
System.BringWindowToFront(onesHandle);
Dok.Новый();
Dok.Записать();
//глОткрытьформу1- это функция в глобальном модуле 1с,отображающая модально документ с определенным номером и датой
var s= 'глОткрытьформу1("%1","%2","%3");';
var dat= new Date(Dok.ДатаДок);
var dat1=DatToStrV(dat)
var s1=FormatStr(s,'Документ.Счет',Dok.НомерДок,dat1);
//Отображает окно 1С
System.BringWindowToFront(onesHandle);
Все работает, вот только хэндл окна 1С (onesHandle) приходится выдергивать отдельной программой, написанной на Delphi.
Begin
h:=FindWindow('1C:Предприятие',nil);
ShowWindow(h,sw_show);
showmessage(inttostr(h));
end;
Умеет ли Terrasoft CRM находить хэндлы сторонних приложений по их caption?
Или может быть подскажите другой способ отображения окна 1С?
Нравится
3 комментария
19 января 2011 09:44
Нужно вызвать функцию FindWindow (WinAPI)
возможно, Вам подойдет способ описанный здесь:
http://community.terrasoft.ua/blogs/2402
19 января 2011 10:48
Если Вам нужно только активизировать окно, можно так:
var WshShell = new ActiveXObject("WScript.Shell"); WshShell.AppActivate("1С:Предприятие");
Правда, данный код выводит окно на первый план только если оно не свёрнуто на панель задач. Если же оно свёрнуто, разворачивания не произойдёт, просто кнопка приложения станет "нажатой" (начнёт мигать).
26 января 2011 13:09
Спасибо!
Сделал, через FindWindow (WinAPI), при помощи DynamicWrapper.
Wrap = System.CreateObject("DynamicWrapper"); Wrap.Register("user32.DLL", "FindWindow", "i=ss", "f=s", "r=l"); Wrap.Register("user32.DLL", "ShowWindow", "i=ll", "f=s", "r=l"); var handl=Wrap.FindWindow(0,"1С:Предприятие - Бухгалтерский учет для Казахстана, ред. 2.5: ТОО УМИКУМ"); Wrap.ShowWindow(handl,3); System.BringWindowToFront(handl);
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать