@boristype/types
Version:
<h1 align="center">WT Types</h1> <div align="center"> Typescript типы для WebSoft HCM.
860 lines (793 loc) • 294 kB
TypeScript
declare namespace tools {
let lds_address: XmlElem<string | null>;
/**
* Возвращает схему URL.
* @returns {string} Схема.
* @example
* ```
* UrlSchema("http://docs.datex.ru/"); // http
* ```
*/
function get_server_protocol(): "file" | "http" | "https" | "mailto" | "ftp" | "x-local";
let object_license: XmlElem<unknown | null>;
function encode_course_folder(code: string): string;
function decode_course_folder(code: string): string;
/**
* Загрузка курса из архива в базу. Курс создается если его нет или обновляется существующий.
* @param {string} fileUrl - Адрес до файла (архива) с курсом.
* @param {string} [charset="utf-8"] - Кодировка.
* @param {CourseDocument} [courseDocument] - Документ курса.
* @returns {CourseDocument} Документ курса или ошибка.
*/
function load_course(fileUrl: string, charset?: string | null | undefined | "", courseDocument?: CourseDocument | undefined | ""): CourseDocumentTopElem | "" | string | LoadCourseResult;
/**
* Копирует ресурсы из списка, указанного в файле manifest, в папку получателя.
* @param {string} fileUrl - Путь или URL до файла manifest.
* @param {string} baseUrl - Путь или URL до папки получателя относительно папки wt/web.
* @returns {boolean} Возвращает значение true, если операция завершилась успешно (копирование выполнено),
* или false - в противном случае (копирование не выполнено).
*/
function copy_manifest_resources(fileUrl: string, baseUrl: string): BaseToolsResponse;
function open_course_package_server(url: string): {
error: 0 | 1;
error_text: string;
file_import: string,
temp_url: string;
course: unknown | null;
};
function copy_url_temp_suffix(destUrl: string, sourceUrl: string): void;
/**
* Обновляет данные о количестве дочерних элементов в родительском форуме.
* Если задан forumId, то дочерним записям форума с iParentForumEntryIDParam,
* проставляется новое значение форума.
* @param {ForumDocument} [forumDocument] - Необязательный, если задан parentForumId – Doc записи форума,
* родителя которого нужно обновить.
* @param {number} [forumId] - Необязательный – Id форума, к которому нужно привязать элементы.
* @param {number | "" | null} [parentForumId] - Необязательный, если задан doc – Id родительской записи форума.
* @returns {number | null} Целое число (int), количество дочерних элементов вниз по иерархии
* в документе определяемом parentForumId.
* @example
* ```
* tools.update_forum_entry(null, null, iParentForumEntryID);
* tools.update_forum_entry(TopElem.Doc, TopElem.forum_id);
* ```
*/
function update_forum_entry(forumDocument: ForumDocument, forumId?: number | "" | null, parentForumId?: number | null): number;
/**
* Обновляет данные о количестве дочерних элементов в родительском комментарии к разделу портала.
* Если задан iNewPortalDocIDParam, то дочерним записям проставляется новое значение документа портала,
* к которому они привязаны.
* @param {DocumentDocument} documentDocument - Doc документ записи комментария к разделу портала,
* родителя которого нужно обновить.
* @param {number|""|null} documentId - Id раздела портала к которому нужно привязать дочерние комментарии.
* @returns {number} Целое число , количество дочерних элементов вниз по иерархии в определяемом doc.
*/
function update_document_comment_entry(documentDocument: DocumentDocument, documentId: number | "" | null): number;
/**
* Добавляет строку к событию базы, определяемому `report_id` или документом `source_doc`.
* @param {number} actionReportId - Id события базы, к которому нужно добавить строку.
* @param {string} text - Строка, которую нужно добавить к событию базы.
* @param {ActionReportDocument} actionReportDocument - Документ события базы, к которому нужно добавить строку.
* @returns {ActionReportDocument} Сохраненный документ события базы с добавленной строкой.
* @example
* ```
* var reportDocument = OpenNewDoc("x-local://wtv/wtv_action_report.xmd");
* var reportId = reportDocument.DocID;
* tools.add_report(reportId, "Saving archive: OK.");
* ```
*/
function add_report(actionReportId: number, text?: string, actionReportDocument?: ActionReportDocument): ActionReportDocument;
/**
* Загрузка данных на сервер обмена данными.
* @param {number} serverId - Id сервера обмена данными, на который нужно отправить данные.
* @param {Date} [date] - Дата, начиная с которой нужно грузить данные.
* @param {string} type - Описание типа отправки.
* @returns {string} Строка с ошибкой или пустая строка в случае успеха.
* @example
* ```
* var date = tools.get_exchange_date(serverDoc.TopElem.upload, serverDoc.TopElem.last_upload_date);
* tools.upload_data(serverId, date, "quick");
* tools.upload_data(serverId, "", "full");
* ```
*/
function upload_data(serverId: number, date: Date, type: string): string;
/**
* Получение данных с сервера обмена данными.
* @param {number} serverId - Id сервера обмена данными, с которого необходимо получить данные.
* @returns {DownloadDataResponse} В случае успеха выполнения функции возвращаются значения oRes.error = 0
* и пустая строка в поле oRes.error_text.
* В случае возникновения ошибки возвращаются значения oRes.error = 500 и сведения об ошибке в поле oRes.error_text.
*/
function download_data(serverId: number): {
error: 0 | 1;
error_text: string;
data_file_url: string;
report_id: number;
};
/**
* Создание пакета данных для отправки на сервер обмена данными.
* @param {number} serverId - Id сервера обмена данными, для которого формируется пакет.
* @param {number} reportId - Id документа событий базы, в который будут записываться отчет.
* @param {string} packageId - Строковое выражение Id загружаемого пакета.
* @param {Date} [date] - Дата, начиная с которой нужно загружать данные.
* @returns {string} Строковое выражение, содержащее путь до сформированного пакета.
* @example
* ```
* var filename = tools.create_data_package(serverId, reportId, packageId, "");
* var packageUrl = tools.create_data_package(serverId, reportId, packageId, date, serverId);
* var filename = ServerEval("tools.create_data_package(" + serverId + "," + reportId + "," + packageId + ",\"\")");
* ```
*/
function create_data_package(serverId: number, reportId: number, packageId: string, date: Date): string;
/**
* Возвращает последнюю дату обмена данными (отправки или получения) для указанного сервера обмена данными.
* @param {ExchangeServerDocumentTopElem} source - Xml элемент, в котором храниться дата (download, upload).
* @param {Date} lastDate - Дата последней отправки.
* @returns {Date} Дата обмена данными.
* @example
* ```
* _exa2wx5nutv7 = tools.get_exchange_date(curServerDoc.download, curServerDoc.last_download_date);
* _exa2wx5nutv7 = tools.get_exchange_date(curServerDoc.upload, curServerDoc.last_upload_date);
* ```
*/
function get_exchange_date(source: ExchangeServerDocumentTopElem, lastDate: Date): Date;
/**
* Отправляет файл на указанный сервер обмена данными.
* Отправление идет как письмо по протоколу Smtp.
* Поэтому возможно указать тему и тело сообщения.
* @param {string} subject - Строка с темой отправляемого сообщения.
* @param {string} body - Строка с телом отправляемого сообщения.
* @param {string} sendFile - Строка с адресом до отправляемого файла.
* @param {number} serverId - Id сервера обмена данными, для которого формируется пакет.
* @param {number} reportId - Id документа событий базы, в который будут записываться отчет.
* @returns {string} Строка с адресом до сформированного пакета.
* @example
* ```
* var subject = "data [" + serverDocument.code.Value + "]" + (type == "full" ? " - full" : "");
* tools.send_file_to_server(subject, "Id: " + packageId, fileName, serverId, reportId);
* ```
*/
function send_file_to_server(subject: string, body: string, sendFile: string, serverId: number, reportId: number): string;
/**
* Отправляет файл на указанный сервер обмена данными. Отправление идет Post по http протоколу.
* @param {string} fileAddress - Строка с адресом до отправляемого файла.
* @param {number} serverId - Id сервера обмена данными, для которого формируется пакет.
* @param {number} reportId - Id документа событий базы, в который будут записываться отчет.
*/
function post_file_to_server(fileAddress: string, serverId: number, reportId: number): void;
/**
* Преобразует дату в строку, разделенную символом _ (нижнее подчеркивание).
* Например, дата 01.02.1999 12:34:15 будет преобразована в 1999_02_01_12_34.
* @param {Date} [date=Date()] - Дата, подлежащая преобразованию.
* Если атрибут не указан, то будут преобразовываться текущие дата и время.
* @returns {string} Дата, преобразованная в строку. Результат дейсттвия функции.
*/
function date_str(date?: Date): string;
function uni_process_package(urlPackage: string, fldForm: unknown): {
error: 0 | 1;
error_text: string;
progress_count: number;
list_count: number;
};
function process_package(url: string, fldPackagesValId: number, updateObjects: boolean): unknown;
/**
* Возвращает ошибку формы, переданной как параметр.
* @param {XmlDocument} xmlDocument - Документ формы, содержащей ошибку.
* @returns {string} Строка с описанием ошибки.
*/
function get_param_error_text(xmlDocument: XmlDocument): string;
/**
* Загружает указанные пакеты с сервера обмена данными.
* @param {number} exchangeServerId - Id сервера обмена данными, с которого загружаются пакеты.
* Если Id сервера обмена данными не указан, считается, что сервер локальный.
* @param {number} [packageId] - Id пакета, который нужно загрузить.
* @param {string} [filePath] - Путь до файла с пакетом.
* @returns {DownloadDataResponse} Результирующий объект oRes имеет три свойства:
* - код oRes.error;
* - URL файла данных oRes.data_file_url;
* - и сведения об ошибке oRes.error_text.
*/
function download_package_list(exchangeServerId: number, packageId?: number, filePath?: string): {
error: 0 | 1;
error_text: string;
data_file_url: string;
report_id: number;
};
function download_package(exchangeSeverId: number, packageId: number, tempUrl: string, fldPackageValId: number, updateObjects: boolean): {
error: 0 | 1;
error_text: string;
data_file_url: string;
application_id: number;
};
/**
* Обрабатывает пакет с данными и загружает содержимое в базу данных.
* @param {string} path - Путь до файла с пакетом.
* @param {string} type - Тип загрузки.
* Возможные значения:
* objects и std_objects – загружает объекты в базу;
* std_objects применяется для загрузки стандартных объектов из первоначальной установки;
* code_update – выгружает файлы из архива в папку wtv сервера WebTutor;
* web – выгружает файлы из архива в папку wt/web сервера WebTutor.
* @param {XmlDocument} source - Источник данных о типах загружаемых объектов, и других параметров загрузки объектов.
* @param {number} reportId - Id документа событий базы, в который будут записываться отчет.
* @param {number} exchangeServerId - Id сервера обмена данным, из которого берутся параметры
* для фильтрации данных из пакета.
* @param {number} downloadPackageId - Id пакета, из которого нужно загрузить данные.
* @returns {boolean} Успешная или не успешная загрузка данных.
* В случае типа объектов objects и std_objects.
* Возвращается форма открытого документа пакета.
* @example
* ```
* var packageProcessResult = tools.package_process(Ps.local_file_url, Ps.type, Ps.Doc.DocID);
* common_variables.len_flag = packageProcessResult !== null;
* ```
*/
function package_process(path: string, type: string, source: XmlDocument, reportId: number, exchangeServerId: number, downloadPackageId: number): boolean;
/**
* Назначение курса участникам указанного мероприятия.
* @param {number} personId - Id сотрудника, которому назначается курс.
* @param {number} courseId - Id курса, который необходимо назначить.
* @param {number} eventId - Id мероприятия, участникам которого назначается курс.
* @param {CollaboratorDocumentTopElem} personDoc - TopElem карточки сотрудника, которому назначается курс.
* @param {number} educationPlanId - Id плана обучения, в рамках которого назначен курс.
* @param {number} duration - Длительность курса в днях. Определяет дату планируемого завершения.
* @param {Date} startLearningDate - Дата начала обучения. Если данный аргумент задан,
* то обучение невозможно будет начать раньше указанной даты.
* @param {Date} lastLearningDate - Контрольная дата завершения предыдущего обучения.
* Если параметр задан, то при назначении курса, проверяется,
* существует ли в каталоге learnings курс, завершенный после указанной даты.
* Если такой курс существует, то Id соответствующей записи из каталога
* learnings возвращается как результат работы функции.
* @param {number} groupId - Id группы, которой назначен курс.
* @param {string} eid - Код записи в каталоге active_learnings.
* Если он указан, то при назначении курса,
* когда производится проверка на уже существующий активный курс
* данного сотрудника в каталоге active_learnings, проверяется также,
* что у данной записи должен быть указанный в параметре код.
* @param {boolean} skipDismissed - Аргумент, указывающий на необходимость пропускать уволенных
* сотрудников (true – пропускать, false –не пропускать). По умолчанию true.
* @returns {XmlElem<number> | null | ActiveLearningDocument}.
* Если курс назначен при выполнении функции,
* то возвращается ссылка на вновь созданный документ обучения.
* Если курс был назначен ранее, но не завершен, или завершен,
* но не прошло еще время, указанное в атрибуте dtLastLearningDateParam,
* то возвращается Id карточки ранее назначенного курса (из каталога active_learning).
*/
function activate_course_to_person(personId: number | string, courseId?: number, eventId?: number, personDoc?: CollaboratorDocumentTopElem, educationPlanId?: number, duration?: number, startLearningDate?: Date, lastLearningDate?: Date, groupId?: number, eid?: string, skipDismissed?: boolean): XmlElem<number> | null | ActiveLearningDocument;
/**
* Назначение курса участникам указанного мероприятия.
* @param {ActivateCourseToPersonObject} params - Параметры назначения курса.
* @returns {XmlElem<number> | null | ActiveLearningDocument}.
* Если курс назначен при выполнении функции,
* то возвращается ссылка на вновь созданный документ обучения.
* Если курс был назначен ранее, но не завершен, или завершен,
* но не прошло еще время, указанное в атрибуте dtLastLearningDateParam,
* то возвращается Id карточки ранее назначенного курса (из каталога active_learning).
*/
function activate_course_to_person(params: ActivateCourseToPersonObject): XmlElem<number> | null | ActiveLearningDocument;
/**
* Функция назначения теста пользователю.
* @param {ActivateCourseToPersonObject} params - Объект JavaScript (Структура параметров).
* @returns {XmlElem<number> | null | XmlDocument} Объект XMLDoc или Целое число.
* Если тест назначен при выполнении функции, то возвращается ссылка на вновь созданный документ обучения.
* Если тест был назначен ранее, но не завершен, или завершен,
* но не прошло еще время, указанное в атрибуте dtLastLearningDateParam,
* то возвращается Id карточки ранее назначенного теста (из каталога active_test_learning).
*/
function activate_test_to_person(params: ActivateTestToPersonParams): XmlElem<number> | null | ActiveTestLearningDocument;
/**
* Функция назначения теста пользователю.
* @param {number} personId - Id пользователя.
* @param {number} assessmentId - Id курса.
* @param {number} eventId - Id мероприятия.
* @param {CollaboratorDocumentTopElem} personDoc - Документ пользователя.
* @param {AssessmentDocumentTopElem} assessmentDocument - Документ теста.
* @param {null} eventDocument - Документ мероприятия.
* @param {number} duration - Продолжительность тестирования.
* @param {Date} startLearningDate - Дата начала тестирования.
* @param {Date} lastLearningDate - Дата окончания тестирования.
* @param {number} groupId - Id группы.
* @param {number} educationPlanId - Id плана обучения.
* @param {boolean} skipDismissed - Аргумент, указывающий на необходимость пропускать уволенных сотрудников.
* (true – пропускать, false – не пропускать). По умолчанию true.
* @returns {XmlElem<number> | null | XmlDocument} Объект XMLDoc или Целое число.
* Если тест назначен при выполнении функции, то возвращается ссылка на вновь созданный документ обучения.
* Если тест был назначен ранее, но не завершен, или завершен,
* но не прошло еще время, указанное в атрибуте dtLastLearningDateParam,
* то возвращается Id карточки ранее назначенного теста (из каталога active_test_learning).
*/
function activate_test_to_person(personId: number, assessmentId: number | string, eventId: number | string | null | undefined, personDoc: CollaboratorDocumentTopElem | null | undefined | "", assessmentDocument: AssessmentDocumentTopElem | null | "", eventDocument?: null, duration?: number | string | null, startLearningDate?: Date | string, lastLearningDate?: Date | string, groupId?: number | string | null, educationPlanId?: number | string | null, skipDismissed?: boolean | null): XmlElem<number> | null | ActiveTestLearningDocument;
/**
* Назначение теста участникам указанного мероприятия.
* @param {number} eventId - Id мероприятия, участникам которого назначается тест.
* @param {number} assessmentId - Id теста, который необходимо назначить.
* @param {EventDocument} eventDocument - Документ карточки мероприятия.
* @param {number} duration - Длительность теста в днях. Определяет дату планируемого завершения.
* @param {Date} startLearningDate - Дата начала обучения. Если данный аргумент задан,
* то обучение невозможно будет начать раньше указанной даты.
* @param {Date} lastLearningDate - Контрольная дата завершения предыдущего обучения.
* Если параметр задан, то при назначении теста проверяется, существует ли в каталоге test_learnings тест,
* завершенный после указанной даты. Если такой тест существует, то Id соответствующей записи из
* каталога test_learnings возвращается как результат работы функции.
* @param {string} actType - Строка, указывающая, кому назначать тесты.
* Возможные значения:
* 'all' - Тесты назначаются всем участникам мероприятия (значение по умолчанию).
* 'post' - Тесты назначаются участникам мероприятия, у которых проставлен флаг «Присутствовал на мероприятии».
* @param {boolean} skipDismissed - Аргумент, указывающий на необходимость пропускать уволенных сотрудников
* (true – пропускать, false – не пропускать). По умолчанию true.
* @param {boolean} bUseProctoring - Использовать прокторинг.
* @param {number} iProctorPreferID - Id прокторинга.
* @param {boolean} bActivateOnlyAssist - Активация мероприятий.
* @returns {number} Количество назначенных тестов.
*/
function activate_test_to_event(eventId: number, assessmentId: number, eventDocument?: EventDocument, duration?: number, startLearningDate?: Date, lastLearningDate?: Date, actType?: string, skipDismissed?: boolean, bUseProctoring?: boolean, iProctorPreferID?: number, bActivateOnlyAssist?: boolean): number;
/**
* Назначение курса участникам указанного мероприятия.
* @param {number} eventId - Id мероприятия, для участников которого назначается курс.
* @param {number} courseId - Id курса, который необходимо назначить.
* @param {EventDocument} eventDocument - Документ карточки мероприятия.
* @param {number} duration - Длительность курса в днях. Определяет дату планируемого завершения.
* @param {Date} startLearningDate - Дата начала обучения. Если данный аргумент задан,
* то обучение невозможно будет начать раньше указанной даты.
* @param {Date} testLearningDate - Контрольная дата завершения предыдущего обучения.
* Если параметр задан, то при назначении курса, проверяется,
* существует ли в каталоге learnings курс, завершенный после указанной даты.
* Если такой курс существует, то соответствующая запись из каталога
* learnings возвращается как результат работы функции.
* @returns {number} Количество назначенных курсов.
*/
function activate_course_to_event(eventId: number, courseId: number, eventDocument?: EventDocument, duration?: number, startLearningDate?: Date, testLearningDate?: Date): number;
/**
* Назначение сотруднику курсов, которые указаны в учебных программах (с типом "Электронный курс"),
* перечисленных в наборе программ. Если в наборе учебных программ указаны учебные программы,
* содержащие дистанционное обучение (курсы), то эти курсы будут назначены сотруднику.
* @param {number} personId - Id сотрудника, которому назначается набор учебных программ.
* @param {number} educationProgramId - Id набора учебных программ.
* @param {CollaboratorDocumentTopElem} collaboratorDocumentTopElem - TopElem карточки сотрудника,
* которому назначается тест.
* @param {EducationProgramDocumentTopElem} educationProgramDocumentTopElem - TopElem карточки набора
* учебных программ.
* @returns {number} Количество назначенных курсов в составе набора учебных программ.
*/
function activate_education_program_to_person(personId: number, educationProgramId: number, collaboratorDocumentTopElem: CollaboratorDocumentTopElem, educationProgramDocumentTopElem: EducationProgramDocumentTopElem): number;
/**
* Возвращает время (часы, минуты и секунды) из строки с разделителем T,
* например, вида "2015-06-02T07:51:44".
* Используется для разбора результатов теста.
* Проверка формата исходного аргумента не производится.
* @param {string} duration - Строковое выражение даты в формате "2015-06-02T07:51:44".
* @returns {string} Строковое выражение времени (часы, минуты и секунды) в формате "07:51:44",
* если переданы дата и время, или выражение, находящееся после символа T, если передана строка с таким разделителем.
* @example tools.get_time_from_duration("2015-06-02T07:51:44"); // 07:41:44
*/
function get_time_from_duration(duration: string): string;
/**
* Возвращаете время (часы, минуты и секунды) в виде «часы H минуты M секунды S»,
* полученное из количества секунд. Используется для разбора результатов теста.
* @param {string} seconds - Количество секунд, которые нужно преобразовать в часы, минуты и секунды.
* @returns {string} Строковое значение, содержащее значение времени в формате «часы H минуты M секунды S» в строке,
* или пустая строка, если входной параметр (аргумент) не удалось преобразовать в число.
* @example tools.get_time_from_seconds(86399); // 23H59M59S
*/
function get_time_from_seconds(seconds: string): string;
/**
* Отменяет транзакцию. Используется в модуле геймификация.
* @param {number} transactionId - Id транзакции, которую нужно отменить.
* @returns {number} Id транзакции, отменяющей указанную транзакцию.
* @example tools.delete_transaction(Ps.Doc.DocID);
*/
function delete_transaction(transactionId: number): number;
/**
* Создает транзакцию по списанию указной суммы в указанной валюте с указанного счета.
* Используется в модуле геймификация.
* Совершает оплату по выбранному объекту.
* @param {number} acountId - Id объекта, к которому прикреплен счет, с которого будет происходить списание.
* @param {string} accountCurrency - Строка валюты счета, содержащая Id валюты из списка валют в системе.
* @param {number} sum - Сумма.
* @param {string} comment - Комментарий к транзакции.
* @param {number} objectId - Id объекта по которому происходит транзакция.
* @returns {TransactionDocument} Документ созданной новой транзакции.
* @example
* ```
* tools.pay_new_transaction_by_object(
* personID,
* fldBonusElem.currency_type_id,
* fldBonusElem.sum,
* "Bonus by qualification \"" + teQualification.name + "\".",
* qualificationID
*);
* ```
*/
function pay_new_transaction_by_object(acountId: number, accountCurrency: string, sum: number, comment: string, objectId: number): TransactionDocument;
/**
* Создает транзакцию зачислению суммы из указанной оплаты на счет.
* @param {number} invoiceId - Id документа Оплат.
* @param {InvoiceDocumentTopElem} [invoiceDocumentTopElem] - TopElem карточки оплаты.
* @returns {InvoiceDocument | null} Документ оплаты или null.
*/
function pay_invoice(invoiceId: number, invoiceDocumentTopElem: InvoiceDocumentTopElem): InvoiceDocument | null;
/**
* Создает транзакцию по списанию указной суммы со счета указанной организации.
* @param {number} orgId - Id организации.
* @param {number} amount - Сумма списания.
* @param {string} [comment] - Комментарий к транзакции.
* @returns {number | null} Id транзакции или null.
*/
function pay_courses(orgId: number, amount: number, comment?: string): number | null;
/**
* Создает документ об оплате (invoice).
* @param {number} orgId - Id организации.
* @param {number} amount - Сумма списания.
* @returns {number} Id оплаты.
*/
function set_account(orgId: number, amount: number): number;
/**
* Создает документ об оплате (invoice) для курса из заявки.
* @param {number} orgId - Id организации.
* @param {number} requestId - Id заявки сотрудника на курс по которой происходит списание.
* @returns {number} Id оплаты.
*/
function personal_pay(orgId: number, requestId: number): number;
/**
* Создает новое неотправленное уведомление.
* В теле уведомления (шаблоне уведомления) обращение к первому параметру идет через objDocID, к документу,
* открываемому автоматически при вызове функции по отправке уведомления, objDoc. ObjDoc- это TopElem документа.
* Обращение ко второму параметру идет через objDocSecID, к документу, открываемому автоматически при
* вызове функции по отправке уведомления objDocSec. ObjDocSec- это TopElem документа.
* Если документ отрыт ранее, то для ускорения работы функции отправки уведомления, можно передать открытый
* документ в функцию, что позволит избежать его повторного открытия.
* Для этого вместо tools.create_notification(code, id1, '', id2)
* вызывается функция, куда передаются дополнительные параметры
* tools.create_notification(code, id1, '', id2, TopElem1,TopElem2).
* @param {string} notificationIdentifier - Код типа уведомления, которое будет отправляться.
* Если параметр пустой ('') или равен '0', то в параметр
* additionalParams необходимо передавать структуру, из которой будут заполняться типы получателей (recipients),
* тип отправителя (sender_selector), тема сообщения (subject), тип текста в теле сообщения (body_type),
* тело сообщения (body) и адрес отправителя (sender_email). Если oTypeParam - это реальный код типа уведомления,
* то типы получателей (recipients), тип отправителя (sender_selector) и адрес отправителя (sender_email) будут
* браться из указанного объекта. А тема сообщения (subject), тип текста в теле сообщения (body_type),
* тело сообщения (body) из шаблона уведомления, прикрепленного к типу сообщения с указанным в параметре кодом.
* Если в существующих в системе типах уведомления не найдено типа уведомления с указанным кодом,
* то уведомление не формируется и функция возвратит значение false.
* В определенных случаях в качестве данного аргумента вместо кода типа уведомления
* может быть указан Id открытого документа типа уведомления.
* @param {string} objectId - Id первого объекта (обыкновенно, по данным первого документа формируется, в частности,
* перечень сотрудников, которым нужно отправить сообщение. В теле уведомления (шаблоне уведомления) обращение
* к этому параметру идет через objDoc (например, <%=objDoc.name%>) и objDocID.
* @param {T} text - Аргумент, к которому можно обращаться в теле шаблона уведомления как к Text (<%=Text%>).
* @param {number} secondObjectId - Id второго объекта, который прикрепляется к уведомлению.
* В теле уведомления (шаблоне уведомления) обращение этому параметру
* идет через objDocSec (например, <%=objDocSec.name%>) и objDocSecID.
* @param {XmlTopElem} objectTopElem - TopElem карточки первого объекта, определяемого аргументом objectId.
* @param {XmlTopElem} secondObjectTopElem - TopElem карточки второго объекта,
* определяемого аргументом secondObjectId.
* @param {ICreateNotificationAdditionalParams} additionalParams - Структура, позволяющая создать собственное
* (пользовательское) уведомление "на лету".
* Из нее берутся данные о типах получателей (recipients), тип отправителя (sender_selector),
* тема сообщения (subject), тип текста в теле сообщения (body_type), тело сообщения (body)
* и адрес отправителя (sender_email).
* @returns {boolean} Результат отправки уведомления.
*/
function create_notification<T>(notificationIdentifier: number | string, objectId: number | string, text?: T, secondObjectId?: number, objectTopElem?: XmlTopElem, secondObjectTopElem?: XmlTopElem, additionalParams?: ICreateNotificationAdditionalParams): boolean;
/**
* Отправляет письмо с параметрами, заданными в аргументах.
* Если первый параметр равен '0' или пустому значению, то производится отправка по адресам,
* заданным в структуре recipients объекта teSourceParam.
* Если первый параметр – это код или идентификатор реального типа уведомления,
* то в список адресатов будут добавлены адреса, вычисленные по правилам этого объекта (типа уведомления).
* Тема (subject) и тело (body) письма будут взяты из аргументов, переданных в функцию,
* а не из параметров шаблона уведомления.
* @param {string} type - Код типа уведомления, которое будет связано с формируемым шаблоном уведомления.
* @param {number} objectId - Id первого прикрепленного документа,
* относительного которого будет идти поиск получателей.
* В шаблоне уведомления обращение к этому параметру идет через objDocID.
* @param {string} [subject] - Строка, в которой содержится тема сообщения.
* @param {string} [body] - Строка, в которой содержится тело сообщения.
* @param {XmlTopElem} [topElem] - TopElem карточки первого объекта, определяемого аргументом <iObjectIDParam>.
* @param {XmlDocument} [teSourceParam] - Структура, из которой будут заполняться:
* - типы получателей (recipients);
* - тип отправителя (sender_selector);
* - тип текста в теле сообщения (body_type);
* - адрес отправителя (sender_email).
* @param {number} [objectSecondId] - Id документа, который передается,
* как второй прикрепленный к уведомлению документ.
* В шаблоне уведомления обращение этому параметру идет через objDocSecID.
* @returns {boolean} Возвращает значение true, если операция завершилась успешно, или false в противном случае.
* @example tools.create_template_notification(0, personId, dlgDoc.TopElem.subject, dlgDoc.TopElem.body, null, dlgDoc.TopElem, secondId);
*/
function create_template_notification(type: string, objectId: number, subject?: string, body?: string, topElem?: XmlTopElem, teSourceParam?: XmlDocument, objectSecondId?: number): ReturnType<typeof create_notification>;
/**
* Отправляет созданное с помощью функции tools.create_notification неотправленное уведомление.
* @param {number} activeNotificationId - Id неотправленного уведомления, которое должно быть отправлено.
* @returns {boolean} Флаг успешной или не успешной отправки уведомления.
*/
function send_notification(activeNotificationId: number): boolean;
/**
* Формирует форму сертификата из стандартного шаблона templates/certificate_template.html
* на основе завершенного курса.
* Используется в карточке завершенного курса.
* @param {number} learningId - Id завершенного курса, для которого формируется сертификат.
* @returns {string} Сформированный Html сертификат.
*/
function save_certificate(learningId: number): string;
/**
* Возвращает строку символов указанной длины, сформированную случайным образом.
* @param {number} length - Количество символов в указанной строке. Длина возвращаемой строки.
* @param {string} [dictionary] - Набор символов, из которого формируется строка
* (кроме букв и цифр набор может содержать также специальные символы '!@#$%^&*_+-=?').
* Для удобства использования набор не должен содержать символы 'o', 'O', '0', 'l', 'I'.
* Если параметр не указан (опущен или представлен в виде пустой строки),
* то символы берутся из набора 'qwertyuiopasdfghjklzxcvbnm1234567890'.
* @returns {string} Cформированное строковое значение.
* @example
* ```
* // строка из 12 случайных символов
* password = tools.random_string(12);
* // строка из 10 случайных символов (с применением строчных букв и специальных символов)
* password = tools.random_string(10, "QWERTYUPASDFGHJKLZXCVBNMqwertyuipasdfghjkzxcvbnm123456789!@#$%^&*_+-=?");
* docPerson.TopElem.password = tools.random_string(Ps.password_digits_num);
* ```
*/
function random_string(length: number, dictionary?: string): string;
/**
* Загрузка данных по сотрудникам из XML-структуры.
* Используется для импорта сотрудников.
* Документ XML с данными для загрузки должен быть сформирован
* предварительно и соответствовать определенным правилам.
* @param {XmlDocument} xmlDocument - Документ XML с данными для загрузки.
* @returns {number} Id документа события базы с отчетом о загрузке.
* @example
* ```
* var docId = tools.import_excel_persons(xmlDocument);
* var xml = CodeLiteral(fldTE.GetXml({ "tabs": false }));
* var importExcelPersonActionReportId = OptInt(tools.import_excel_persons(xml), null);
* local_settings.temp.import_excel_person_action_report_id = importExcelPersonActionReportId;
* ```
*/
function import_excel_persons(xmlDocument: XmlDocument): number;
/**
* Используется для проверки заполнения схемы импорта перед импортом сотрудников в интерфейсе администратора.
* @param {XmlTopElem} topElem - TopElem Xml документа с настройками для загрузки.
* @returns {string} Возвращаемый результат – строка с ошибкой или пустая строка в случае успеха.
*/
function start_import_excel_persons(topElem: XmlTopElem): string;
function get_sub_boss_by_person_id(personId: number, person: CollaboratorDocument): number[];
/**
* Возвращает непосредственных руководителей организации указанного сотрудника.
* @param {number} personId - Id сотрудника для организации, которого производится поиск руководителей.
* @returns {number[]} Массив с Id сотрудников, являющихся непосредственными руководителями организации
* указанного сотрудника.
*/
function get_main_boss_by_person_id(personId: number): number[];
/**
* Добавляет новый язык в список используемых в системе языков. Загрузка происходит из XML-файла с константами.
* Используется в администраторе в общих настройках, для установки новых языков или обновления существующих.
* @param {string} sLngUrlParam - Путь до XML-файла с константами.
* @param {boolean} bDoObtainParam - Используется при вызове функции на сервере. Если значение аргумента равно `true`,
* то существующие значения констант языка перезаписываются новыми из файла `sLngUrlParam`.
* @returns {number} Количество обновленных констант.
* @example
* ```
* tools.add_lng(_url);
* tools.add_lng(UrlAppendPath("x-local://custom/", temp_doc.lngs_url), true);
* _num = TopElem.add_lng_items(_doc, true);
* ```
*/
function add_lng(sLngUrlParam: string, bDoObtainParam?: boolean): number;
/**
* Получение текстового значения языкового параметра из curLngWeb.
* @param {string} name - Название параметра.
* @returns {string} Значение языкового параметра.
*/
function get_web_str(name: string): string;
/**
* Проверяет, является ли указанный сотрудник (первый аргумент функции) непосредственным руководителем сотрудника,
* который указан в качестве второго аргумента функции.
* @param {number} userId - Id сотрудника, для которого нужно осуществить проверку,
* является ли он руководителем сотрудника, заданного во втором аргументе.
* Если первый аргумент не указан, то проверка производится относительно текущего пользователя
* (Id текущего авторизованного на портале пользователя равно curUserID),
* если этот пользователь определен в окружении, в котором вызывается функция.
* @param {number} personId - Id сотрудника, для которого нужно осуществить проверку,
* является ли он подчиненным сотрудника, заданного в первом аргументе.
* Если второй аргумент не указан, то проверка производится относительно поля curObject.person_id,
* если curObject определен в окружении, в котором вызывается функция.
* @returns {boolean} Возвращает значение true, если первый сотрудник является
* непосредственным руководителем второго, или false - в противном случае.
* @example
* ```
* // Пусть в системе имеется сотрудники Жирова Антонина Васильевна и Васильева Людмила Петровна
* // Находим программно этих сотрудников с помощью функции tools.get_doc_by_key
* oCollab1 = tools.get_doc_by_key("collaborator", "fullname", "Жирова Антонина Васильевна");
*
* // на экран выводится информация об отобранном сотруднике
* alert("Найден сотрудник " + oCollab1.TopElem.fullname + " с идентификационным номером " + oCollab1.DocID);
*
* oCollab2 = tools.get_doc_by_key("collaborator", "fullname", "Васильева Людмила Петровна");
* // на экран выводится информация об отобранном сотрудник
* alert("Найден сотрудник " + oCollab2.TopElem.fullname + " с идентификационным номером " + oCollab2.DocID);
*
* // Жирова А.В. является заведующей отделом, в котором работает Васильева Л.П.
* // Проверяем, является ли Жирова А.В. начальником Васильевой Л.П.?
* bIs_Boss = tools.is_boss(oCollab1.DocID, oCollab2.DocID);
* alert(bIs_Boss); // ответ - верно
* ```
*/
function is_boss(userId: number, personId: number): boolean;
/**
* Возвращаемый результат – флаг да, если первый сотрудник, является руководителем второго сотрудника.
* Или нет, если проверка не удалась или первый сотрудник, не является
* непосредственным руководителем второго сотрудника.
* @param {number} managerId - Id сотрудника, для которого нужно осуществить проверку.
* То есть проверяется, является ли он непосредственным руководителем,
* указанного типа, сотрудника, который указан в качестве второго параметра функции.
* @param {number} userId - Id сотрудника руководитель, для которого проверяется.
* @param {string} [catalogNames] - Native – поиск только непосредственного руководителя по должности.
* Not_native руководитель любого типа группы, сотрудника, подразделения, организации.
* @param {boolean} [bossType] - True поиск только непосредственного руководителя.
* False поиск только функционального руководителя без признака непосредственный.
* Если передать Id нужного типа руководителя, то будет проверятся руководитель указанного типа.
* @param {number} [limit] - .
* @param {string} [searchParam] - .
* @returns {boolean | null} Результат проверки.
*/
function is_user_boss(managerId: number, userId: number, catalogNames?: "not_native" | "native" | "collaborator" | "group" | "org" | "position" | "subdivision" | "" | null | undefined, bossType?: boolean | number, limit?: number | "", searchParam?: string | null): boolean | null;
/**
* Используется для работы в документообороте по процедуре оценки и по заявкам.
* Проверяет, является ли указанный сотрудник тем, от чьего имени подана заявка
* или на кого создана форма оценки (где он оцениваемый).
* @param {number} userId - Id сотрудника, для которого нужно осуществить проверку.
* Если параметр не указан, то проверка происходит относительно текущего пользователя (curUserID),
* если он определен в окружении, в котором вызывается функция.
* @returns {boolean} Результат проверки.
* @example tools.is_self_cur_user()
*/
function is_self_cur_user(userId?: number): boolean;
function is_main_boss(): boolean;
function is_real_boss(): boolean;
function is_cost_center_boss(): boolean;
function is_next_boss(): boolean;
/**
* Используется для работы в документообороте по заявкам в процедуре оценки.
* Проверяет, является ли текущий пользователь непосредственным руководителем указанного подразделения.
* Проверка производится относительно текущего пользователя
* (Id текущего авторизованного на портале пользователя равно curUserID),
* если он определен в окружении, в котором вызывается функция.
* @param {number} subdivisionId - Id подразделения, для которого производится проверка.
* @returns {boolean} Возвращает значение true, если функция выполнена успешно, или false в противном случае.
* @example
* ```
* Пример 1:
* // Пусть в системе имеется подразделение «IT отдел»
* // Находим программно подразделение «IT отдел» с помощью функции tools.get_doc_by_key
* oSub = tools.get_doc_by_key('subdivision', 'name', 'IT отдел');
* // на экран выводится информация об отобранном подразделении
* alert('Найдено подразделение ' + oSub.TopElem.name + ' с идентификационным номером ' + oSub.DocID);
*
* // Пусть в системе имеется заведующая отделом Жирова Антонина Васильевна
* oCollab1 = tools.get_doc_by_key('collaborator', 'fullname', 'Жирова Антонина Васильевна');
* // на экран выводится информация об отобранном сотруднике
* alert('Найден сотрудник ' + oCollab1.TopElem.fullname + ' с идентификационным номером ' + oCollab1.DocID);
*
* // указание текущего пользователя для корректного выполнения данного примера
* // (на практике обычно текущий пользователь определен в окружении)
* curUserID = oCollab1.DocID;
*
* // Проверяем, является ли Жирова А.В. начальником указанного подразделения?
* bRez = tools.is_boss_by_subdivision_id(oSub.DocID);
* alert (bRez); // ответ - верно
*
* // Пусть в системе имеется сотрудник Васильева Людмила Петровна
* oCollab2 = tools.get_doc_by_key('collaborator', 'fullname', 'Васильева Людмила Петровна');
* // на экран выводится информация об отобранном сотруднике
* alert('Найден сотрудник ' + oCollab2.TopElem.fullname + ' с идентификационным номером ' + oCollab2.DocID);
*
* // указание текущего пользователя для корректного выполнения данного примера
* (на практике обычно текущий пользователь определен в окружении)
* curUserID = oCollab2.DocID;
*
* // Проверяем, является ли Васильева Л.П. начальником указанного подразделения?
* bRez2 = tools.is_boss_by_subdivision_id (oSub.DocID);
* alert (bRez2); // ответ - неверно
*
* Пример 2:
* _eval_str = _eval_str + 'tools.is_boss_by_subdivision_id(' + _condition.cur_parent_object_id + ')';
* ```
*/
function is_boss_by_subdivision_id(subdivisionId: number): boolean;
/**
* Используется для работы в документообороте по заявкам в процедуре оценки.
* Проверяет, занимает ли текущий пользователь указанную должность.
* Проверка производится относительно текущего пользователя
* (Id текущего авторизованного на портале пользователя равно curUserID),
* если этот пользователь определен в окружении, в котором вызывается функция.
* @param {number} positionId - Id должности для которой происходит проверка.
* @returns {boolean} Возвращает значение true, если текущий пользователь занимает указанную должность,
* или false - в противном случае.
* @example
* ```
* // Пусть в системе имеется должность Ведущий специалист
* // Находим программно должность Ведущий специалист с помощью функции tools.get_doc_by_key
* oPos = tools.get_doc_by_key ('position', 'name', 'Ведущий специалист'); // ищем должность по названию
* // на экран выводится информация об отобранной должности
* alert ('Найдена должность ' + oPos.TopElem.name + ' с идентификационным номером ' + oPos.DocID);
* // Пусть в системе имеется сотрудник Васильева Людмила Петровна, которая работает в должности «Ведущий специалист»
* oCollab1 = tools.get_doc_by_key ('collaborator', 'fullname', 'Васильева Людмила Петровна');
* // на экран выводится информация об отобранном сотруднике
* alert ('Найден сотрудник ' + oCollab1.TopElem.fullname + ' с идентификационным номером ' + oCollab1.DocID);
* // указание текущего пользователя для корректного выполнения данного примера
* // (на практике обычно текущий пользователь определен в окружении на портале)
* curUserID = oCollab1.DocID;
* // Проверяем, занимает ли Васильева Л.П. указанную должность
* bRez = tools.is_by_position_id (oPos.DocID);
* alert (bRez); // ответ - верно
* ```
*/
function is_by_position_id(positionId: number): boolean;
/**
* Используется для работы в документообороте по заявкам в процедуре оценки.
* Проверяет, входит ли текущий пользователь в указанную группу.
* Проверка производится относительно текущего пользователя
* (Id текущего авторизованного на портале пользователя равно curUserID),
* если этот пользователь определен в окружении, в котором вызывается функция.
* @param {number} groupId - Id должности для которой происходит проверка.
* @returns {boolean} Возвращает значение true, если текущий пользователь входит в указанную группу,
* или false - в противном случае.
* @example
* ```
* // Пусть в системе имеется группа «Динамическая группа»
* // Находим программно данную группу с помощью функции tools.get_doc_by_key
* // атрибуты групп хранятся в каталоге group; ищем группу по названию
* oGroup = tools.get_doc_by_key ('group', 'name', 'Динамическая группа');
* // на экран выводится информация об отобранной группе
* alert ('Найдена группа ' + oGroup.TopElem.name + ' с идентификационным номером ' + oGroup.DocID);
* // Пусть в системе имеется сотрудник Калинин Михаил Михайлович,
* // который входит в состав группы «Динамическая группа»
* oCollab1 = tools.get_doc_by_key ('collaborator', 'fullname', 'Калинин Михаил Михайлович');
* // на экран выводится информация об отобранном сотруднике
* alert ('Найден сотрудник ' + oCollab1.TopElem.fullname + ' с идентификационным номером ' + oCollab1.DocID);
* // указание текущего пользователя для корректного выполнения данного примера
* // (на практике обычно текущий пользователь определен в окружении на портале)
* curUserID = oCollab1.DocID;
* // Проверяем, входит ли Калинин М.М. в состав указанной группы?
* bRez = tools.is_by_group_id (oGroup.DocID);
* alert (bRez); // ответ - верно
* ```
*/
function is_by_group_id(groupId: number): boolean;
function is_person_func_manager(): boolean;
function is_person_org_func_manager(): boolean;
function is_func_manager(): boolean;
function is_project_manager(): boolean;
function is_statement_date(activityId: number, value: string, usl: string): boolean;
/**
* Функция заполняет поля в приемнике данных на основе значений из объекта источника данных:
* workflow_id,
* object_name,
* object_code,
* object_start_date
* Источник данных это TopElem документа источника данных.
* Приемником может быть элемент любого уровня в xml структуре содержащий нужные поля.
* @param {unknown} type - Строка, содержащая название типа источника объекта.
* @param {XmlTopElem} source - Приемник данных.
* @param {number} objectId - Id документа источника данных.
* @param {XmlTopElem} objectDocument - TopElem источника данных.
* @returns {boolean} True если при заполнении не произошло ошибок, False если заполнение произошло с ошибкой.
* Если в приемнике данных не было полей для заполнения или в источнике данных не было необходимых данных,
* функция вернет да (true).
* @example
* ```
* tools.object_filling("event", curProgram, docEvent.DocID, docEvent.TopElem);
* tools.object_filling(docRequest.TopElem.type, docRequest.TopElem, Int(program_id));
* ```
*/
function object_filling(type: unknown, source: XmlTopElem, objectId: number, objectDocument: XmlTopElem | null | ""): boolean;
/**
* Функция заполняет некоторые поля (дополнительную информацию) в карточке
* объекта-приемника данных на основе значений из объекта-источника данных.
* В качестве источника данных используется TopElem соответствующего документа.
* Приемником может быть элемент любого уровня в xml-структуре, содержащий нужные поля.
* В зависимости от типа источника заполняются разные поля в приемнике.
* Примечание - Функция не предназначена для копирования однотипных объектов.
* Она может быть использована для заполнения некоторого набора стандартных полей объекта
* одного типа