Создаем по шагам КОМПАКТНУЮ внешнюю компоненту для 1С:Предприятия за 10 минут (на MS Visual C++ 6.0)

18.10.06

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

Сразу оговорюсь, в итоге получится обыкновенный inprocess server, а не "внешняя компонента" в понимании 1С. В этом примере не используется "Технология создания внешних компонент" от 1С (где-то она у меня на старом винте заблудилась - найти не могу), и поэтому описанная ниже технология подходит для задач типа "вы спрашиваете - мы отвечаем".

Напишем простейшую компоненту, возвращающую "случайное" число в заданном диапазоне.
 
 
А теперь уменьшим размер dll-ки в несколько раз настройками компилятора...

Итак, Project -> Settings.

1. Закладка С/С++
Category: General
Optimizations: Minimize size
Debug info: None
Preprocessor definitions: WIN32,_WINDOWS,_MBCS,_USRDLL - т.е. убрали _DEBUG

Category: Code generation
Use run-time library: Multithreated DLL

Category: Optimizations
Optimizations: Minimize size

2. Закладка Link
Category: General
Убираем галку с Generate debug info
Убираем галку с Link incrementally

3. Закладка Resources
Убрать из Preprocessor definitions - _DEBUG

Если теперь скомпилить вылезет ошибка: что-то вроде опции /O1 и /GZ не могут жить вместе. Ну не могут и не надо. Идем на закладку С/С++ и в Project Options ручками удаляем опцию /GZ.

Если после этого скомпилить проект его размер составит ~ 28 килобайт. Уже неплохо. А теперь добавим две "волшебные" ;-) строчки в наш проект.

Они также есть на последнем рисунке:

#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text")

Означают эти строчки следующее: задать секциям PE файла выравнивание 512 байт (а не 4096 по умолчанию) и объединить секции .rdata & .text

Внимание! Выравнивание менее 512 байт делать не стоит, т.к. такая программа не пойдет под Windows NT/2000/XP.

Итак, компилим, получаем dll-ку размером 12800 байт. Занавес.

Ах, да! Совсем забыл, для чего всё это затевалось! Теперь эту dll-ку можно использовать как внешнюю компоненту 1С:Предприятия, предварительно зарегистрировав на компьютере при помощи команды: regsvr32 example.dll
А вот код внешней обработки, использующей эту dll-ку:

//******************************************* 
Процедура Сформировать() 
В=СоздатьОбъект("example.Random");
// Random возвращает значение от 0 до 1000 в данном случае 
Всп=В.GetRandomValue(1000);
Сообщить(Всп);
КонецПроцедуры 
Пример внешней компоненты
Автор статьи: yu

См. также

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

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    18126    18    33    

22

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

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

2400 руб.

04.05.2018    46786    122    66    

66

Разработка внешних компонент Программист Платформа 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    28220    138    100    

90

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

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

4600 руб.

27.06.2023    3394    2    0    

4

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

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    36476    113    127    

114

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

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    6767    starik-2005    32    

44

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

Пример взаимодействия 1С с Apach Kafka посредством внешней компоненты, разработанной на основе официальной библиотеки librdkafka (the Apache Kafka C/C++ client library).

22.11.2023    4356    86    ivan1703    26    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. O-Planet 6443 18.10.06 03:06 Сейчас в теме
Хм... Вот бы на дельфях. Но скачал, попробую...
2. yu 328 18.10.06 10:41 Сейчас в теме
Я бы не сказал что автор неизвестен ;-)
Это моя крошечная статейка середины 2002 года
3. support 4453 18.10.06 10:57 Сейчас в теме
Вот, как здорово! А у нас только ящик был my1c@mailru.com, но он уже не существует. Представьтесь, мы подправим автора и ссылку дадим на Ваш сайт.
4. yu 328 18.10.06 11:03 Сейчас в теме
Да, был такой ящик раньше. Собственно, зачем представляться-то, у меня здесь профайл уже есть.
5. 19.10.06 21:07 Сейчас в теме
Но это же не внешняя компонента. Зачем в заголовке неправду писать?
6. German 413 11.12.06 16:21 Сейчас в теме
Да...у меня и на VS2005 этот фокус удался
7. vasilykushnir 63 11.12.06 17:26 Сейчас в теме
Поддерживаю O-Planet - на Дельфях бы...
8. vasilykushnir 63 12.12.06 08:50 Сейчас в теме
Хотя... Появится время, попробую на 7-е делфи перевести пример.
9. sttt 116 31.01.07 09:57 Сейчас в теме
10. German 413 05.03.07 14:13 Сейчас в теме
http://ifolder.ru/1282415
Проект на VC2005 и пример обработки 1c8.0
11. support 4453 06.03.07 08:37 Сейчас в теме
12. karat60 01.10.07 13:21 Сейчас в теме
13. boy13 169 28.05.09 18:55 Сейчас в теме
German +1 !!! Мне помогло. :)
Оставьте свое сообщение