Для расширения функциональности в ПО Comindware Platform предусмотрены инструменты написания и использования скриптов на языке C#. ПО позволяет внедрять C#-скрипты при настройке различных сущностей и функций приложения.
ПО позволяет использовать C#-скрипты при настройке следующих сущностей и функций:
Скрипт оформляется как public class
с предопределённым именем Script
. При выполнении скрипта вызывается метод public static Main
этого класса. Скрипт компилируется при сохранении настраиваемой сущности.
Перед компиляцией тело скрипта помещается в уникальное пространство имён (namespace
) во избежание интерференции между скриптами. Для удобства разработчика в том же пространстве имён автоматически создаётся вспомогательный класс коротких синонимов для обращения к API вида:
static class Api {
public static Comindware.TeamNetwork.Api.PublicServices TeamNetwork;
public static Comindware.Process.Api.IPublicServices Process;
public static Comindware.Platform.Api.IPublicServices Base;
}
Если скомпилировать скрипт не удалось, выводятся предупреждение и детализированное описание ошибок компиляции в области «Журнал действий и ошибок» в информационной панели.
Перекомпиляция и проверка её успешности происходят каждый раз при сохранении, проверке или публикации сущности, в которую внедрён скрипт.
Заготовка скрипта
public class Script {
public static UserCommandResult Main (UserCommandContext userCommandContext, Comindware.Entities entities) {
// Тело скрипта
}
}
Входные данные
UserCommandContext userCommandContext {
string[] ObjectIds, // массив ID выбранных записей в списке
// (пустой массив, если записи не выбраны)
// или массив из одного элемента с ID записи на форме
string[] SelectedIds, // массив ID записей, выбранных в таблице на форме
// (пустой массив, если записи не выбраны)
string CurrentUserId, // ID аккаунта текущего пользователя
string DocumentTemplateId, // ID шаблона, к которому относится команда
dateTime CurrentRequestTime, // дата и время текущего запроса
bool ExportAsPdf, // флаг экспорта в PDF
string FileName, // имя файла при выгрузке данных по шаблону экспорта
DatasetQuery Query // список, с которого произошел запуск операции
},
Comindware.Entities entities // используется для доступа к данным шаблонов записей
Выходные данные
UserCommandResult {
bool Success, // флаг успешного завершения операции
bool Commited, // флаг необходимости коммита операции
enum UserCommandResultType ResultType, // тип возвращаемого результата.
// В зависимости от значения производятся действия:
// DataChange — обновление данных
// Notificate — сообщение пользователю
// Navigate — переход на страницу
// File — скачивание файла
// набор данных для перехода на другую страницу
UserCommandNavigationResult NavigationResult {
string Title, // заголовок
string ObjectId, // ID объекта
string ContainerId, // ID контейнера
ContextType Context // тип отображения
// Undefined, Void, Any, Task, Case, Record, Process, List, Form, Page, Container
},
// объект выгружаемого файла
UserCommandFileResult File {
string Name, // имя файла
string Type,
byte[] Content // тело файла
},
// сообщение об окончании операции
UserCommandMessage[] Messages {
enum Severity, // уровень важности сообщения
// SeverityLevel (Critical, Fatal, Low, Major, None, Normal)
string Text
}
}
Заготовка скрипта
public class Script {
public static void Main(Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities) {
// Тело скрипта}
}
Входные данные
Comindware.Process.Api.Data.ScriptContext context {
string ProcessID, // ID процесса
string BusinessObjectID, // ID объекта},
Comindware.Entities entities // используется для доступа к данным шаблонов записей
Выходные данные
void
// Возвращаемые параметры отсутствуют
Заготовка скрипта
public class Script {
public static string Main(Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities) {
// Тело скрипта
}
}
Входные данные
Comindware.Process.Api.Data.ScriptContext context {
string ProcessID, // ID процесса
string BusinessObjectID, // ID объекта
},
Comindware.Entities entities // используется для доступа к данным шаблонов записей
Выходные данные
string
// Заголовку задачи присваивается возвращённое строковое значение
Заготовка скрипта
public
class
Script {
public static IEnumerable<string> Main(Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities) {
// Тело скрипта
}
}
Входные данные
Comindware.Process.Api.Data.ScriptContext context {
string ProcessID, // ID процесса
string BusinessObjectID // ID объекта
},
Comindware.Entities entities // используется для доступа к данным шаблонов записей
Выходные данные
IEnumerable<string>
// Скрипт должен вернуть список ID аккаунтов
Заготовка скрипта
public class Script {
public static TimeSpan Main (Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities) {
// Тело скрипта
}
}
Входные данные
Comindware.Process.Api.Data.ScriptContext context {
string ProcessID, // ID процесса
string BusinessObjectID, // ID объекта
},
Comindware.Entities, // используется для доступа к данным шаблонов записей
Выходные данные
TimeSpan
// Продолжительности задачи присваивается возвращённое значение длительности
Заготовка скрипта
public class Script {
public static string // string, int, decimal, dateTime, bool, TimeSpan или IEnumerable<string>
Main(string ObjectID, [Comindware.Entities entities]) {
// Тело скрипта
}
}
Входные данные
string ProcessID, // ID записи,
Comindware.Entities entities // необязательный аргумент, используется для доступа к данным шаблонов записей
Выходные данные
string, int, decimal, dateTime, TimeSpan, bool, IEnumerable<string>
// Атрибуту присваивается возвращённое значение соответствующего типа
Заготовка скрипта
public class Script {
public static bool Main(Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities) {
// Тело скрипта
}
}
Входные данные
Comindware.Process.Api.Data.ScriptContext context {
string ProcessID, // ID процесса
string BusinessObjectID, // ID объекта
},
Comindware.Entities entities // используется для доступа к данным шаблонов записей
Выходные данные
bool
// Если скрипт вернул true, токен идёт по этому потоку управления
Заготовка скрипта
public class Script {
public static TimeSpan Main (Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities) {
// Тело скрипта
}
}
Входные данные
Comindware.Process.Api.Data.ScriptContext context {
string ProcessID, // ID процесса
string BusinessObjectID, // ID объекта
},
Comindware.Entities entities // используется для доступа к данным шаблонов записей
Выходные данные
TimeSpan
// Продолжительности процесса присваивается возвращённое значение длительности
Заготовка скрипта
public
class
Script {
public static void Main(Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities) {
// Тело скрипта
}
}
Входные данные
Comindware.Process.Api.Data.ScriptContext context {
string ProcessID, // ID процесса
string BusinessObjectID, // ID объекта
},
Comindware.Entities entities // используется для доступа к данным шаблонов записей
Выходные данные
string
// Скрипт должен вернуть ID экземпляра процесса
Заготовка скрипта
public class Script {
public static string Main(Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities) {
// Тело скрипта
}
}
Входные данные
Comindware.Process.Api.Data.ScriptContext context {
string ProcessID, // ID процесса
string BusinessObjectID // ID объекта
},
Comindware.Entities entities // используется для доступа к данным шаблонов записей
Выходные данные
string, number, dateTime, TimeSpan, bool
// Атрибуту присваивается возвращённое строковое значение
Во всех пользовательских C#-скриптах ПО позволяет подключать перечисленные ниже библиотеки и использовать их публичные классы.
Номер Статьи: 4864
Размещено: Tue, Aug 8, 2023
Последнее обновление: Fri, Mar 21, 2025
Online URL: https://kb.comindware.ru/article/napisanie-skriptov-na-yazyke-c-4864.html