- 1
- 2
- 3
- . . .
- последняя »
Взаимодействие через 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 типа "Строка неограниченной длины". К этому же еще надо добавить и периодические реквизиты. Естественно, под методом присвоения
- 1
- 2
- 3
- . . .
- последняя »
Похожие работы
Интересная статья: Быстрое написание курсовой работы