1 of 18

Описание работы мастера создания проекта 1C-компоненты EsbStudio

Visual Studio Community 2019, �EsbStudio.vsix, EslLanguage.vsix

Замечание.�Нужно отчетливо понимать, что с++ это не тот язык, которым можно “поиграться”.�И Visual Studio - это не та программа, которую сегодня поставил, а завтра снес. В составе Студии на Ваш компьютер будут установлены утилиты работы с исполняемыми файлами и активный отладчик машинного кода.�После установки Студии поведение Вашего компьютера в целом и(или) некоторых программ может стать иным.

2 of 18

Сохранить по своему вкусу и запустить инсталлятор.

не лишне будет почитать инструкцию

можно, наверное и 2022, но у меня 2019.�(тогда Вы уже мне рассказывать будете)

3 of 18

выберите с++�(остальное по желанию)

все галочки по-умолчанию (или больше)

либо скачать все, а потом устанавливать�либо качать и устанавливать одновременно�(скачает ~10Гб, установит ~2Гб, по времени около часа)

4 of 18

После установки Студии нужно установить Есб.��Запустите Студию и Вы увидите стартовое окно.��Выберите пункт �“Клонирование репозитария”.��ПС. Конечно можно просто скачать с гитхаба как zip и распаковать куда нибудь: https://github.com/int-unsigned/esb(но на мой взгляд через гит как-то культурнее, что-ли)

В дальнейшем попытаюсь встроиться в vcpkg, или как sdk-пакет, или.. Не знаю пока разбираться надо.

5 of 18

Появится простое окошко в которое нужно ввести адрес репозитария Есб

Ниже указать куда на Вашем компьютере клонировать репозитарий.��(Я рекомендую путь делать не глубокий. Хотя я пытаюсь сделать EsbStudio дружелюбным, но с++ есть с++ - нет-нет, да и приходится открывать консоль и выполнять какие-то операции ручками. По длинным путям ходить утомительно)

После - Закрываем Студию - нам нужно поставить два расширения (.vsix) из скачанной подпапки <что-указали>\esb_studio\�(в дальнейшем планируется их устанавливать с Маркета Студии не выходя из нее)

Гит в студию встроен, подумает оно недолго.

6 of 18

В скачанной папке следующее(исключительно информативно. если все хорошо, то залезть туда придется только один раз. и то пока.)�demo - это то что массив сортирует, демка�emitter - заготовка под утилиту, которая� собственно Есб делает. пусто пока. �esb_studio - пакеты расширения на Студии, чтобы � работать с комфортом (.vsix и исходники C#)�include - это c++ заголовки (.h) есб. � их #include надо будет.�lib - esbhlp.lib для каждой поддерживаемой� версии платформы 1С.� (с ними ничего делать не надо - Есб для линковки � их само находит и подключает)

В папке esb_studio два расширения Студии, которые сейчас нужно поставить вручную.�Дабл-Клик на обоих по очереди дожидаясь окончания установки - думает Студия долго!

EsbStudio - это мастер создания проекта, EslLanguage - это редактор 1С++Есб для Студии. �(Все пока “верси-0”, не ругайте сильно.)

EsbStudio - тема очень обширная, когда-то здесь будет ссылка на детальное описание.

7 of 18

Запускаете опять Студию и в стартовом окне нажимаете “Создание Проекта”

Перед Вами откроется окно выбора Мастера. �У Вас оно будет немного не такое �(т.к. запускается в первый раз.)�Выберите в поле “язык” 1С-Enterprise �и в отфильтровавшемся списке щелкните на “EsbStudio C++ component for 1C”

8 of 18

В следующем окне Вы указываете имя проекта (это будет и имя .dll компоненты) и папку где у Вас все проекты. �Т.е. в этом случае в папке ..\source\repos\ создастся папка EsbComponent3, где будут все файлы

ВАЖНО чтобы стояла эта галочка!�При ее установке все файлы проекта, в том числе и сам файл решения (.sln) помещаются в один каталог.�(иначе в папке с решением создается еще подпапка для собственно проекта)�Мастер ее пока ее не отслеживает и предполагает, что она УСТАНОВЛЕНА!

Ну и…

9 of 18

После этого запустится, собственно Мастер создания проекта Есб.�Если Вы клонировали Есб в С:\Esb, то он его сам найдет. Иначе нужно будет выбрать папку где Esb.�Мастер проверит структуру папок и определит какие версии платформы поддерживаются.��Дале Мастер произведет поиск установленных версий 1С по типичному путь C:\Prog…\1cv8\8.3.**.****��Проверит структуру инсталляции, версии, архитектуру, наличие необходимых 1С .dll, лицензий (шутка), с помощью установленных со Студией утилит сверит экспортируемые 1С с++ симболы с требуемыми для esbhlp.lib импортами.�Если все Ок он проставит галочку�и разрешит кнопку Готово. Жмем.��ПС. Если “не-Ок”, то он попытается что-то рассказать и можно поиграться с “неподдерживаемыми платформами”. Мастер будет пытаться их экзаменовать.. Но пока не светую. Лучше как-то свяжитесь со мной и вместе разберемся.��ППС. (здесь будет ссылка на детальное описание Мастера)

ВАЖНО Установить галочку “Сохранить настройки в реестре”�Мастер записывает расположение Есб, а с++ проект их оттуда читает. Не будет записи в реестре - придется с++ проект отдельно настраивать.

10 of 18

Думать будет…

Когда скажет все готово, дождитесь чтобы в на этой иконке в левом нижнем углу перестали “бежать” полоски. Это она с++ проект (Есб) в фоне парсит. Ей в этот момент лучше не мешать.

11 of 18

Созданный Мастером проект компоненты в Обозревателе Решения Студии выглядит так.

Файлы *.bsl - это файлы конфигурации 1С, редактируемые в Visual Studio 1С автоматически загружаемые (/LoadConfigFiles) в тестовую конфигурацию 1С. �(в виду специфики выгрузки 1С по папкам имя модуля показывается как “фильтр” проекта, а сами модули все имеют имя просто “Module.bsl”.)- EsbCommon - глобальный модуль со вспомогательными функциями общего назначения (н.р. ПутьДостроить(путь_ Как Строка) Как Строка и т.п.)�- EsbManager - общий модуль заведующий загрузкой/выгрузкой компонент.�- EsbComponent - это собственно модуль представляющий текущую разрабатываемую компоненту.�- OrdinaryApplicationModule - это стандартный 1С модуль Обычного Приложения (ПриЗапуске(), ПриЗавершении(), т.п.�- esb_app_config.h - настройки есб-проекта (язык, т.д. т.п.). Можно задавать как в нем, так и на странице свойств. Должен быть обязательно подключаться до заголовков библиотеки esb.�- esb.h - заголовок просто упрощающий правильное подключение esb.�- dllmain.cpp - если Вашей функциональности нужна специфика загрузки как .dll (DllMain). Мастер создает пустой - есб специфика не нужна.�- esbmain.cpp - собственно само определние есб-компоненты для 1С. Ее интерфейс. Должен иметь предопределенную структуру для правильной работы Интеллисенс.

12 of 18

Файловая структура проекта�

  • [1s] - папка с запускаемой конфигурацией 1С�(создается мастером из файлов при создании проекта, модули перезаписываются из файлов)
  • [1s_files] - папка с файлами конфигурации 1С
  • все начинающиеся с ‘_’ и directory.build.* - “системные Visual(Esb) Studio” - запуск, сборка, страницы свойств, т.п. Не редактировать не понимая!
  • 💮.sln, 💮.vcxproj, 💮.vcxproj.filters,✸.vcxproj.user - файлы Visual Studio для с++ проекта. Все что можно настроить через меню и страницы свойств описывается там.�Не редактировать вручную!�
  • *.h и *.cpp - это собственно наш проект с++ .dll компоненты. �Здесь как раз нужно самовыражаться.

Отдельно о esbmain.cpp. В нем описывается интерфейс есб-компоненты для 1С и он должен иметь определенную структуру, которая известна EsbStudio. Этого формата нужно придерживаться, иначе Интеллисенс работать не будет.�

В файлах много примечаний и их мы рассмотрим дальше.

13 of 18

Страница свойств поекта Есб-Компоненты

Настройки есб-проекта можно делать как в файле esb_app_config.h, так и на странице свойств проекта Visual Studio. Настройки задаются в разрезе для каждой $Configuration$Platform

* Важно обратить внимание, что версия � платформы 1С для которой делается компонента определяется из имени конфигурации проекта,� которая должно быть в формате v83**[Debug/Release], где 83** - это версия платформы.

* По умолчанию путь к библиотеке esb определяется из реестра HKCU\Software\IntUnsigned\Esb

* Стандарт языка с++ для библиотеки esb должен быть строго c++20.

Без необходимости и понимания это лучше НЕ МЕНЯТЬ!

14 of 18

Созданный мастером esbmain.cpp

Этот файл - “точка входа” в есб-компоненту.�Он должен иметь предопределенную структуру, т.к. редактор EsbStudio для 1С его разбирает для нормальной работы Интеллисенс.

Блок деклараций методов объекта компоненты.�Все методы ЕсбОбъекта должны быть либо определены прямо здесь, либо сделаны “прокси-методы”.�(если сама функциональность в иных единицах трансляции. это не для с++ надо, а для Интеллисенс)�ПС. Комметарии Интеллисенс тоже читает.

Заголовки библиотеки ЕСБ(модуль описания компоненты также требует подключения заголовка описания типов для 1С. Сам объект компоненты - это новый тип 1С)

Основной блок описания нового типа для 1С и его интерфейса.(гуид Мастер дает всегда новый)

Все расчеты структур и таблиц проводятся в constexpr режиме. Рефлексии у с++ пока нет, все вручную, магия…�Парсится из EsbStudio

Создание примитивной классической компоненты 1С для загрузки и инициализации есб-компоненты

15 of 18

EsbComponent.bsl

Этот файл “представляет” компоненту в среде 1С.

Предполагается, что Вы в с++ части EsbStudio разрабатываете функциональность компоненты, а здесь, сразу на соседней вкладке пишите 1С-код тестирования и отладки.

При редактировании кода 1С работает Интеллисенс как для методов платформы, так и для других .bsl модулей проекта и для методов есб-компоненты

Для запуска приложения выбираем пункт меню “Начать отладку” или просто F5.

16 of 18

Будет скомпилирована и собрана .dll компоненты и изменения в файлах .bsl проекта загружены в конфигурацию 1С.

Потом стартуем 1С …..

все что касается 1С это ооочень небыстро….

17 of 18

18 of 18

Спасибо за внимание

Код на Гитхабе: https://github.com/int-unsigned/esb