gifts2017

Шаблон внешней компоненты для 1с 7.7, 8.1 на С++ Builder 6.

Опубликовал Alex Bol (zombi81) в раздел Программирование - Внешние компоненты

В свое время потребовалось организовать чтение бинарного файла из 1с. Подходящего COM объекта я тогда не нашел и решил написать свою внешнюю компоненту. Почитав ИТС и интернет, я не смог найти работающего исходника на С++ Builder, пришлось воспользоваться методом проб и ошибок и сделать свой шаблон компоненты. Реализован интерфейс ILanguageExtender, можно из встроенного языка устанавливать свойства компоненты и вызывать ее методы. Также я попробовал реализовать "вшитые" в dll функции, как это делают в коробочных решениях. При необходимости можно добавить код проверки наличия аппаратного ключа или привязать проверку к определенному серийному номеру винчестера ПК и, таким образом, выполнять или не выполнять дальнейший код "вшитой" в компоненту функции.

Проверить работу вшитой функции можно на любой конфигурации, в которой есть справочник "Номенклатура" (выполняется запрос с текстом ВЫБРАТЬ Номенклатура.Ссылка, Номенклатура.Наименование ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ(&ВыбГруппа)).

В публикации 2 варианта шаблона внешней компоненты - со страницей свойств и без нее. В последнем случае размер dll файла получается примерно на 300 кбт меньше.

При компиляции могут выдаваться ошибки

[C++ Error] atlcom.h(1877): E2352 Cannot create instance of abstract class 'CComObject<TAddInImpl>'
[C++ Error] atlcom.h(1877): E2353 Class 'CComObject<TAddInImpl>' is abstract because of '__stdcall ILanguageExtender::CallAsFunc(long,tagVARIANT *,tagSAFEARRAY * *) = 0'
[C++ Error] atlvcl.h(1271): E2451 Undefined symbol 'e'

Так как в библиотеке типов невозможно выбрать OleVariant*, а можно выбрать только VARIANT*, то необходимо каждый раз при появлении такой ошибки в файл проекта Template_Builder_TLB.h вносить вручную изменения в параметры функции CallAsFunc, заменяя VARIANT* на OleVariant* в трех местах этого файла.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Шаблон со страницей свойств внешней компоненты
.zip 357,37Kb
07.08.15
6
.zip 357,37Kb 6 Скачать
Шаблон БЕЗ страницы свойств внешней компоненты
.zip 187,54Kb
09.07.15
1
.zip 187,54Kb 1 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Олег Пономаренко (O-Planet) 11.09.14 10:44
Что-то не так делаю (( Говорит: "Загрузка началась", но ничего не происходит. Но шаблон очень нужный!
2. Cooler (Cooler) 11.09.14 10:01
(1)
Что-то не так делаю
Не обязательно, ваши собраться по несчастью: http://forum.infostart.ru/forum17/topic116571/
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа