Перейти к содержанию

Модуль взаимодействия с ядром ЛИС: различия между версиями

Материал из Химсофт Вики
Строка 195: Строка 195:
</syntaxhighlight>
</syntaxhighlight>


==Пространство имен Documents==
==Пространство имен <code>Documents</code>==


Пространство имен Documents позволяет работать с документами ЛИС: создавать и экспортировать.
Пространство имен <code>Documents</code> позволяет работать с документами ЛИС: создавать и экспортировать.


===Documents.exportToPdf()===
===<code>Documents.exportToPdf()</code>===
Экспортирует готовый документ в pdf
Экспортирует готовый документ в pdf


param: documentId Идентификатор готового документа (таблица dFormsDOX)
<code>param: documentId</code> Идентификатор готового документа (таблица dFormsDOX)


param: filePath Полный путь к файлу для экспорта (расширение .pdf)
<code>param: filePath</code> Полный путь к файлу для экспорта (расширение .pdf)


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
Строка 210: Строка 210:
</syntaxhighlight>
</syntaxhighlight>


===Documents.exportToPdfAsync()EXP===
===<code>Documents.exportToPdfAsync()EXP</code>===
Асинхронно экспортирует готовый документ в pdf
Асинхронно экспортирует готовый документ в pdf


param: documentId Идентификатор готового документа (таблица dFormsDOX)
<code>param: documentId</code> Идентификатор готового документа (таблица dFormsDOX)


param: filePath Полный путь к файлу для экспорта (расширение .pdf)
<code>param: filePath</code> Полный путь к файлу для экспорта (расширение .pdf)


param: callback Обработчик завершения операции
<code>param: callback</code> Обработчик завершения операции


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
Строка 223: Строка 223:
</syntaxhighlight>
</syntaxhighlight>


===Documents.exportToPdfSecure()===
===<code>Documents.exportToPdfSecure()</code>===
Экспортирует готовый документ в pdf, в качестве пути используя значение из защищенного хранилища ЛИС
Экспортирует готовый документ в pdf, в качестве пути используя значение из защищенного хранилища ЛИС


param: documentId Идентификатор готового документа
<code>param: documentId</code> Идентификатор готового документа


param: pathSecureKey Ключ защищенного хранилища, по которому хранится путь
<code>param: pathSecureKey</code> Ключ защищенного хранилища, по которому хранится путь


param: fileName Имя файла для сохранения (расширение .pdf)
<code>param: fileName</code> Имя файла для сохранения (расширение .pdf)


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
Строка 236: Строка 236:
</syntaxhighlight>
</syntaxhighlight>


===Documents.exportToPdfSecureAsync() EXP===
===<code>Documents.exportToPdfSecureAsync() EXP</code>===
Асинхронно экспортирует готовый документ в pdf, в качестве пути используя значение из защищенного хранилища ЛИС
Асинхронно экспортирует готовый документ в pdf, в качестве пути используя значение из защищенного хранилища ЛИС


param: documentId Идентификатор готового документа
<code>param: documentId</code> Идентификатор готового документа


param: pathSecureKey Ключ защищенного хранилища, по которому хранится путь
<code>param: pathSecureKey</code> Ключ защищенного хранилища, по которому хранится путь


param: fileName Имя файла для сохранения (расширение .pdf)
<code>param: fileName</code> Имя файла для сохранения (расширение .pdf)


param: callback Обработчик завершения операции
<code>param: callback</code> Обработчик завершения операции


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
Строка 251: Строка 251:
</syntaxhighlight>
</syntaxhighlight>


===Documents.exportToXml();===
===<code>Documents.exportToXml()</code>===
Экспортирует готовый документ в файл XML (win1251)
Экспортирует готовый документ в файл XML (win1251)


param: id Идентификатор документа
<code>param: id</code> Идентификатор документа


param: path Путь к сохраняемому файлу
<code>param: path</code> Путь к сохраняемому файлу


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
Строка 262: Строка 262:
</syntaxhighlight>
</syntaxhighlight>


===Documents.extractToXml();===
===<code>Documents.extractToXml()</code>===
Экспортирует готовый документ в строку XML
Экспортирует готовый документ в строку XML


param: id Идентификатор документа
<code>param: id</code> Идентификатор документа


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">

Версия от 04:25, 13 января 2026

Модуль @chemsof/chemic дает доступ к ядру ЛИС из node, по сути являясь оберткой над chemic.dll, обращаясь к его методам через Chemic API. Модуль поделен на пространства имен и классы.

Принятые обозначения в заголовках и оглавлении:

Something(): метод, функция, что-то, что можно вызвать, сигнатура может не совпадать

EXP: Фича с экспериментальной поддержкой

READONLY: свойство только для чтения

Быстрый старт

Установка

Настроить подключение npm-registry из GitLab (для инструкций см. сам репозиторий npm-registry)

После этого для Установка модуля пишем

npm i @chemsoft/chemic

Подключение

Модуль подключается из кода следующим образом:

const chemic = require('@chemsoft/chemic')

Теперь обращаясь к chemic можно взаимодействовать с ядром ЛИС.

Инициализация ядра

Подключение к БД

По умолчанию строка подключения БД считывается из реестра ветки ЛИС (\HKCU\SOFTWARE\НИИ ВН\АРМ «Химик-аналитик»\Connect или аналогичный ключ в HKLM).

Для изменения строки подключение можно передать кастомную через переменную среды CONNECTION_STRING.

Например:

set CONNECTION_STRING=Provider=SQLNCLI11.1;Password=1;User ID=ch_ttg2_barabinsk;Data Source=MSSQL08;Application Name=LISChemic;MARS Connection=True

# Теперь можно запускать скрипт

Пользовательская часть

  • По идентификатору

Передача переменных среды

set LIS_USER_ID=777

# Теперь можно запускать скрипт

Установка значений в глобальном объекте

global.LIS_USER_ID = 777;

const chemic = require("@chemsoft/chemic");
  • По логину и паролю

При инициализации по логину и паролю существует два варианта аутентификации:

  1. Прямой (raw) - в данном случае при аутентификации сверяется только пароль и никакие доп. проверки не осуществляются;
  2. Стандартный (default) - стандартный способ аутентификации, аналогичный входу в ЛИС через обычный лаунчер.

Передача переменных среды

# Вариант аутентификации
set LIS_CREDENTIAL_INITIALIZE_MODE=raw
# set LIS_CREDENTIAL_INITIALIZE_MODE=raw

# Учетные данные
set LIS_USER_LOGIN=test_user
set LIS_USER_PASSWORD=1
# Пароль также может быть пустым или не указан (эквивалент пустому)
# set LIS_USER_PASSWORD=

# Теперь можно запускать скрипт

Установка значений в глобальном объекте

global.LIS_CREDENTIAL_INITIALIZE_MODE = "default";
global.LIS_USER_LOGIN = "test_user_simple";
global.LIS_USER_PASSWORD = ""; // Пустой пароль

const chemic = require("@chemsoft/chemic");

Пространство имен Session

Пространство имен Session дает доступ к текущей сессии пользователя.

Вложенное пространство имен Session.user

Внутри Session.user хранится информация о пользователе текущей сессии

Session.user.name хранит в себе строку с ФИО пользователя

Session.user.id идентификатор пользователя

Session.user.roles.id идентификатор роли пользователя

Session.user.roles.name название роли

Session.user.roles.banned флаг бана роли

Свойство Session.labId

Session.labId идентификатор лаборатории

Пространство имен User

User.hasRole() Проверка на то, имеет ли пользователь указанную роль

param: idOrName Идентификатор или имя роли

param: ignoreBanned Игнорирует при рассмотрении заблокированные роли

return: boolean Возвращает true, если пользователь имеет указанную роль, false - если нет

User.hasRole(idOrName: number | string, ignoreBanned?: boolean): boolean;

Пространство имен SecurityStorage

Пространство имен SecurityStorage дает доступ защищенному хранилищу пользователя. Защищенное хранилище место где пользователь может хранить какую-то чувствительную информацию в словарном представлении (ключ-значение).

SecurityStorage.isPathExist()

Проверка существования файла по пути из защищенного хранилища (ЗХ), также можно задать имя файла, которое добавится к директории из ЗХ

param: pathKey Ключ из ЗХ, по которому хранится полный путь к файлу или директории

param: filename Имя файла (необязательно)

return: boolean Результат проверки существования пути

SecurityStorage.isPathExist(pathKey: string, filename?: string): boolean

SecurityStorage.readFileContent()

Синхронное чтение данных из файла по пути из ЗХ, также можно задать имя файла, которое добавится к директории из ЗХ

param: pathKey Ключ из ЗХ, по которому хранится полный путь к файлу или директории

param: filename Имя файла (необязательно)

return: string | null Содержимое файла

SecurityStorage.readFileContent(pathKey: string, filename?: string): string | null;

SecurityStorage.writeFileContent()

Синхронная запись данных в файл по пути из ЗХ, также можно задать имя файла, которое добавится к директории из ЗХ

param: pathKey Ключ из ЗХ, по которому хранится полный путь к файлу или директории

param: filename Имя файла (может быть null)

param: content Данные для записи в файл

SecurityStorage.writeFileContent(pathKey: string, filename: string | null, content: string): void;

SecurityStorage.copyFile()

Копирование файла по пути из ЗХ

param: srcPath Путь к файлу

param: dstPathKey Ключ из ЗХ, по которому хранится полный путь к директории

SecurityStorage.copyFile(srcPath: string, dstPathKey: string): void;

SecurityStorage.moveFile()

Перемещение файла по пути из ЗХ

param: srcPath Путь к файлу

param: dstPathKey Ключ из ЗХ, по которому хранится полный путь к директории

SecurityStorage.moveFile(srcPath: string, dstPathKey: string): void;

SecurityStorage.getKeyValue()

Получение значение из защищенного хранилища пользователя

param: key Ключ

return: string | null Значение (если есть)

SecurityStorage.getKeyValue(key: string): string | null;

Пространство имен Documents

Пространство имен Documents позволяет работать с документами ЛИС: создавать и экспортировать.

Documents.exportToPdf()

Экспортирует готовый документ в pdf

param: documentId Идентификатор готового документа (таблица dFormsDOX)

param: filePath Полный путь к файлу для экспорта (расширение .pdf)

Documents.exportToPdf(documentId: number, filePath: string): void;

Documents.exportToPdfAsync()EXP

Асинхронно экспортирует готовый документ в pdf

param: documentId Идентификатор готового документа (таблица dFormsDOX)

param: filePath Полный путь к файлу для экспорта (расширение .pdf)

param: callback Обработчик завершения операции

Documents.exportToPdfAsync(documentId: number, filePath: string, callback: (err?: Error) => void): void;

Documents.exportToPdfSecure()

Экспортирует готовый документ в pdf, в качестве пути используя значение из защищенного хранилища ЛИС

param: documentId Идентификатор готового документа

param: pathSecureKey Ключ защищенного хранилища, по которому хранится путь

param: fileName Имя файла для сохранения (расширение .pdf)

Documents.exportToPdfSecure(documentId: number, pathSecureKey: string, fileName: string): void;

Documents.exportToPdfSecureAsync() EXP

Асинхронно экспортирует готовый документ в pdf, в качестве пути используя значение из защищенного хранилища ЛИС

param: documentId Идентификатор готового документа

param: pathSecureKey Ключ защищенного хранилища, по которому хранится путь

param: fileName Имя файла для сохранения (расширение .pdf)

param: callback Обработчик завершения операции

Documents.exportToPdfSecureAsync(documentId: number, pathSecureKey: string, fileName: string, callback: (err?: Error) => void): void;

Documents.exportToXml()

Экспортирует готовый документ в файл XML (win1251)

param: id Идентификатор документа

param: path Путь к сохраняемому файлу

Documents.exportToXml(id: number, path: string): void;

Documents.extractToXml()

Экспортирует готовый документ в строку XML

param: id Идентификатор документа

Documents.extractToXml(id: number): string;

Класс Documents.Generator

Пространоство имен Container

Пространство имен Scheduler

Пространство имен Forms

Пространство имен ProbeDivider

Пространство имен Calculator

Пространство имен Round

Класс Lj

Класс RecordManager

Класс MeasureManager