ШАГ 1. Установка компонента DELPHI Запускаем DELPHI Открываем Addin1cHelp.dpk из папки 1C_ADDIN_HELPER DELPHI 6 DELPHI XE3.

1С_ADDIN_HELPER
Помощник создания внешних компонент 1С (технология COM) с помощью DELPHI_6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3
Оглавление
13 TOC \o "1-3" \h \z \u 1413 LINK \l "_Toc352177628" 141С_ADDIN_HELPER 13 PAGEREF _Toc352177628 \h 1411515
13 LINK \l "_Toc352177629" 14Введение 13 PAGEREF _Toc352177629 \h 1421515
13 LINK \l "_Toc352177630" 14Что это такое: 13 PAGEREF _Toc352177630 \h 1421515
13 LINK \l "_Toc352177631" 14Почему до сих пор создавать по технологии COM 13 PAGEREF _Toc352177631 \h 1421515
13 LINK \l "_Toc352177632" 14Почему DELPHI 13 PAGEREF _Toc352177632 \h 1421515
13 LINK \l "_Toc352177633" 14Почему мой проект, ведь полно в сети различных проектов на эту тему в том числе, бесплатных 13 PAGEREF _Toc352177633 \h 1421515
13 LINK \l "_Toc352177634" 14Начало работы 13 PAGEREF _Toc352177634 \h 1431515
13 LINK \l "_Toc352177635" 14Содержимое архива 13 PAGEREF _Toc352177635 \h 1431515
13 LINK \l "_Toc352177636" 14ШАГ 1. Установка компонента DELPHI 13 PAGEREF _Toc352177636 \h 1431515
13 LINK \l "_Toc352177637" 14ШАГ 3. Как добавлять функционал внешней компоненты 13 PAGEREF _Toc352177637 \h 1461515
13 LINK \l "_Toc352177638" 14Полезные знания 13 PAGEREF _Toc352177638 \h 14101515
13 LINK \l "_Toc352177639" 14Описание демо-проекта 13 PAGEREF _Toc352177639 \h 14111515
15

Введение
Что это такое:
Это компонент для DELPHI (любой версии), позволяющий значительно упростить создание внешних компонент 1С (технология COM)
Это генератор проекта внешней компоненты, позволяющий получить готовый проект за несколько секунд. Остается только добавлять свойства и методы своей компоненты с помощью визуального редактора. Все идентификаторы, имена, интерфейсы уже прописаны генератором проекта.

Почему до сих пор создавать по технологии COM
Эта технология дает возможность написания универсальной компоненты, которая будет работать для всех версий 1С:Предприятия под windows 7.7/8.0/8.1/8.2/8.3
Многие старые компоненты написаны по этой технологии. Для создания их современной замены без изменения конфигурации 1С необходимо использовать именно эту технологию.
Например, для подключения новых видов торгового оборудования к типовым программам, лишенным теперь внешних обработок обслуживания оборудования.
Технология хорошо документирована и проверена временем.
Почему DELPHI
Относительно невысокая стоимость самой среды разработки.
Обилие в сети бесплатных или дешевых компонент для работы с чем угодно.
Наименьшее время разработки.
Многие программисты 1С перешли с паскаля и им достаточно просто освоить DELPHI.

Почему мой проект, ведь полно в сети различных проектов на эту тему в том числе, бесплатных
Включены все исходные коды.
Готовый проект внешней компоненты 1С можно получить за несколько секунд, не разбираясь в том, как там что устроено.
Экспортируются и используются все документированные 1С интерфейсы.
Свойства и методы внешней компоненты можно добавлять визуально, как объекты обычной коллекции.
Подробная документация
Начало работы
Содержимое архива
1C_ADDIN_HELPER. Компонент для DELPHI. Его надо установить. Инструкция ниже.
1C_ADDIN_ProjectCreator. Генератор проекта внешней компоненты. Инструкция ниже.
1C_ADDIN_DEMO. Демо-проект внешней компоненты, сделанный по данной технологии. Также включены обработки 1С 7.7 и 1С 8.2 для проверки работы компоненты. Инструкция ниже.
ШАГ 1. Установка компонента DELPHI
Запускаем DELPHI
Открываем Addin1cHelp.dpk из папки 1C_ADDIN_HELPER
DELPHI 6
DELPHI XE3

Жмем Install
13 EMBED PBrush 1415
Жмем Install
13 EMBED PBrush 1415

Получаем сообщение, что все спешно
13 EMBED PBrush 1415
Получаем сообщение, что все спешно
13 EMBED PBrush 1415

Добавляем путь к папке1C_ADDIN_HELPER в библиотеку DELPHI.
Меню: Tools – Environment options - Library path
13 EMBED PBrush 1415
ADD-OK-OK
Добавляем путь к папке1C_ADDIN_HELPER в библиотеку DELPHI.
Меню: Tools – options - Library –library path
13 EMBED PBrush 1415
ADD-OK-OK

Компонент появляется в палитре DELPHI
13 EMBED PBrush 1415
Компонент появляется в палитре DELPHI
13 EMBED PBrush 1415


Данный шаг необходимо выполнить один раз. ШАГ 2. Генерация проекта внешней компоненты.
Запускаем PrCreator.exe из папки 1C_ADDIN_ProjectCreator

Указываем:
Путь к папке, в которой будет создан проект внешней компоненты
Имя библиотеки внешней компоненты (имя dll-ки)
Имя объекта внешней компоненты. Т.е имя, под которым ее объект можно будет создавать в 1С с помощью функций Новый() или СоздатьОбъект().
Если у компоненты должна быть страница свойств, ставим галочку «Нужна страница свойств».
Нажимаем большую кнопку «Создать». В указанной папке появляется DELPHI-проект внешней компоненты 1С с указанными параметрами.
Его можно открывать в DELPHI.
ШАГ 3. Как добавлять функционал внешней компоненты.
Весь функционал компоненты реализуется в модуле Un_DM_List.pas, основной объект которого унаследован от TDataModule. Это дает возможность простого использования компонентов из палитры компонент DELPHI.
Добавление свойств и методов внешней компоненты осуществляется через коллекции (T1CMethCollection) и (T1CPropCollection) объекта AddinFPList уже добавленного в проект генератором проектов.

Чтобы добавить свойство внешней компоненты 1С, щелкаем по (T1CPropCollection)

Добавляем элемент в коллекцию и прописываем его свойства:
Английское название
Русское название
Признак «IsReadOnly» запрещает 1С записывать в это свойство что либо.
Описываем события у нашего свойства:

OnGet
procedure TDM_List.AddinFPListProps0Get(var OldValue: OleVariant);
begin

end;

Это событие возникает, когда 1С пытается прочитать что либо из данного свойства. Прочитает она ровно то, что мы передадим в параметр OldValue. Тип OleVariant позволяет передавать строки, числа, даты, а также более сложные структуры, поддерживаемые 1С.
OnSet
procedure TDM_List.AddinFPListProps0Set(var NewValue: OleVariant);
begin

end;

Это событие возникает, когда 1С пытается записать что либо в данное свойство. Значение, которое 1С хочет записать, содержится в переменной NewValue. Мы можем обработать его, как хотим. Например, сохранить в одном из свойств нашего объекта. Тип OleVariant может быть преобразован в строку, число, или дату явным присваиванием. Компилятор DELPHI в этом случае берет работу по преобразованию типов на себя.
Чтобы добавить метод внешней компоненты 1С, щелкаем по (T1CMethCollection)

Добавляем элемент в коллекцию и прописываем его свойства:
Английское название
Русское название
Количество параметров
Признак «IsFunction» сообщит 1С, что этот метод может возвращать значения.
Описываем событие у нашего метода:

OnExecute
procedure TDM_List.AddinFPListMethods0Execute(var Params: PSafeArray;
var : OleVariant);
begin

end;

В переменную Params 1C передает параметры метода. Получить их можно, используя функцию GetNParam , добавленную в проект генератором. Эта функция имеет два параметра. В первый передается массив Params, во второй – номер параметра, который мы хотим получить. Нумерация параметров с нуля!
Var
Param1:String;
.
Param1:=GetNParam(Params,0); //Получаем первый параметр из массива

Можно также записать в Params значение некоторого параметра. Тогда 1С получит это значение после вызова метода (параметры передаются по ссылке). Для этого можно использовать функцию PutNParam, также имеющуюся в проекте. Онаимеет три параметра. В первый передается массив Params, во второй – номер устанавливаемого параметра, в третий – значение, которое мы хотим передать. Нумерация параметров с нуля!
Var
Param1:String;
.
PutNParam(Params,0,Param1); //Установим значение первого параметра для 1С

Ну и в случае, если наш метод может возвращать значения, можно передать возвращаемое значение в переменную Ret. Тип OleVariant позволяет передавать строки, числа, даты, а также более сложные структуры, поддерживаемые 1С.
Ret:='Тест'; //Передаем строковое значение в качестве результата работы метода


Объект DM_List экспортрует стандартные интерфейсы 1С:
_pEvent : IAsyncEvent;
_pErrorLog : IErrorLog;
_pProfile : IPropertyProfile;
_pStatusLine : IStatusLine;
Ими можно пользоваться в соответствии с их стандартным 1С-ким описанием. Дублировать его тут не буду. В поставляемом демо-проекте есть пример их использования.
1С-8 не реализует возможности интерфейса ExtWndSupport. Поэтому генератор проекта не добавляет экспорт этого интерфейса в проект. Вы можете сделать это самостоятельно в методе Init, описанном в AddInObj.pas.
Опционально генератор проекта может добавить в проект страницу свойств компоненты.

Обмен данными между объектом компоненты и страницей свойств осуществляется через унаследованный интерфейс IPropertyLink. В модуле страницы свойств описаны два метода:
UpdatePropertyPage. Запрашивает свойства из объекта и отображает их на форме страницы свойств.
Вызывается метод get_Config объекта DM_List, описанный в модуле Un_DM_List.pas
Передается структура TConfig, описанная в проекте в модуле AddInLib.pas . По сути это запись (RECORD).
Что нужно сделать для того, чтобы добавить какой-либо параметр для передачи из компоненты в страницу свойств:
Добавить элемент в структуру TRecord
В методе get_Config объекта DM_List прописать его заполнение.
В методе UpdatePropertyPage страницы свойств прописать его отображение на форме.
UpdateObject. Передает свойства со страницы свойств в объект компоненты.
Вызывается метод put_Config объекта DM_List, описанный в модуле Un_DM_List.pas
Передается та же структура TConfig.
Что нужно сделать для того, чтобы добавить какой-либо параметр для передачи со страницы свойств в компоненту:
В методе UpdateObject страницы свойств прописать заполнение элемента структуры CFG по данным формы.
В методе put_Config объекта DM_List прописать реакцию на изменение настройки со стороны страницы свойств.
В проекте реализована работа с профилем настроек внешних компонент 1С (pProfile).
Методы LoadProps() и SaveProps() объекта DM_List.
Данные методы вызываются автоматически при создании и уничтожении объекта, соответственно
Описано сохранение/восстановление значения _enabled (компонента включена).
Вы можете расширять количество сохраняемых значений.


Полезные знания
Для того, чтобы в 1С-8 компоненту можно было подключать по имени объекта, т.е писать ПодключитьВнешнююКомпоненту(«Addin.MyObj»), файл внешней компоненты надо зарегистрировать в реестре с помощью команды regsvr32. В проекте, создаваемом генератором, добавлен командный файл Register.cmd, выполняющий это действие.
Сложности могут возникнуть с передачей типа БУЛЕВО между 1С и внешней компонентой. 1С 7.7 такого типа вообще не знает. 1С-8 передает его в COM-компоненты в странном виде.
Описание демо-проекта
Демо-проект создан генератором проектов.
После этого в него добавлены следующие свойства и методы:
Метод «ПриветМир»
Имеет два параметра. Первый читает, второй возвращает.
Демонстрирует работу со строкой состояния в 1С (pStatusLine).
Демонстрирует работу с окном сообщений в 1С (pErrorLog)
Метод «ВернутьТест»
Параметров не имеет
Возвращает значение «Тест»
Метод «Внешнее событие»
Не имеет параметров и ничего не возвращает.
Запускает таймер, по которому через 1 секунду в 1С вызывается внешнее событие. Демонстрирует работу pEvent.
Почему по таймеру: 1С 7.7 не получит внешнее событие, если в ней в этот момент выполняется код. Поэтому, если отправить внешнее событие из метода внешней компоненты, 1С его не получит, т.к. в этот момент она исполняет метод внешней компоненты. 1С-8 лишена этого недостатка(.
Свойство «МоеСвойство»
Демонстрирует установку из 1С свойства объекта и считывание его обратно.
В папке демо-проекта находятся также внешние обработки для 1С 7.7 и 8.2, демонстрирующие работу демо-компоненты.

Root Entry

Приложенные файлы

  • doc 4341724
    Размер файла: 4 MB Загрузок: 3

Добавить комментарий