Разработка дополнений

Не смотря на то что в Азимуте не нужно программировать (кроме sql), все-таки встречаются задачи, где без этого никак не выкрутиться. С помощью c# вы можете расширить возможности Азимута.

Мы рассмотрим самые распространенные задачи, это:

  • Интеграции (сложное API и Автозадачи)

  • Расширение возможностей клиентского приложения

  • Расширение возможностей конфигуратора

  • Расширение процесса публикации релизов

И прежде чем приступить, хотим настоятельно порекомендовать обращаться к расширению через программирование только в самых крайних случаях. Иначе вы растеряете все преимущества платформы. На своем личном примере мы убедились что даже в продолжительных и сложных проектах, c# может понадобиться разве что для реализации сложных API и интеграций. В остальных случаях достаточно возможностей самой платформы. А если не достаточно, пишите нам, посмотрим что можно сделать.

Для работы с c# лучше использовать Visual Studio.

Первое что необходимо сделать, это создать решение (sln) для нашего проекта. Оно создается автоматически при первом его открытии. Чтобы открыть решение, нажмите CSharp.

В решении будет сформировано 3 пустых проекта:

  • .Client - для клиентской части

  • .Server - для серверной части

  • .Editor - для расширения возможностей конфигуратора

Решение формируется в Мои документы, в папке Azimut.CSharp/<Имя проекта>/, а также сохраняется в базе, в таблице SY_CSharpFiles. Как только вы добавляете/меняете файл в проекте, он автоматически компилируется и конфигуратор видит новые изменения.

Таблица SY_CSharpFiles конечно не заменит полноценного хранилища исходных кодов, но в качестве средства синхронизации кода между всеми разработчиками сгодится.

Посмотрите пример на видео

Что вообще можно расширять

Основные базовые типы

Тип

Описание

Azimut.Metadata.MetadataFuncType

Самый базовый абстрактный функциональный тип

Azimut.Business.Design.MetadataBaseVerb

Базовый тип команды (кнопки)

Azimut.Business.Design.DocumentBaseBinding

Базовый функциональный тип биндинга значения

Azimut.Business.Design.MetadataValueBaseFunc<TValue>

Базовый функциональный тип простого значения в биндингах

Azimut.Business.Actions.MetadataActionBase

Базовое серверное действие

Azimut.Business.MetadataChannelBase

Базовый канал уведомления

Azimut.Business.MetadataBaseColumn

Базовый тип столбца сущности (таблицы)

Azimut.Business.MetadataEvents.MetadataEventBase

Базовый тип сообщения системы уведомлений (например, Стандартное сообщение, Xslt сообщение)

Azimut.Business.MetadataBaseScript

Базовый тип скрипта контекста

Azimut.Business.MetadataScriptParameterBase

Базовый тип параметра скрипта контекста

Azimut.Business.NotificationActions.NotificationActionBase

Базовое действие в уведомлениях чата

Azimut.Business.SchedulerTasks.Periods.SchedulerTaskPeriodBase

Базовый период запуска задачи планировщика (ежесекундно, минутно и т.д.)

Azimut.Business.Design.ForeignModes.MetadataForeignModeBase

Базовый режим внешнего ключа, этот же тип является "Без внешнего ключа"

Azimut.Business.Design.SqlModifierFuncItemBase

Базовый элемент модификатора (что модифицируем - поле, метаданные..)

Azimut.Business.Design.Views.MetadataBaseViewDocument

Базовый тип документа редактирования

Azimut.Business.Design.Views.MetadataMasks.MetadataBaseMask

Базовая маска ввода

Azimut.Business.Design.Views.MetadataFileUploaderBase

Базовый тип загрузчика файлов с клиента на сервер

Azimut.Business.Design.Views.MetadataBaseProperty

Базовый тип поля представления

Azimut.Business.Design.Views.MetadataBindingProperty

Базовый тип поля представления, который биндится к полям сущности

Azimut.Business.Design.Views.ReferenceBaseFilter

Базовый фильтр в поле Справочник

Azimut.Business.Design.Views.MetadataPropertySummaryBase

Базовая функция для посчета итогов столбца в гриде

Azimut.Business.Design.Wizards.WizardStep

Базовый тип шага визарда

Azimut.Host.Api.Controllers.ApiControllerBase

Базовый контроллер Api

Azimut.Host.Api.Authorizers.BaseAuthorizer

Базовый способ авторизации в API (он же является типом "без авторизации")

Azimut.Host.Api.ChatBotProcessing.ChatBotProcessingBase

Базовая обработка сообщения чат бота

Last updated

Was this helpful?