Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3

07.04.14

Разработка - Разработка внешних компонент

Средство для сверхбыстрой разработки внешних компонент 1С:Предприятия 7.7 и 8 по технологии COM на всех версиях DELPHI, начиная с 6.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3 :
.RAR 1,09Mb
0
0 Скачать (10 SM) Купить за 4 550 руб.
 
 
 
Состав проекта:
 
1. Компонент для DELPHI (любой версии) с исходными кодами, позволяющий значительно упростить создание внешних компонент 1С  (технология COM)
2.Генератор проекта внешней компоненты, позволяющий получить готовый проект за несколько секунд.  Остается только  добавлять свойства и методы своей компоненты с помощью визуального редактора. Все идентификаторы, имена, интерфейсы уже прописаны генератором проекта.
3.Демонстрационный проект внешней компоненты 1С
4.Подробная инструкция.
 
Описание проекта
 

Введение

Что это такое:

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

 

Почему до сих пор создавать по технологии COM

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

Почему DELPHI

  1. Относительно невысокая стоимость самой среды разработки.
  2. Обилие в сети бесплатных или дешевых компонент для работы с чем угодно.
  3. Наименьшее время разработки.
  4. Многие программисты 1С перешли с  паскаля и им достаточно просто освоить DELPHI.

 

Почему мой проект, ведь полно в сети различных проектов на эту тему в том числе, бесплатных

  1. Включены все исходные коды.
  2. Готовый проект внешней компоненты 1С можно получить за несколько секунд, не разбираясь в том, как там что устроено.
  3. Экспортируются и используются все документированные 1С интерфейсы.
  4. Свойства и методы внешней компоненты можно добавлять  визуально, как объекты обычной коллекции.
  5. Подробная документация
 

Начало работы

Содержимое архива

  1. 1C_ADDIN_HELPER. Компонент для DELPHI. Его надо установить. Инструкция ниже.
  2. 1C_ADDIN_ProjectCreator. Генератор проекта внешней компоненты. Инструкция ниже.
  3. 1C_ADDIN_DEMO. Демо-проект внешней компоненты, сделанный по данной технологии. Также включены обработки 1С 7.7 и 1С 8.2 для проверки работы компоненты. Инструкция ниже.

ШАГ 1. Установка компонента DELPHI

  • Запускаем DELPHI
  • Открываем Addin1cHelp.dpk из папки 1C_ADDIN_HELPER

DELPHI 6

DELPHI XE3

Жмем Install

 

Жмем Install

 

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

 

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

 

Добавляем путь к папке1C_ADDIN_HELPER  в библиотеку DELPHI.

Меню: Tools – Environment options - Library path

 

ADD-OK-OK

Добавляем путь к папке1C_ADDIN_HELPER  в библиотеку DELPHI.

Меню: Tools – options - Library –library path

 

ADD-OK-OK

Компонент появляется в палитре DELPHI

 

Компонент появляется в палитре DELPHI

 

 

Данный шаг необходимо выполнить один раз.


ШАГ 2. Генерация проекта внешней компоненты.

  • Запускаем PrCreator.exe  из папки 1C_ADDIN_ProjectCreator
    • Указываем:
      1. Путь к папке, в которой будет создан проект внешней компоненты
      2. Имя библиотеки внешней компоненты (имя dll-ки)
      3. Имя объекта внешней компоненты. Т.е имя, под которым ее объект можно будет создавать в 1С с помощью функций Новый() или СоздатьОбъект().
      4. Если у компоненты должна быть страница свойств, ставим галочку «Нужна страница свойств».
  • Нажимаем большую кнопку «Создать». В указанной папке появляется DELPHI-проект внешней компоненты 1С с указанными параметрами.
  • Его можно открывать в DELPHI.
 

ШАГ 3. Как добавлять функционал внешней компоненты.

  • Весь функционал компоненты реализуется в модуле Un_DM_List.pas, основной объект которого унаследован от TDataModule. Это дает возможность простого использования компонентов из палитры компонент DELPHI.
  • Добавление свойств и методов внешней компоненты осуществляется через коллекции (T1CMethCollection) и (T1CPropCollection) объекта AddinFPList уже добавленного в проект генератором проектов.

 

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

 

Добавляем элемент в коллекцию и прописываем его свойства:

    1. Английское название
    2. Русское название
    3. Признак «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)

 

Добавляем элемент в коллекцию и прописываем его свойства:

    1. Английское название
    2. Русское название
    3. Количество параметров
    4. Признак «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;{Генерация внешних событий в 1С }
  • _pErrorLog : IErrorLog;{Запись в окно сообщений 1С}
  • _pProfile : IPropertyProfile;{Хранение параметров компоненты}
  • _pStatusLine : IStatusLine;{Запись в строку состояния 1С}

Ими можно пользоваться в соответствии с их стандартным 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. Для того, чтобы в 1С-8 компоненту можно было подключать по имени объекта, т.е писать ПодключитьВнешнююКомпоненту(«Addin.MyObj»), файл внешней компоненты надо зарегистрировать в реестре с помощью команды regsvr32. В проекте, создаваемом генератором, добавлен командный файл Register.cmd, выполняющий это действие.
  2. Сложности могут возникнуть с передачей типа БУЛЕВО между 1С и внешней компонентой. 1С 7.7 такого типа вообще не знает. 1С-8 передает его в COM-компоненты в странном виде.
 

Описание демо-проекта, включенного в поставку

  • Демо-проект создан генератором проектов.
  • После этого в него добавлены следующие свойства и методы:
    • Метод «ПриветМир»
      • Имеет два параметра. Первый читает, второй возвращает.
      • Демонстрирует работу со строкой состояния в 1С (pStatusLine).
      • Демонстрирует работу с окном сообщений в 1С (pErrorLog)
    • Метод «ВернутьТест»
      • Параметров не имеет
      • Возвращает значение «Тест»
    • Метод «Внешнее событие»
      • Не имеет параметров и ничего не возвращает.
      • Запускает таймер, по которому через 1 секунду в 1С вызывается внешнее событие. Демонстрирует работу pEvent.
      • Почему по таймеру: 1С 7.7 не получит внешнее событие, если в ней в этот момент выполняется код. Поэтому, если отправить внешнее событие из метода внешней компоненты, 1С его не получит, т.к. в этот момент она исполняет метод внешней компоненты. 1С-8 лишена этого недостаткаJ.
    • Свойство «МоеСвойство»
      • Демонстрирует установку из 1С свойства объекта и считывание его обратно.
  • В папке демо-проекта находятся также внешние обработки для 1С 7.7 и 8.2, демонстрирующие работу демо-компоненты.

 

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54042    9    69    

46

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1127    3    4    

3

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47298    124    66    

67

Разработка внешних компонент Программист Платформа 1С v8.3 Платформа 1C v8.2 Платные (руб)

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3598    3    0    

5

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77516    72    257    

191

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    28656    138    100    

91

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    1840    bayselonarrend    10    

44

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4723    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dour-dead 272 28.03.13 16:55 Сейчас в теме
2. kirlog 134 28.03.13 17:29 Сейчас в теме
Native Будет. Разрабатывается.
Правда, для native, уже много готовых решений.
В том числе и на инфостарте есть.
Например "ВК NativeAPI на Delphi и FreePascal"
Там, конечно нет генератора проектов и визуального компонента для редактирования свойств и методов, но по сравнению с написанием компоненты с нуля, небо и земля, конечно.
3. wowik 891 03.04.13 15:04 Сейчас в теме
Мало описания. Прочитал, и, не возникло желания купить.
4. kirlog 134 03.04.13 15:28 Сейчас в теме
Есть более подробное описание-инструкция.
Оно пока внутри поставки.
Опубликую здесь скоро.
Пока прикрепляю к этому посту.
Прикрепленные файлы:
Readme.doc
5. vkr 07.10.13 11:22 Сейчас в теме
(0) А для C++ Builder 6 (или C++ Builder XE2-XE4) нету, случайно, варианта ?
6. kirlog 134 07.10.13 13:01 Сейчас в теме
7. berator37 70 02.01.14 20:49 Сейчас в теме
Можно на почту для тестирования?
Спасибо
8. v77 160 13.08.14 16:33 Сейчас в теме
ух ты. моя идея 10 летней давности родилась заново :)
http://www.erp-volga.com/hare/add-in/addin.awiz.html

плюсую
9. quick 584 14.11.14 17:22 Сейчас в теме
Под FreePascal работает? А если конкретней на сборке CodeTyphon?
10. kirlog 134 14.11.14 19:17 Сейчас в теме
Под FreePascal так сразу не заработает.
Сам компонент TADDIN1CHELPER, думаю, под FPC заработает без проблем.
А вот 1С-кая "технология внешних компонент", на которой тут все построено, ссылается на чисто дельфевские "ComCtrls.pas", "Variants.pas" и т.д.
Их придется заменять.
Кроме всего используется дельфевский же "DataModule" как контейнер.
Переделать, конечно, можно, но это будет не просто.
И уже если переделывать, то лучше сразу под Lazarus.
11. yurank 15.07.15 16:53 Сейчас в теме
Пару лет назад покупал это. Купил бы еще раз если было бы для NATIVE
12. zaverax 45 16.01.16 21:07 Сейчас в теме
возможно ли использовать созданную ВК в управляемой форме?
Используя код
Если ПодключитьВнешнююКомпоненту(путьвк,"MyVK",AddInType.COM) Тогда
//Попытка
МояВК = Новый("AddIn.MyVK.хххх");

Вот вместо хххх - что надо писать, какой Class? если ВК сделать вашей компонентной?
13. user1691701 03.11.21 14:44 Сейчас в теме
Добрый день! Подскажите, пожалуйста, два момента: есть ли решение по Native технологии? Есть ли решение для 64х разрядной платформы?
14. user2041848 01.02.24 13:07 Сейчас в теме
Можно здесь создать COM DLL для 1С?
15. user702327_nikservice 20.12.24 12:46 Сейчас в теме
Доброго дня! Подскажите, какие изменения в решении сделаны были по 09.2024 ? Нужно ли обновляться?
Оставьте свое сообщение