Адрес этой странички: 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()"; ...


Информацию о назначении "
Технологии внешних компонент" можно посмотреть на сайте фирмы 1С :  http://v8.1c.ru/overview/IntegrationExtComp.htm
 


Для того, чтобы программа 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
("В строку статуса" ):

 

 

Режим RunTime ("Сообщить" ):

 

Режим RunTime ("Очистить окно сообщений" ):





Режим RunTime
("СоздатьСписокФайлов" ):

 

 

 

 

 


 


Режим
RunTime
("ПолучитьСписокФайлов" ):


 

Совместимость :  требуется доработка "внешней компоненты" ...

 

 

 


(c) Сергей Попов, респ.Коми, г.Усинск, 2007  Письмецо написать ...


Hosted by uCoz