Создаем по шагам КОМПАКТНУЮ внешнюю компоненту для 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 Платформа 1C v8.2 Платные (руб)

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

4600 руб.

27.06.2023    3791    3    0    

5

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

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

3600 руб.

02.09.2010    77763    73    257    

191

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

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

1500 руб.

17.09.2018    37117    115    128    

116

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

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

2400 руб.

25.06.2024    1300    3    4    

3

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

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

14.01.2025    2600    bayselonarrend    14    

48

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

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

04.12.2024    5347    kovalevdmv    26    

77

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

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

26.01.2024    7767    starik-2005    40    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. O-Planet 6403 18.10.06 03:06 Сейчас в теме
Хм... Вот бы на дельфях. Но скачал, попробую...
2. yu 328 18.10.06 10:41 Сейчас в теме
Я бы не сказал что автор неизвестен ;-)
Это моя крошечная статейка середины 2002 года
3. support 4478 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 4478 06.03.07 08:37 Сейчас в теме
12. karat60 01.10.07 13:21 Сейчас в теме
13. boy13 169 28.05.09 18:55 Сейчас в теме
German +1 !!! Мне помогло. :)
Оставьте свое сообщение