среда, 5 октября 2016 г.

1С 7.7 + OLE часть 1/3


Подробно описано:

Простой пример:
БазаОле = СоздатьОбъект("V77.Application");
КаталогБазыОЛе  = "D:\base";
ПользовательОле = "";
ПарольОле       = "";
МонопольныйРежимOLE = " /m"; // для немонопольного запуска указать пустую строку!
ЗапускБезЗаставки = 0;    // без заставки 1, с заставкой 0
РезультатПодключения = БазаОле.Initialize(БазаОле.RMTrade , "/d" + СокрЛП(КаталогБазыОле) + " /n" + СокрЛП(ПользовательОле) +
 " /p" + СокрЛП(ПарольОле) + МонопольныйРежимOLE,
 ?(ЗапускБезЗаставки = 1, "NO_SPLASH_SHOW", ""));
Если РезультатПодключения = 0 Тогда
    Предупреждение("Не удалось подключится к указанной базе - проверьте вводные!");
КонецЕсли;
 
//
КонтрагентыOLE = БазаОле.CreateObject("Справочник.Контрагенты");
КонтрагентыOLE.ВыбратьЭлементы();
Пока КонтрагентыOLE.ПолучитьЭлемент()=1 Цикл
   Сообщить(КонтрагентыOLE.Наименование);
КонецЦикла;



Возможные проблемы:
http://www.forum.mista.ru/topic.php?id=395287
При использовании работы ИБ через OLE выдается сообщение: "Действие не может быть завершено, так как другая программа занята. (сервер занят)
Для перехода к этой программе воспользуйтесь кнопкой "Переключиться"."

Время до появления диалога "зашито" в 1С:Предприятие и не может быть изменено из встроенного языка или внешними средствами. Однако согласно документации Микрософт данное сообщение появляется только в случае, если пользователь использовал кливиатуру или мышь во время работы OLE-сервера - поэтому можно посоветовать после запуска обработки дождаться ее завершения, и лишь затем продолжить работу.

Вариант решения: Программа для автоматического закрытия окна "Server busy"
Данная утилита выполняет одну единственную функцию - каждые 5 секунд проверяет наличие окна с заголовком "Server busy" и жмет на кнопку "Retry" до тех пор, пока оно не закроется.
При запуске программы необходимо нажать кнопку "Старт" и свернуть в трей. При наведении курсора мыши на значок в трее программа показывает количество "кликов", если они были, т.е. сколько раз программа "нажимала" на "Retry".

Комментариев нет: