Читать статья по информатике, вычислительной технике, телекоммуникациям: "Взаимодействие через OLE" Страница 1

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

Взаимодействие через OLE

Егоров Андрей Викторович, руководитель информационно-технического отдела ООО МФФ "Аконит"

Примечание - большая часть написанного здесь текста с примерами взята по памяти (пару лет назад изучал достаточно подробно, поэтому может что-то в алгоритмах не работать - я ведь их не копировал откуда-то, а прямо тут же и писал, так что за синтаксические ошибки не пинайте) - на данный момент я активно OLE не пользуюсь (не из-за каких-то проблем с самим OLE, а из-за отсутствия надобности в его использовании в текущий момент).

Основные преимущества, благодаря которым OLE активно используется:

Для вызывающей базы "по барабану" - какой тип вызываемой базы (DBF или SQL)

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

Пример 1. Присоединение к базе 1С через OLE.

БазаОле=СоздатьОбъект("V77.Application");// Получаемдоступ к OLE объекту1С

Локальнаяверсия (на одногопользователя):

V77L.Application

Сетеваяверсия:

V77.Application

ВерсияSQL:

V77S.Application

Далее вместо термина "вызываемая база" будет написано просто "база OLE", а вместо термина "вызывающая база" - "местная база"

Теперь, мы должны знать несколько параметров для запуска базы OLE: Каталог базы, имя пользователя и пароль. Ну, наверное, еще и желание запустить 1С в монопольном режиме :)

КаталогБазыОЛе= "C:\program files\1cv77\МояБаза\";ПользовательОле= "Администратор";ПарольОле= "qwerty";МонопольныйРежимOLE= " /m"; // для немонопольногозапуска указатьпустую строку!ЗапускБезЗаставки= 1; // для появлениязаставки(например, чтобынаблюдать//процесс запускабазы OLE визуально)поставьтездесь "0"РезультатПодключения= БазаОле.Initialize (БазаОле.RMTrade , "/d"+СокрЛП(КаталогБазыОле)+ " /n" + СокрЛП(ПользовательОле)+"/p" + СокрЛП(ПарольОле)+ МонопольныйРежимOLE,?(ЗапускБезЗаставки= 1, "NO_SPLASH_SHOW", ""));ЕслиРезультатПодключения= 0 ТогдаПредупреждение("Неудалось подключитсяк указаннойбазе - проверьтевводные!");КонецЕсли;

Комментарий: функции СокрЛП() стоят в примере на случай, если пользователь захочет указанные выше переменные сделать в форме диалога, а проблема при этом состоит в том, что в алгоритм программа передаст полное значение реквизита (т.е. допишет в конце значения то количество пробелов, которое необходимо для получения полной длины строки (указана в свойствах реквизита диалога)).

Пример 2. Доступ к объектам базы OLE.

Запомните на будущее как непреложный факт:

Из местной базы в базу OLE (и, соответственно, наоборот) напрямую методом присвоения можно перенести только числовые значения, даты и строки ограниченной длины!!! Т.е. местная база поймет прекрасно без дополнительных алгоритмов преобразования полученного значения только указанные типы значений. Кроме того, под ограничением строк подразумевается проблемы с пониманием в местной базе реквизитов объектов базы OLE типа "Строка неограниченной длины". К этому же еще надо добавить и периодические реквизиты. Естественно, под методом присвоения


Интересная статья: Быстрое написание курсовой работы