Адрес этой странички:
http://d1cv8.narod.ru/top_005/d1cv8_20090923_001/d1cv8_20090923_001.htm Дата: 23.09.2009 Интернет-приложение к книге "Delphi и 1С:Предприятие.Программирование информационного обмена" |
Глава 5. Расширение
функционала 1С.
5.2 Внутрипроцессный сервер автоматизации.
Внешние компоненты в среде 1Cv8
(продолжение).
Что делать, если в "старых" (для 1Cv7) DLL-ках
вызываются методы,
которых уже нет (или они не доступны) в 1Cv8
(и они по этой причине уже не работают в 8-ке) ?
Например: "ОчиститьОкноСообщений();"
"ExecuteBatch()"; ...
|
Для того, чтобы программа 1cv8.exe "нашла" соответствующие DLL-модули (внешние компоненты), нужно разместить их в каталоге запуска программы :
...\1cv8\bin\
В предыдущей статье был рассмотрен вопрос применимости "внешних компонент" (разработанных для 1Cv7), содержащих только собственные свойства и методы (без обращения к объектам и методам системы 1С), в контексте 1Cv8. Вероятность корректного функционирования такой внешней компоненты в среде 1Cv8 достаточно велика.
Но как быть, если "внешняя компонента" обращается к
таким методам 1Cv7, которых в 1Cv8
нет, их идентификаторы(имена) изменены или они просто недоступны (через
OLE Automation) ...
Например, методы EvalExpr, ExecuteBatch,
ОчиститьОкноСообщений ...
Как вариант, такую проблему можно решить, создав в каком-либо общем модуле 1Cv8 соответствующие процедуры(функции) примерно так, как это было реализовано в рамках статьи : "Возможный вариант эмуляции метода EvalExpr" .
Точно также можно эмулировать метод 1Cv7:
"СоздатьОбъект":
Но проблема в том, что у многих объектов (например, СписокЗначений) в контексте 1Cv8 изменились и имена методов ...
Например :
1Cv7 | 1Cv8 |
ДобавитьЗначение | Добавить |
УдалитьВсе | Очистить |
Т.е., этот момент может привести к тому, что без перепрограммирования "внешней компоненты" (использующей такие методы 1Cv7) корректность ее функционирования в среде 1Cv8 будет под сомнением.
На стр.397 (книги) был детально рассмотрен вариант "внешней компоненты", как раз подходящей для иллюстрации этого случая.
Ниже приведен возможный вариант (без комментария) доработки "внешней компоненты" для системы 1Cv8 (с учетом доработки конфигурации 1Cv8, см.выше).
1Cv7 | 1Cv8 |
Пример использования (исходники,
детальное описание и комментарии - на стр.397 книги и на прилагаемом к книге
CD).
Имя DLL-файла
: AddIn_Example01_04.dll
Имя компоненты :
AddIn_Example01
Функционал:
Свойство: "Состояние"
(включен, выключен)
Методы
: "Включить", "Выключить".
События : "Обработка
внешнего события"
Методы :
"ОчиститьОкноСообщений",
"Сообщить", "ВывестиВСтрокуСтатуса", "СоздатьСписокФайлов", "ПолучитьСписокФайлов"
Работа с объектом типа "СписокЗначений".
1Cv7 (скачать) |
1Cv8 (скачать) |
|
Форма :
Программный модуль :
Режим RunTime
("Сообщить" ):
Режим RunTime
("Очистить окно сообщений" ):
Режим RunTime
("СоздатьСписокФайлов" ):
Режим RunTime
("ПолучитьСписокФайлов" ):
|
Форма :
Режим RunTime
("Сообщить" ):
Режим RunTime
("Очистить окно сообщений" ):
|
Совместимость : требуется доработка "внешней компоненты" ...