Описание работы мастера создания проекта 1C-компоненты EsbStudio
Visual Studio Community 2019, �EsbStudio.vsix, EslLanguage.vsix
Замечание.�Нужно отчетливо понимать, что с++ это не тот язык, которым можно “поиграться”.�И Visual Studio - это не та программа, которую сегодня поставил, а завтра снес. В составе Студии на Ваш компьютер будут установлены утилиты работы с исполняемыми файлами и активный отладчик машинного кода.�После установки Студии поведение Вашего компьютера в целом и(или) некоторых программ может стать иным.
Сохранить по своему вкусу и запустить инсталлятор.
не лишне будет почитать инструкцию
можно, наверное и 2022, но у меня 2019.�(тогда Вы уже мне рассказывать будете)
выберите с++�(остальное по желанию)
все галочки по-умолчанию (или больше)
либо скачать все, а потом устанавливать�либо качать и устанавливать одновременно�(скачает ~10Гб, установит ~2Гб, по времени около часа)
После установки Студии нужно установить Есб.��Запустите Студию и Вы увидите стартовое окно.��Выберите пункт �“Клонирование репозитария”.��ПС. Конечно можно просто скачать с гитхаба как zip и распаковать куда нибудь: https://github.com/int-unsigned/esb�(но на мой взгляд через гит как-то культурнее, что-ли)
В дальнейшем попытаюсь встроиться в vcpkg, или как sdk-пакет, или.. Не знаю пока разбираться надо.
Появится простое окошко в которое нужно ввести адрес репозитария Есб�
Ниже указать куда на Вашем компьютере клонировать репозитарий.��(Я рекомендую путь делать не глубокий. Хотя я пытаюсь сделать EsbStudio дружелюбным, но с++ есть с++ - нет-нет, да и приходится открывать консоль и выполнять какие-то операции ручками. По длинным путям ходить утомительно)
После - Закрываем Студию - нам нужно поставить два расширения (.vsix) из скачанной подпапки <что-указали>\esb_studio\�(в дальнейшем планируется их устанавливать с Маркета Студии не выходя из нее)
Гит в студию встроен, подумает оно недолго.
В скачанной папке следующее�(исключительно информативно. если все хорошо, то залезть туда придется только один раз. и то пока.)�demo - это то что массив сортирует, демка�emitter - заготовка под утилиту, которая� собственно Есб делает. пусто пока. �esb_studio - пакеты расширения на Студии, чтобы � работать с комфортом (.vsix и исходники C#)�include - это c++ заголовки (.h) есб. � их #include надо будет.�lib - esbhlp.lib для каждой поддерживаемой� версии платформы 1С.� (с ними ничего делать не надо - Есб для линковки � их само находит и подключает)
В папке esb_studio два расширения Студии, которые сейчас нужно поставить вручную.�Дабл-Клик на обоих по очереди дожидаясь окончания установки - думает Студия долго!
EsbStudio - это мастер создания проекта, EslLanguage - это редактор 1С++Есб для Студии. �(Все пока “верси-0”, не ругайте сильно.)
EsbStudio - тема очень обширная, когда-то здесь будет ссылка на детальное описание.
Запускаете опять Студию и в стартовом окне нажимаете “Создание Проекта”
Перед Вами откроется окно выбора Мастера. �У Вас оно будет немного не такое �(т.к. запускается в первый раз.)�Выберите в поле “язык” 1С-Enterprise �и в отфильтровавшемся списке щелкните на “EsbStudio C++ component for 1C”
В следующем окне Вы указываете имя проекта (это будет и имя .dll компоненты) и папку где у Вас все проекты. �Т.е. в этом случае в папке ..\source\repos\ создастся папка EsbComponent3, где будут все файлы
ВАЖНО чтобы стояла эта галочка!�При ее установке все файлы проекта, в том числе и сам файл решения (.sln) помещаются в один каталог.�(иначе в папке с решением создается еще подпапка для собственно проекта)�Мастер ее пока ее не отслеживает и предполагает, что она УСТАНОВЛЕНА!
Ну и…
После этого запустится, собственно Мастер создания проекта Есб.��Если Вы клонировали Есб в С:\Esb, то он его сам найдет. Иначе нужно будет выбрать папку где Esb.�Мастер проверит структуру папок и определит какие версии платформы поддерживаются.��Дале Мастер произведет поиск установленных версий 1С по типичному путь C:\Prog…\1cv8\8.3.**.****��Проверит структуру инсталляции, версии, архитектуру, наличие необходимых 1С .dll, лицензий (шутка), с помощью установленных со Студией утилит сверит экспортируемые 1С с++ симболы с требуемыми для esbhlp.lib импортами.�Если все Ок он проставит галочку�и разрешит кнопку Готово. Жмем.��ПС. Если “не-Ок”, то он попытается что-то рассказать и можно поиграться с “неподдерживаемыми платформами”. Мастер будет пытаться их экзаменовать.. Но пока не светую. Лучше как-то свяжитесь со мной и вместе разберемся.��ППС. (здесь будет ссылка на детальное описание Мастера)
ВАЖНО Установить галочку “Сохранить настройки в реестре”�Мастер записывает расположение Есб, а с++ проект их оттуда читает. Не будет записи в реестре - придется с++ проект отдельно настраивать.
Думать будет…
�Когда скажет все готово, дождитесь чтобы в на этой иконке в левом нижнем углу перестали “бежать” полоски. Это она с++ проект (Есб) в фоне парсит. Ей в этот момент лучше не мешать.
Созданный Мастером проект компоненты в Обозревателе Решения Студии выглядит так.
Файлы *.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С. Ее интерфейс. Должен иметь предопределенную структуру для правильной работы Интеллисенс.
Файловая структура проекта�
Отдельно о esbmain.cpp. В нем описывается интерфейс есб-компоненты для 1С и он должен иметь определенную структуру, которая известна EsbStudio. Этого формата нужно придерживаться, иначе Интеллисенс работать не будет.�
В файлах много примечаний и их мы рассмотрим дальше.
Страница свойств поекта Есб-Компоненты
Настройки есб-проекта можно делать как в файле esb_app_config.h, так и на странице свойств проекта Visual Studio. Настройки задаются в разрезе для каждой $Configuration$Platform
* Важно обратить внимание, что версия � платформы 1С для которой делается компонента определяется из имени конфигурации проекта,� которая должно быть в формате v83**[Debug/Release], где 83** - это версия платформы.
* По умолчанию путь к библиотеке esb определяется из реестра HKCU\Software\IntUnsigned\Esb
* Стандарт языка с++ для библиотеки esb должен быть строго c++20.
Без необходимости и понимания это лучше НЕ МЕНЯТЬ!
Созданный мастером esbmain.cpp
Этот файл - “точка входа” в есб-компоненту.�Он должен иметь предопределенную структуру, т.к. редактор EsbStudio для 1С его разбирает для нормальной работы Интеллисенс.
Блок деклараций методов объекта компоненты.�Все методы ЕсбОбъекта должны быть либо определены прямо здесь, либо сделаны “прокси-методы”.�(если сама функциональность в иных единицах трансляции. это не для с++ надо, а для Интеллисенс)�ПС. Комметарии Интеллисенс тоже читает.
Заголовки библиотеки ЕСБ�(модуль описания компоненты также требует подключения заголовка описания типов для 1С. Сам объект компоненты - это новый тип 1С)
Основной блок описания нового типа для 1С и его интерфейса. �(гуид Мастер дает всегда новый)
Все расчеты структур и таблиц проводятся в constexpr режиме. Рефлексии у с++ пока нет, все вручную, магия…�Парсится из EsbStudio
Создание примитивной классической компоненты 1С для загрузки и инициализации есб-компоненты
EsbComponent.bsl
Этот файл “представляет” компоненту в среде 1С.
Предполагается, что Вы в с++ части EsbStudio разрабатываете функциональность компоненты, а здесь, сразу на соседней вкладке пишите 1С-код тестирования и отладки.
При редактировании кода 1С работает Интеллисенс как для методов платформы, так и для других .bsl модулей проекта и для методов есб-компоненты
Для запуска приложения выбираем пункт меню “Начать отладку” или просто F5.
Будет скомпилирована и собрана .dll компоненты и изменения в файлах .bsl проекта загружены в конфигурацию 1С.
Потом стартуем 1С …..
все что касается 1С это ооочень небыстро….
Спасибо за внимание
Код на Гитхабе: https://github.com/int-unsigned/esb
Почта: v8classes@gmail.com
Телеграм: https://t.me/+BoPqXKtQP_M3NWZi