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

Консольная административная утилита tadmin

Утилита tadmin позволяет автоматизировать многие функции, которые есть в TessaAdmin и SchemeEditor, или некоторые административные функции из TessaClient (такие как пересчёт календаря или настройка файловых хранилищ). По умолчанию утилита лежит в сборке в папке Tools.

Для работы с утилитой необходимо в командной строке открыть папку Tools и выполнить нужную команду.

Note

Для всех параметров команд, описанных ниже, при использовании на Linux системах необходимо символ / заменить на -.

Команды для работы с БД

  • Выполнить скрипт SQL

    Sql [source [source...]] [/cs:configurationString] [/db:databaseName] [/p:FirstParam=1] [/p:SecondParam=2] [/p:NullParam] [/p:EmptyParam=] ... [/q] [/nologo]

    где source - путь к папке с SQL скриптами или к файлу .sql. Каждый файл может разделяться командой GO. Вы можете указать несколько папок или файлов, разделённых пробелами. Если параметр не указан, то текст запроса запрашивается из консоли (может быть перенаправлен из предыдущей консольной команды).

  • Выполнить скрипт SQL со всеми запросами, разделённым GO. Возвращает результат последнего запроса в формате CSV.

    Select [source [source...]] [/cs:configurationString] [/db:databaseName] [/top:rowCount] [/s:separatorChar] [/h] [/text] [/q] [/p:FirstParam=1] [/p:SecondParam=2] [/p:NullParam] [/p:EmptyParam=] ...

    где source - путь к папке с SQL скриптами или к файлу .sql. Каждый файл может разделяться командой GO. Вы можете указать несколько папок или файлов, разделённых пробелами. Если параметр не указан, то текст запроса запрашивается из консоли (может быть перенаправлен из предыдущей консольной команды).

  • Создать базу данных

    CreateDatabase [/cs:configurationString] [/db:databaseName] [/c] [/q] [/nologo]

  • Удалить базу данных

    DropDatabase [/cs:configurationString] [/db:databaseName] [/q] [/nologo]

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • /db - Имя базы данных для использования вместо указанной в строке подключения.

  • /cs - Имя строки подключения в файле app.json для использования вместо строки по умолчанию.

  • /top - Максимальное количество выводимых строк. Укажите 0 или опустите параметр, чтобы не ограничивать выборку.

  • /s - Символ-разделитель для вывода CSV. По умолчанию точка с запятой. Игнорируется, если указан параметр “text”. Вы можете использовать \t для табуляции, или \xxxx (4 шестнадцатиричные цифры) для вывода символа по его коду Unicode.

  • /h - Вывести имена колонок первой строкой при выводе в CSV.

  • /text - Вывести на консоль первое значение в первой возвращённой строке без эскейпинга CSV. Если не указан, то выводятся все колонки и строки.

  • /p - Один или несколько параметров вида “Параметр=Значение” (без кавычек), которые передаются в выполняемый запрос SQL. Если указан только “Параметр”, то в запрос он передаётся со значением NULL.

  • /c - Удалить базу данных, если она уже существует.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Note

Команды Sql и Select при выполнении каждого запроса “пробрасывают” результат этого запроса как параметр @Result в следующий запрос (если результата нет как Result Set, то пробрасывается количество изменённых строк или 0). Также при наличии в последующих командах спецстроки @Result@, она будет заменена на @Result предыдущего запроса (при замене отсутствует защита от SQL-инъекций).

Ниже указан пример для команды Select. Результат скрипта записывается в переменную командного файла %var%:

set var=

for /f "tokens=* usebackq" %%f in (`tadmin.exe Select script.sql /q "/p:A=first value" "/p:B=second value"`) do set var=%%f

echo Result: "%var%"

Скрипт script.sql выглядит как:

SELECT @A + ' + ' + @B

Результат:

Result: "first value + second value"

Команда для проверки доступности БД

  • Проверить доступность базы данных (возвращает сообщение об ошибке и код errorlevel, если СУБД или база данных недоступны). По умолчанию подключение выполняется к БД master/postgres вместо базы, заданной в строке подключения.

    CheckDatabase [/cs:configurationString] [/db:databaseName] [/timeout:seconds] [/dbms] [/c] [/q] [/nologo]

Описание необязательных параметров (указаны в квадратных скобках напротив команды):

  • /cs - Имя строки подключения в файле app.json для использования вместо строки по умолчанию.

  • /db - Имя базы данных для использования вместо базы master/postgres. Пустая строка “-db:” для использования базы, указанной в строке подключения.

  • /timeout - Таймаут соединения в секундах. Укажите отрицательное число, чтобы использовать таймаут из строки подключения в app.json, по умолчанию “-1”. Укажите “0” (без кавычек), чтобы не ограничивать таймаут.

  • /dbms - Вывести текущую используемую СУБД: SqlServer, PostgreSql, Unknown. При этом не выводится логотип.

  • /c - Вывести используемую строку подключения в окно консоли.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль. Если CheckDatabase выполняется с ключами /c или /dbms, то “тихий режим” будет включен автоматически.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Команды для миграции данных

  • Перенести файлы из исходного местоположения в целевое (перенос файлов из MSSQL в файловое хранилище и обратно, а также перенос файлов из одного файлового хранилища в другое).

    MigrateFiles /from:fromSourceID /to:toSourceID [/cs:configurationString] [/db:databaseName] [/p:threadCount] [/c] [/q] [/nocancel] [/nologo]

    где from - идентификатор исходного местоположения файлов (id исходного хранилища файлов, указанное в карточке Настройки сервера),

    to - идентификатор целевого местоположения файлов (id целевого хранилища файлов, указанное в карточке Настройки сервера).

    Note

    При миграции файлов из одного хранилища в другое того же типа (например, из файлового в файловое, или из одной БД в другую БД) необходимо наличие в лицензии модуля поддержки нескольких файловых хранилищ. Если в вашу лицензию не включён данный модуль, то, обратившись к контактному лицу поставщика или на support@syntellect.ru можно запросить временную лицензию для выполнения операции миграции.

  • Перенести данные из таблиц исходной базы данных в целевую пустую базу.

    MigrateDatabase targetCS [/tdb:targetDatabaseName] [/cs:configurationString] [/db:databaseName] [/p:threadCount] [/bulk:bulkSize] [/q] [/nologo]

Описание необязательных параметров (указаны в квадратных скобках напротив команды):

  • targetCS - Имя строки подключения для цели выполняемой миграции в файле app.json.

  • /tdb - Имя базы данных для цели выполняемой миграции для использования вместо указанной в строке подключения.

  • /cs - Имя строки подключения в файле app.json для использования вместо строки по умолчанию.

  • /db - Имя базы данных для использования вместо указанной в строке подключения.

  • /p - Количество одновременных подключений для выполнения операции. Укажите 0, если оно определяется числом процессорных ядер.

  • /c - Контент каждого файла будет удалён из целевого местоположения перед копированием из исходного.

  • /bulk - Количество строк для массовой вставки в базу. Укажите 1 или меньше для построчной вставки.

  • Преобразовать выгруженные файлы конфигурации из старых форматов в новые (или обратно). В параметре source команде указывается имя файла или имя папки, в которой выполняется поиск (вместе с вложенными папками). Файлы рабочих мест .workplace преобразуются в формат .jworkplace, файлы представлений .view - в формат .jview, файлы типов карточек .tct - в формат .jtype, файлы библиотек локализации .tll - в формат .jlocalization. Для типов карточек и библиотек локализации можно использовать параметр /mode:Downgrade, при указании которого производится обратная конвертация. Для файлов представлений и рабочих мест обратная конвертация не поддерживается.

    ConvertConfiguration source [/o:outputFolder] [/nd] [/mode:conversionMode] [/q] [/nologo]

  • /o - Выходная папка для сконвертированых файлов. Если не указано, то используется папка из параметра source. В выходной папке будет воссоздана такая же структура каталогов, как в папке из параметра source.

  • /nd - Не удалять старые файлы после конвертации. Если флаг не указан, и выходная папка отличается от папки из параметра source, то, после выполнения команды, из папки source будут удалены все успешно сконвертированные файлы.

  • /mode - Режим конвертации.

    • Upgrade - Преобразовать файлы рабочих мест, представлений, типов карточек и библиотек локализации до форматов текущей версии платформы.

    • Downgrade - Преобразовать файлы рабочих мест, представлений, типов карточек и библиотек локализации в старые форматы, совместимые с предыдущими версиями платформы.

    • LF - Преобразовать по всем файлам переводы строк в формат LF “\n”, который совместим с Windows и Linux. Это рекомендуемый формат.

    • CRLF - Преобразовать по всем файлам переводы строк в формат CRLF “\r\n”, который совместим с Windows. Используйте для сравнения с объектами, выгруженными в предыдущих версиях платформы из приложений TessaAdmin или посредством команды tadmin на Windows.

    Note

    Типы файлов, поддерживаемые режимами LF и CRLF:

    .cardlib - библиотека карточек в xml

    .jcard - карточка в json

    .json - произвольный текстовый json, например, app.json

    .jlocalization - библиотека локализации в json

    .jtype - тип карточки в json

    .jview - представление в json

    .jworkplace - рабочее место в json

    .jquery - поисковый запрос в json

    .sql - sql-скрипт с процедурой, функцией или миграцией

    .tct - тип карточки в xml

    .tll - библиотека локализации в xml

    .tpf - функция схемы в xml

    .tpm - миграция схемы в xml

    .tpp - процедура схемы в xml

    .tsd - база данных схемы в xml

    .tsp - библиотека схемы в xml

    .tst - таблица схемы в xml

    .txt - текстовые файлы вида readme.txt

    .view - представление в exchange format

    .workplace - рабочее место в exchange format

    .query - поисковый в exchange format

    .xml - текстовый xml

* Преобразовать файлы карточек и файлы библиотек карточек из старых форматов в новые (или обратно). В параметре source команде указывается имя файла или имя папки, в которой выполняется поиск (вместе с вложенными папками). Файлы экземпляров карточек .card будут сконвертированы в формат .jcard, также файлы карточек .jcard будут преобразованы в формат .jcard с поддержкой внешних прикрепленных файлов и файлов внутреннего контента карточек в соответствии с заданными в системе параметрами сериализации внутреннего контента. файлы библиотек карточек .cardlib изменяются таким образом, чтобы ссылаться на файлы карточек с расширением .jcard. Для данной команды можно использовать параметр /mode:Downgrade, при указании которого производится обратная конвертация.

`ConvertCards source [/o:outputFolder] [/a:address] [/u:user] [/p:password] [/nd] [/mode:conversionMode] [/q] [/nologo]`

  • /o - Выходная папка для сконвертированых файлов. Если не указано, то используется папка из параметра source. В выходной папке будет воссоздана такая же структура каталогов, как в папке из параметра source.

  • /a - Адрес сервиса Tessa.

  • /u - Имя пользователя.

  • /p - Пароль.

  • /nd - Не удалять старые файлы после конвертации. Если флаг не указан, и выходная папка отличается от папки из параметра source, то, после выполнения команды, из папки source будут удалены все успешно сконвертированные файлы библиотек карточек, включая опции слияния, указанные в библиотеке, а также все успешно сконвертированные файлы экземпляров карточек, включая подпапки принадлежащие этим карточкам.

  • /mode - Режим конвертации.

    • Upgrade - Преобразовать файлы библиотек карточек и экземпляров карточек до форматов текущей версии платформы.

    • Downgrade - Преобразовать файлы библиотек карточек и экземпляров карточек, в старые форматы, совместимые с предыдущими версиями платформы.

Общие необязательные парамеры для команд миграции данных:

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nocancel - Запретить отмену операции нажатием клавиши [Esc]. Актуально, если не выставлен ключ /q.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Команды для импорта конфигурации

  • Импорт сотрудников

    ImportUsers pathToUserFile [/sd:pathToDepartmentFile] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/cs:configurationString] [/db:databaseName] [/q] [/nologo]

    где pathToUserFile - путь к файлу xlsx (содержащему список сотрудников и подразделений) или csv (содержащему список пользователей).

    pathToDepartmentFile - путь к файлу csv, содержащему список подразделений. Указывается в дополнение к csv файлу со списком сотрудников, необязательный параметр.

    Требования к импортируемым CSV, Excel файлам:

    1. При импорте из Excel обязательна книга, на листах которой находятся данные о сотрудниках и подразделениях, а также их связях. Шаблон xslx файла: ImportUsersSample.xlsx.

      Note

      Лист подразделений может быть пустым, если необходимо импортировать только сотрудников.

      Пример импорта: tadmin ImportUsers ImportUsersSample.xlsx.

    2. При импорте из CSV обязателен файл, содержащий сотрудников. Файл с подразделениями передается при необходимости. Шаблоны файлов для импорта сотрудников и подразделений: ImportUsersSample.csv, ImportDepartmentsSample.csv.

      Пример импорта: tadmin ImportUsers ImportUsersSample.csv /sd:ImportDepartmentsSample.csv.

      Important

      Связывание данных с внешней системой и проверка уникальности производится с помощью поля “Внешний ID”. Если “Внешний ID” не заполнен, то для подразделений производится проверка по названию подразделения, а для сотрудников по логину. Если в какой-то строке списка сотрудников/подразделений не заполнены ни “Внешний ID”, ни логин/название подразделения, то такая строка не будет синхронизирована.

      Если какие-то строки из файлов не были импортированы, данная информация отобразится в консоли и добавится в log.txt с указанием номеров строк.

      При выполнении импорта/синхронизации необходимо учитывать следующие особенности:

      • Обязательные поля отмечены звездочкой в заголовке шаблонного файла. Если какие-то из обязательных полей не будут указаны, то данная строка из файла не будет загружена, о чем в консоль будет выведена соответствующая информация:

        Для подразделения обязательные поля: “№ п/п”, “Родительское подразделение” (если подразделение корневое, то данное поле оставить пустым), “Название организации/подразделения”.

        Для сотрудника: “Фамилия”, “Имя”.

      • Для сотрудников с типом входа “Пользователь Tessa” или “Пользователь Windows” помимо указанных выше обязательных полей должен быть указан логин. Если логин не указать - сотрудник не будет загружен, в консоль выведется данная информация:

      • Логин сотрудника должен быть уникален. Если в файле встретится повторяющийся логин или сотрудник с таким логином уже есть в Tessa, то в консоль будет выведена ошибка:

      • Название подразделение должно быть уникально на одном уровне. Два подразделения с одинаковым именем, но имеющие разные родительские подразделения могут быть загружены, например:

        Однако если два подразделения имеют одинаковое имя и попытаться их загрузить в одно и тоже родительское подразделение (или если у обоих не указать родительского), например:

        Или же, если в Tessa уже есть подразделение с таким же именем и на том же уровне, то в консоль будет выведена соответствующая ошибка:

        При этом все корректные строки из файла будут успешно загружены.

      • Если в файле окажется, что для каких-то из подразделений указаны родительские подразделения таким образом, что они “зациклены”, например:

        В этом случае в консоль выведется соответствующая ошибка:

        При этом все подразделения будут загружены успешно, но для одного из подразделений не пропишется родительское.

      • Временную зону для подразделения или сотрудника можно задать как через “Код зоны”, например “Saratov Standard Time” или “Default”, так и указав смещение в формате (+-H:mm или +-HH:mm), например “+3:00”, или “+03:00”, или -“07:00”. Если указан “Код зоны”, то будет выбрана первая временная зона из справочника временных зон, отсортированного по полю “Идентификатор зоны”, которая содержит в имени искомый текст. Если указано смещение, то будет выбрана первая временная зона из справочника временных зон, отсортированного по полю “Идентификатор зоны”, которая имеет такое же смещение. В обоих случаях, когда указан “Код зоны” или смещение, при установке зоны, для роли будет отключено наследование временной зоны от родителя. Чтобы включить наследование от родителя, то вместо “Кода зоны” или смещения необходимо указать “-1”.

        Если временная зона не задана, то поля с временными зонами не будут импортированы, и у новых карточек они будут заполнены временной зоной “По умолчанию”, а в уже имеющихся карточках - останутся без изменений.

  • Импорт карточек

    ImportCards sources [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/options:mergeOptionsPath] [/e] [/r] [/ignored:ignoredFilesPath] [/q] [/nologo]

    где:

    • sources - Один или несколько путей к папкам с библиотеками карточек или к файлам .cardlib. Если таких файлов нет, то это могут быть пути к папкам с карточками или к файлам .jcard или .card.

    • ignored:ignoredFilesPath - Путь до файла со списком игнорируемых имён файлов. Допустимы использовать маскированные пути. Файлы будут проигнорированы при проверке подпапки с внешним контентом на лишние файлы в процессе импорта карточки.

      Пример содержимого файла с паттернами:

      log.txt validation.txt Publisher.* *.jcard *.card

      Tip

      Если такой файл расположен в подпапке с другими файлами карточки, и не является прикрепленным файлом к карточке, то в список следует включить и его.

      • * - wildcard, обозначает любой символ в любом количестве.

    Important

    При импорте карточек, где есть секции с полями, для которых определены уникальные ключи, следует учитывать следующую информацию.

    При импорте карточек с прикрепленными к ним файлами, следует учитывать логику, описанную здесь.

  • Импорт локализации

    ImportLocalization source [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/c] [/q] [/nologo]

    где source - путь к папке с библиотеками локализации или к файлу .jlocalization или .tll.

  • Импорт схемы через web-сервис.

    ImportScheme source [/include:path [/include:path...]] [/exclude:path [/exclude:path...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/q] [/nologo]

    где source - путь к папке со схемой или к файлу .tsd.

  • Импорт схемы через SQL-соединение

    ImportSchemeSql source [/include:path [/include:path...]] [/exclude:path [/exclude:path...]] [/cs:configurationString] [/db:databaseName] [/q] [/nologo]

    где source - путь к папке со схемой или к файлу .tsd.

    Important

    Импорт схемы через SQL-соединение используется, когда либо схема создаётся впервые (при новой инсталляции на чистую базу), либо изменилась версия схемы (при обновлении на новую сборку платформы, про это обычно написано в пунктах # файла ReleaseNotes.txt, расположенного в папке сборки). Во всех остальных случаях предпочтительнее импортировать схему через веб-сервис.

  • Обновление схемы в базе данных до текущей версии

    SchemeUpdateSql [/cs:configurationString] [/db:databaseName] [/q] [/nologo]

    Important

    Если схема не существует в базе данных, то команда завершается с ошибкой. Если версия схемы уже обновлена, то команда завершается успешно, как и после обновления схемы. Выполните эту команду при переходе на версию платформы, в которой отличается версия схемы данных, чтобы схема была доступна до того, как она будет импортирована командой ImportSchemeSql (которая также выполнит обновление схемы данных, если это требуется). Текущая схема в базе данных может использоваться в скриптах, таких как tadmin Script ConvertBson, которые выполняют миграцию данных, причём эти данные могут быть удалены при импорте схемы.

  • Импорт типов (типов карточек, файлов, заданий и диалогов)

    ImportTypes source [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/c] [/q] [/nologo]

    где source - путь к папке с типами или к файлу .jtype или .tct.

  • Импорт представлений

    ImportViews source [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/c] [/r] [/q] [/nologo]

    где source - выбранная папка.

  • Импорт рабочих мест

    ImportWorkplaces source [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/c] [/r] [/v] [/s] [/q] [/nologo]

    где source - выбранная папка.

  • Импорт поисковых запросов

    ImportSearchQueries source [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/q] [/nologo]

    где source - выбранная папка.

Note

В параметре source можно также задавать маскированные пути к файлам, например Types/Cards/Kr*.jtype импортирует типы карточек (файлы с расширением .jtype), которые начинаются с букв “Kr”. Маски задаются символами * и ? таким же образом, как и для других команд в командной строке Windows.

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • /a - Адрес сервиса Tessa.

  • /i - Имя экземпляра сервера. Зарезервировано для будущих нужд, не рекомендуется использовать.

  • /u - Имя пользователя.

  • /p - Пароль.

  • /c - Удалять существующие записи перед импортом (кроме команд ImportCards и ImportSearchQueries, для которых ключ отсутствует).

  • /e - Игнорировать существующие записи перед импортом, не выдавая для них сообщений об ошибках. Игнорируется при использовании совместно с ключом /c.

  • /r - Для команды ImportCards: не отображать предупреждения об исправлении структуры для успешно импортированных карточек.

  • /r - Для команд ImportViews и ImportWorkplaces: заменить разрешения в базе данных.

  • /include - Дополнительные библиотеки, включаемые в схему. Если указана папка, то в ней выполняется рекурсивный поиск на файлы библиотек. Путь может быть относителен к основной папке со схемой.

  • /exclude - Библиотеки, исключаемые из схемы. Исключение выполняется после включения дополнительных библиотек. Если указана папка, то в ней выполняется рекурсивный поиск на файлы библиотек. Путь может быть относителен к основной папке со схемой.

  • /options - Путь до файла с опциями слияния, которые используются при импорте карточек, уже существующих в базе данных. Если файл не указан, то по умолчанию используется файл merge-options.json, если он существует в подпапке с именем файла (без расширения) для импортируемой карточки.

  • /ignored - Путь до файла со списком паттернов игнорируемых файлов.

  • /v - Импортировать внедрённые в рабочие места файлы представлений.

  • /s - Импортировать внедрённые в рабочие места файлы поисковых запросов.

  • /cs - Имя строки подключения в файле app.json для использования вместо строки по умолчанию.

  • /db - Имя базы данных для использования вместо указанной в строке подключения.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Команды для экспорта конфигурации

  • Экспорт карточек

    ExportCards [identifiers [identifiers...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/s:separatorChar] [/o:outputFolder] [/l:libraryFilePath] [/localize:culture] [/overwrite] [/mapping:mappingFilePath] [/b] [/q] [/nologo]

    где:

    • l:libraryFilePath - Путь к файлу библиотеки карточек, в который будут добавлены экспортируемые карточки в порядке экспорта. Если файл не существует, то он создаётся.

    • identifiers - Идентификаторы карточек, разделённые пробелами, запятыми или точками с запятой. Если не указано, то идентификаторы читаются из стандартного ввода консоли, где идентификаторы разделяются переводом строки. Имя карточки опционально указывается после разделителя колонок (точка с запятой по умолчанию). Чтобы выбрать карточки, полученные из SQL-скрипта, вы можете перенаправить вывод команды tadmin Select.

    • overwrite - Флаг, который в случае, когда экспорт перезаписвает уже существующую карточку на диске, определяет, перезаписать ли некоторые значения или сохранить такими, как в существующем файле. Соответствует параметру overwriteModifiedValues при вызове API экспорта карточек.

    • mapping:mappingFilePath - С помощью данного параметра можно указать путь к файлу, содержащему маппинги путей внутри карточек для выгрузки контента, находящегося по этим путям во внешние файлы.

      Файл с маппингами имеет следущую структуру:

      [ { "StoragePath": "Sections.SectionName.Fields.Script", "FileName": "Script.cs" }, { "StoragePath": "Sections.SectionName.Rows[0].SqlText", "FileName": "SqlText.sql", "IDKeyForHash": "RowID" }, ... ]

      • StoragePath - Путь внутри карточки, по которому лежит контент или ссылка на контент.

      • FileName - Имя внешнего ресурса с контентом.

      • IDKeyForHash - Признак того, что при добавлении хеша к имени внешнего выгружаемого файла необходимо учитывать значение поля с данным ключем, например идентификатор “RowID”.

    Important

    При экспорте карточек в формате jcard с перезаписью существующего файла подпапка с именем файла также перезаписывается. Если в подпапке не должно быть файлов, то она удаляется.

    Если же карточка экспортируется в папку без файла .jcard, то при наличии подпапки с именем файла экспорт завершается с ошибкой.

  • Экспорт локализации

    ExportLocalization [name [name...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/o:outputFolder] [/c] [/q] [/nologo]

    где name - имена библиотек для экспорта. Если не указаны, то экспортируются все библиотеки.

  • Экспорт схемы через web-сервис.

    ExportScheme [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/o:outputFolder] [/q] [/nologo]

  • Экспорт схемы через SQL-соединение

    ExportSchemeSql [/cs:configurationString] [/db:databaseName] [/o:outputFolder] [/u] [/q] [/nologo]

    Important

    Экспорт схемы через SQL-соединение используется, когда либо веб-сервис недоступен или не работоспособен, либо изменилась версия схемы (при обновлении на новую сборку платформы, про это обычно написано в пунктах # файла ReleaseNotes.txt, расположенного в папке сборки). Во всех остальных случаях предпочтительнее экспортировать схему через веб-сервис.

  • Экспорт типов (типов карточек, файлов и заданий)

    ExportTypes [nameOrIdentifier [nameOrIdentifier...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/o:outputFolder] [/c] [/s] [/t:instanceType] [/q] [/nologo]

    где nameOrIdentifier - имена или идентификаторы типов для экспорта. Если не указаны, то экспортируются все типы.

  • Экспорт представлений

    ExportViews [aliasOrIdentifier [aliasOrIdentifier...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/o:outputFolder] [/c] [/q] [/nologo]

    где aliasOrIdentifier - алиасы или идентификаторы представлений для экспорта. Если не указаны, то экспортируются все представления.

  • Экспорт рабочих мест

    ExportWorkplaces [nameOrIdentifier [nameOrIdentifier...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/o:outputFolder] [/c] [/v] [/s] [/q] [/nologo]

    где nameOrIdentifier - имена или идентификаторы рабочих мест для экспорта (имена здесь - это имена файлов по умолчанию без расширений). Если не указаны, то экспортируются все рабочие места.

  • Экспорт поисковых запросов

    ExportSearchQueries [nameOrIdentifier [nameOrIdentifier...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/o:outputFolder] [/public] [/c] [/q] [/nologo]

    где nameOrIdentifier - имена или идентификаторы поисковых запросов для экспорта. Если не указаны, то экспортируются все доступные пользователю поисковые запросы.

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • /a - Адрес сервиса Tessa.

  • /i - Имя экземпляра сервера. Зарезервировано для будущих нужд, не рекомендуется использовать.

  • /u - Имя пользователя.

  • /p - Пароль.

  • /c - Удалить существующие файлы с соответствующими расширениями из выходной папки перед экспортом.

  • /o - Для команды ExportCards: Выходная папка для файлов экспортированных карточек. Если не указано, то используется текущая папка. Задаётся относительно пути к библиотеке карточек, если этот путь указан.

  • /o - Для других команд: Выходная папка для файлов с экспортированными объектами. Если не указано, то используется текущая папка.

  • /s - Для команды ExportCards: Разделитель колонок при чтении информации по карточкам из CSV (т.е. из стандартного ввода).

  • /s - Для команды ExportTypes: Каждый тип размещается в подпапке “Cards”, “Files” или “Tasks” на основании его типа экземпляра.

  • /s - Для команды ExportWorkplaces: Включить зависимые поисковые запросы в файл рабочего места.

  • /public - Для команды ExportSearchQueries: Включить только общие поисковые запросы.

  • /v - Включить зависимые представления в файл рабочего места.

  • /t - Экспортируются только типы с заданным типом экземпляра: Card (карточка), File (файл) или Task (задание).

  • /l - Путь к файлу библиотеки карточки .cardlib, который будет создан или дополнен. Расширение файла дописывается, если отсутствует. Если также указан параметр -o, то он создаёт подпапку внутри папки с библиотекой.

  • /localize - Имя языка для локализации названий карточек, например, “en”, “ru” и т.д. (без кавычек).

  • /b - Использовать бинарный формат .card вместо текстового .jcard (по умолчанию).

  • /cs - Имя строки подключения в файле app.json для использования вместо строки по умолчанию.

  • /db - Имя базы данных для использования вместо указанной в строке подключения.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Команда для изменения параметров сотрудника

  • Изменить параметры сотрудника

    User user [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/account:newAccount] [/login:newLogin] [/password:newPassword] [/ldap] [/nologin] [/q] [/nologo]

    где user - Идентификатор сотрудника или часть его краткого имени (с начала). Укажите имя так, чтобы оно соответствовало единственному сотруднику.

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • /a - Адрес сервиса Tessa.

  • /i - Имя экземпляра сервера. Зарезервировано для будущих нужд, не рекомендуется использовать.

  • /u - Имя пользователя.

  • /p - Пароль.

  • /account - Установить аутентификацию Windows с указанным именем аккаунта, например, ДОМЕН\АккаунтСотрудника.

  • /login - Установить аутентификацию Tessa с указанным логином. Вы также должны указать пароль.

  • /password - Установить аутентификацию Tessa с указанным паролем. Вы также должны указать логин.

  • /ldap - Указать аутентификацию LDAP вместо Windows.

  • /nologin - Запретить вход сотрудника в систему.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Команда для публикации приложения посредством его упаковки в карточку .jcard

  • Создаёт файл .jcard или .card для заданного desktop-приложения. Импортируйте такую карточку командой ImportCards для публикации.

    PackageApp executable [/out:jcardFile] [/ico:icon] [/a:alias] [/n:name] [/g:group] [/v:version] [/admin] [/64bit] [/api2] [/b] [/q] [/nologo]

    где executable - Путь к файлу .dll для приложений .NET Core/.NET 5+ (сборка платформы 3.5.0 или старше, например, TessaClient.dll) или .exe для приложения .NET Framework (например, MyCustomApp.exe).

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • /out - Путь к генерируемому файлу .jcard. По умолчанию в текущей папке создаётся файл с именем <алиас>.jcard. Если указана существующая папка, то в ней создаётся файл <алиас>.jcard.

  • /ico - Путь к файлу .ico с иконкой приложения. По умолчанию выполняется поиск файла с именем запускаемого приложения, например, TessaClient.ico. Если файл не найден или некорректный, то публикация выполняется без иконки.

  • /a - Алиас, используемый вместо алиаса по умолчанию. Укажите, только если требуется опубликовать с нестандартным алиасом.

  • /n - Отображаемое имя, используемое вместо имени по умолчанию. Укажите, только если требуется опубликовать с нестандартным именем.

  • /g - Группа приложения. Пустая, если параметр не указан.

  • /v - Версия приложения. Пустая, если используется действительная версия исполняемого файла. Если утилита не может определить версию файла, то используется текущая версия платформы.

  • /admin - Опубликовать только для администраторов. Например, используйте параметр для TessaAdmin.

  • /64bit - Приложение использует 64-битную архитектуру. Если ключ указан, то приложение нельзя запустить на 32-битных ОС.

  • /api2 - Приложение использует новый API для взаимодействия с менеджером приложений. Рекомендуется для desktop-приложений TESSA, начиная со сборки 3.5.0.

  • /b - Создать карточку приложения в бинарном формате .card. Если не указано, то используется текстовый формат .jcard.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Команда для публикации приложения Web посредством его упаковки в карточку .jcard

  • Создаёт файл .jcard или .card для заданного desktop-приложения. Импортируйте такую карточку командой ImportCards для публикации.

    PackageWebApp executable [/out:jcardFile] [/n:name] [/d:description] [/lang:languageCode] [/os:operatingSystem] [/64bit] [/b] [/q] [/nologo]

    где executable - Путь к запускаемому файлу для приложения.

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • /out - Путь к генерируемому файлу .jcard. По умолчанию в текущей папке создаётся файл с именем <имя>.jcard. Если указана существующая папка, то в ней создаётся файл <имя>.jcard.

  • /n - Локализуемое имя приложения и архитектура, отображаемые пользователю, например: “Windows x64”, “macOS” и др. (без кавычек). Если не указано, то используется имя запускаемого приложения.

  • /d - Локализуемое описание приложения, отображается пользователю. Заменяет специальные символы \r \n \t

  • /lang - Код языка, например: “en”, “ru” (без кавычек). Приложение считается многоязычным, если язык не указан. Если вы используете язык, отличный от встроенных (“en” или “ru”), то также укажите идентификатор и название, разделённые запятыми, т.е.: “de,3,Deutsch” (без кавычек; такая же строка должна присутствовать в таблице Languages).

  • /os - Имя операционной системы, например: “Windows”, “Linux”, “macOS” (без кавычек).

  • /64bit - Приложение использует 64-битную архитектуру. Если ключ указан, то приложение нельзя запустить на 32-битных ОС.

  • /b - Создать карточку приложения в бинарном формате .card. Если не указано, то используется текстовый формат .jcard.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Команды для преобразования схемы данных

  • Компактифицирует схему данных в единственный .tsd-файл

    SchemeCompact source [/include:path [/include:path...]] [/exclude:path [/exclude:path...]] [/out:target] [/q] [/nologo]

    где source - путь к папке со схемой или к файлу .tsd.

  • Сравнить две схемы данных в указанных файлах

    SchemeDiff /a:sourceA /b:sourceB [/a-include:path [/a-include:path...]] [/a-exclude:path [/a-exclude:path...]] [/b-include:path [/b-include:path...]] [/b-exclude:path [/b-exclude:path...]] [/q] [/nologo]

    где sourceA - путь к первой папке со схемой или к файлу .tsd, для которой выполняется сравнение;

    sourceB - путь ко второй папке со схемой или к файлу .tsd, для которой выполняется сравнение.

    Объекты схемы, присутствующие в sourceB, но отсутствующие в sourceA, отмечаются зелёным как добавленные, а присутствующие в sourceA, но отсутствующие в sourceB отмечаются красным как удалённые. Изменённые объекты отмечаются жёлтым цветом.

  • Генерирует SQL-скрипт для создания объектов SQL по схеме для новой БД

    SchemeScript source [/include:path [/include:path...]] [/exclude:path [/exclude:path...]] [/out:target] [/dbms:databaseManagementSystem] [/dbmsv:databaseManagementSystemVersion] [/notran] [/q] [/nologo]

    где source - путь к папке со схемой или к файлу .tsd.

  • Генерирует шаблон SQL-скрипта для переименования строковых колонок с учётом дублирования в ссылочных связях

    SchemeRename source /t:tableName /c:columnName [/include:path [/include:path...]] [/exclude:path [/exclude:path...]] [/out:target] [/dbms:databaseManagementSystem] [/q] [/nologo]

    где source - путь к папке со схемой или к файлу .tsd;

    tableName - имя таблицы, в колонке которой изменяется строка;

    columnName - имя строковой колонки, которая изменяется.

  • Обновляет версию схемы данных для схемы в указанной файловой папке

    SchemeUpdate source [/include:path [/include:path...]] [/exclude:path [/exclude:path...]] [/q] [/nologo]

    где source - путь к папке со схемой или к файлу .tsd.

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • /include - Дополнительные библиотеки, включаемые в схему. Если указана папка, то в ней выполняется рекурсивный поиск на файлы библиотек. Путь может быть относителен к основной папке со схемой.

  • /exclude - Библиотеки, исключаемые из схемы. Исключение выполняется после включения дополнительных библиотек. Если указана папка, то в ней выполняется рекурсивный поиск на файлы библиотек. Путь может быть относителен к основной папке со схемой.

  • /out - Файл, в который выводится содержимое схемы/содержимое SQL-скрипта. Если не указан, то выполняется стандартный вывод, по умолчанию это окно консоли.

  • /dbms - СУБД, для которой выполняется генерация. Варианты: SqlServer (по умолчанию), или PostgreSql.

  • /dbmsv - номер версии СУБД, для которой генерируется скрипт. Варианты: 11.0 (SQL Server 2012), 12.0 (SQL Server 2014), 13.0 (SQL Server 2016), 14.0 (SQL Server 2017), 15.0 (SQL Server 2019). Для PostgreSQL данный параметр не используется.

  • /notran - Не генерировать SQL-транзакции в скрипте. По умолчанию такие транзакции позволяют создать объекты схемы (таблицы, хранимые процедуры и др.) в несколько шагов, причём после каждого шага схема переходит в консистентное состояние, для которого возможно продолжить обновление.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Пример

Example

Сгенерируем шаблон скрипта, выполняющего переименование роли во всех местах её использования. Далее в этом скрипте требуется вручную указать роли и новые имена для этих ролей, после чего скрипт выполняется на БД и переименует все заданные роли во всех связанных таблицах для переданной схемы.

tadmin SchemeRename /t:Roles /c:Name /out:RenameRole.sql

Команды изменения ключ подписи для токена безопасности и ключа шифрования

  • Генерирует ключ указанного типа и возвращает её на стандартный вывод.

    GetKey key

Ключ выводится в стандартный вывод, по умолчанию это окно консоли.

  • Обновляет ключ указанного типа в каждом файле app.json, найденном в папке с сервисами.

    SetKey key /path:folderOrFile [/value:value] [/q] [/nologo]

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • key - Тип ключа. Возможные значения:

    • Cipher - Ключ для шифрования информации в базе данных, в т.ч. закрытые ключи для шифрования локальных файлов пользователя.

    • Signature - Подпись для токенов сессий и разрешений.

  • /path - Папка, в которой выполняется поиск файлов app.json для замены ключей, или путь к файлу. Укажите “.” (без кавычек) для замены в файле app.json в текущей папке.

  • /value - Ключ, который требуется обновить. По умолчанию ключ считывается из стандартного ввода.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Пример: генерация и замена ключа подписи для конфигурационных файлов в папке C:\inetpub\wwwroot\tessa. При этом команда GetKey передаёт сгенерированный токен в стандартный вывод, который затем перенаправляется в стандартный ввод команды SetKey.

tadmin GetKey Signature|tadmin SetKey Signature "/path:C:\inetpub\wwwroot\tessa"

Команда для работы с временными зонами

  • Изменение настроек временных зон

    TimeZone operation [operation] [/id:zoneID] [/offset:minutes] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/q] [/nologo]

    где operation - название выполняемой операции. Операция может быть указана одна, или сразу несколько подряд.

    Доступные виды операций:

    • Update- установить смещение, указанное в параметре /offset для временной зоны с идентификатором /id.

    • GenerateFromSystem - заполнить справочник временных зон из операционной системы.

    • SetDefaultForAllRoles - установить временную зону по умолчанию для всех ролей, для которых применимо её указание.

    • UpdateInheritance - исправить наследование временных зон в подразделениях, статических ролях и сотрудниках.

    • UpdateOffsets - исправить смещения временных зон в ролях. Используйте, если для зоны в справочнике было изменено смещение.

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • operation - дополнительная операция (или несколько, через пробел), если необходимо одновременно выполнить более одной операции. Описание доступных операций выше.

  • /id - Идентификатор временной зоны.

  • /offset - Смещение временной зоны, которое необходимо установить.

  • /a - Адрес сервиса Tessa.

  • /i - Имя экземпляра сервера. Зарезервировано для будущих нужд, не рекомендуется использовать.

  • /u - Имя пользователя.

  • /p - Пароль.

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Команды для прочих административных функций

  • Пересчёт бизнес-календаря.

    RebuildCalendar [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/q] [/nologo]

  • Изменить файловые местоположения.

    FileSource id [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/f:fileLocation] [/db:databaseLocation] [/n:name] [/ext:fileExtensions] [/c] [/default] [/legacy] [/q] [/nologo]

    где id - числовой идентификатор местоположения.

  • Увеличить версию конфигурации на сервере. Это приводит к сбросу клиентских кэшей конфигурации.

    IncrementVersion [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/q] [/nologo]

  • Вывести имя сборки для текущей версии утилиты на стандартный вывод.

    BuildVersion [/full]

  • Проверка доступности веб-сервиса (возвращает сообщение об ошибке и код errorlevel, если веб-сервис недоступен)

    CheckService [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/q] [/nologo]

  • Проверка функционирования веб-сервиса. Возвращает строку, полученную при выполнении запроса к адресу веб-сервиса /check или /hcheck.

    Check [address] [/h] [/timeout:seconds] [/i:instanceName] [/q] [/nologo]

    • address - базовый адрес веб-сервиса (если не указан - используется настройка BaseAddress из app.json).
    • /h - Определяет, что выполняется запрос по адресу /hcheck для быстрой проверки доступности сервиса. Если параметр не указан, то выполняет запрос по адресу /check для полной проверки (может быть отключён для production сервера).
    • /timeout - Таймаут соединения в секундах. Укажите отрицательное число, чтобы использовать таймаут из строки подключения в app.json, по умолчанию -1. Укажите 0, чтобы не ограничивать таймаут.
  • Создать одну или несколько карточек по шаблону из файла .jcard или .card.

    CreateFromTemplate source [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/n:count] [/r] [/q] [/nologo]

    где source - путь к файлу или к папке с файлами (для каждого из которых выполняется создание по шаблону). Может выполняться от имени любой учетки, если у нее есть права на создание соответствущих объектов системы.

  • Удалить карточки (без перемещения в корзину).

    DeleteCards [identifier [identifier...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/s:separatorChar] [/c] [/q] [/nologo]

    где identifier - идентификаторы карточек, разделённые пробелами, запятыми или точками с запятой. Если не указано, то идентификаторы читаются из стандартного ввода консоли, где идентификаторы разделяются переводом строки. Имя карточки опционально указывается после разделителя колонок (точка с запятой по умолчанию). Чтобы выбрать карточки, полученные из SQL-скрипта, вы можете перенаправить вывод команды tadmin Select.

  • Сбросить кэши со стороны веб-сервиса.

    InvalidateCache [cacheName [cacheName...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/q] [/nologo]

    где cacheName - имена кэшей для сброса. Если не указаны, то сбрасываются все доступные кэши.

    Имена кэшей, предусмотренных в платформе и в типовом решении:

    1. CardMetadata - кэш метаинформации карточек Tessa.Cards.Metadata.CardMetadataCache.

    2. Cards - кэш карточек Tessa.Cards.Caching.CardGlobalCache.

    3. KrProcess - кэш для данных из карточек шаблонов этапов Tessa.Extensions.Default.Server.Workflow.KrCompilers.IKrProcessCache.

    4. KrTypes - кэш настроек типов карточек и документов в типовом решении Tessa.Extensions.Default.Shared.Workflow.KrProcess.IKrTypesCache.

    5. KrVirtualFiles - кэш настроек виртуальных файлов Tessa.Extensions.Default.Server.Files.VirtualFiles.Compilation.IKrVirtualFileCache.

    6. Localization - кэш локализации Tessa.Localization.LocalizationCache.

    7. Scheme - кэш схемы данных Tessa.Scheme.SchemeDatabaseCache.

    8. Settings - кэш пользовательских настроек Tessa.Platform.Settings.ISettingsProvider.

    9. ServerSecurityProvider - кэш настроек безопасности для сервера Tessa.Platform.Runtime.IServerSecurityProvider.

    10. ViewAccess - кэш прав доступа к представлениям Tessa.Views.ViewAccessCache.

    11. Views - кэш метаинформации представлений Tessa.Views.ViewsCache.

    12. Workplaces - кэш метаинформации рабочих мест Tessa.Views.Workplaces.WorkplacesCache.

  • Управление ролями в части замещений и пересчёта ролей.

    ManageRoles [command [command]] [/id:identifiers] [/bulk:bulkSize] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/q] [/nologo]

    где command - команды, выполняемые для ролей. Обязательно должна быть указана хотя бы одна команда.

    Доступны следующие команды:

    1. SyncAllDeputies - пересчёт замещений для всех ролей, кроме динамических ролей и метаролей.

    2. RecalcAllDynamicRoles - пересчёт всех динамических ролей.

    3. RecalcAllRoleGenerators - пересчёт метаролей для всех генераторов метаролей.

    4. RecalcDynamicRoles - пересчёт указанных динамических ролей. Идентификаторы ролей должны быть указаны в параметре /id или в стандартном вводе.

    5. RecalcRoleGenerators - пересчёт метаролей для указанных генераторов метаролей. Идентификаторы генераторов метаролей должны быть указаны в параметре /id или в стандартном вводе.

  • Выполнить скрипты .NET с указанными именами. Выполнение останавливается на первом скрипте, который вернул отрицательный код ошибки. Выводит список всех скриптов, если ни один не указан.

    Script [scriptName [scriptName...]] [/a:address] [/i:instanceName] [/u:userName] [/p:password] [/cs:configurationString] [/db:databaseName] [/pp:FirstParam=1] [/pp:SecondParam=2] [/pp:NullParam] [/pp:EmptyParam=] ... [/help] [/q] [/nologo]

    где scriptName - имена скриптов для выполнения, найденные в сборках расширений в классах с атрибутом [ConsoleScript]. Скрипты выполняются в указанном порядке. Если один из скриптов отсутствует, то команда завершается ошибкой до того, как один из скриптов начинает своё выполнение. Если не указаны скрипты, то список всех скриптов выводится на консоль.

    /pp - Один или несколько параметров вида “Параметр=Значение” (без кавычек), которые передаются в выполняемый скрипт. Если указан только “Параметр”, то в скрипт он передаётся со значением null.

    /help - Выводит справку по указанной команде. Также можно вызвать -help или --help.

    В типовом решении доступны следующие скрипты:

    1. CheckFullTextSearchSupport - проверяет, включён ли компонент полнотекстового поиска для базы данных. Возвращает код ошибки 0, если компонент включён, или ненулевой код, если он отключён или возникла другая ошибка.

      1. Например: tadmin Script CheckFullTextSearchSupport.
    2. ConvertBson - конвертирует бинарные колонки с bson-сериализацией в текстовые колонки с json-сериализацией. К моменту выполнения схема данных должна быть обновлена до текущей для tadmin версии. Используйте команду tadmin SchemeUpdateSql для обновления схемы.

      1. Например: tadmin Script ConvertBson -pp:from=Operations.Request,Response -pp:to=OperationsJson.Request,Response [-pp:key=RowID,ID] [-pp:nowarn].

      2. Параметр from указывает таблицу и одну или несколько бинарных колонок с bson-данными (в схеме тип Binary). Таблица должна присутствовать в схеме данных.

      3. Параметр to указывает таблицу и одну или несколько текстовых json-колонок (в схеме тип String, AnsiString, Json или BinaryJson) в том же порядке, как в параметре from. Таблица может отсутствовать в схеме данных, например, если это таблица, добавленная в миграции.

      4. Параметр key необязателен, если он указан - используются указанные колонки в качестве первичного ключа для поиска строки в обеих таблицах. Если параметр не указан, то используются колонки из первичного ключа в таблице from.

      5. Параметр nowarn блокирует вывод в консоль предупреждений о том, что в целевой таблице не найдена строка из исходной таблицы.

    3. ConvertSearchQueries - конвертирует метаинформацию по поисковым запросам из формата exchange в формат типизированного json.

      1. Например: tadmin Script ConvertSearchQueries -pp:from=_SearchQueries -pp:to=_SearchQueriesTo [-pp:nowarn].

      2. Параметр from указывает таблицу, которая по структуре аналогична SearchQueries и содержит колонку с метаинформацией “MetadataLegacy” в формате exchange.

      3. Параметр to указывает таблицу, которая по структуре аналогична SearchQueries и содержит колонку с метаинформацией “Metadata” в формате типизированного json, которую надо заполнить.

      4. Параметр nowarn блокирует вывод в консоль предупреждений о том, что в целевой таблице не найдена строка из исходной таблицы.

    4. ConvertTypes - конвертирует метаинформацию по типам (карточек, файлов, заданий) из формата xml в формат типизированного json.

      1. Например: tadmin Script ConvertTypes -pp:from=_Types -pp:to=_TypesTo [-pp:nowarn].

      2. Параметр from указывает таблицу, которая по структуре аналогична Types и содержит колонку “Definition” с метаинформацией в формате xml.

      3. Параметр to указывает таблицу, которая по структуре аналогична SearchQueries и содержит колонку “Metadata” с метаинформацией в формате типизированного json, которую надо заполнить.

      4. Параметр nowarn блокирует вывод в консоль предупреждений о том, что в целевой таблице не найдена строка из исходной таблицы.

    5. ConvertWorkplaces - конвертирует метаинформацию по рабочим местам из формата exchange в формат типизированного json.

      1. Например: tadmin Script ConvertWorkplaces -pp:from=_Workplaces -pp:to=_WorkplacesTo [-pp:nowarn].

      2. Параметр from указывает таблицу, которая по структуре аналогична Workplaces и содержит колонку с метаинформацией “MetadataLegacy” в формате exchange.

      3. Параметр to указывает таблицу, которая по структуре аналогична Workplaces и содержит колонку с метаинформацией “Metadata” в формате типизированного json, которую надо заполнить.

      4. Параметр nowarn блокирует вывод в консоль предупреждений о том, что в целевой таблице не найдена строка из исходной таблицы.

    6. ConvertWorkplaceSettings - конвертирует настройки рабочих мест из формата exchange в формат типизированного json.

      1. Например: tadmin Script ConvertWorkplaceSettings -pp:from=_PersonalRoleSatellite -pp:to=_PersonalRoleSatelliteTo [-pp:nowarn].

      2. Параметр from указывает таблицу, которая по структуре аналогична PersonalRoleSatellite и содержит настройками рабочих мест “WorkplaceExtensionsLegacy” в формате exchange.

      3. Параметр to указывает таблицу, которая по структуре аналогична PersonalRoleSatellite и содержит настройками рабочих мест “WorkplaceExtensions” в формате типизированного json, которую надо заполнить.

      4. Параметр nowarn блокирует вывод в консоль предупреждений о том, что в целевой таблице не найдена строка из исходной таблицы.

    7. FillPlainText - заполняет колонку с простым текстом из html-текста сообщения в форумах. Позволяет организовать таким образом полнотекстовый поиск по сообщениям.

      1. Например: tadmin Script FillPlainText -pp:from=FmMessages -pp:to=FmMessages [-pp:nowarn].

      2. Параметр from указывает таблицу, которая по структуре аналогична FmMessages и содержит колонку с текстом сообщения в формате html.

      3. Параметр to указывает таблицу, которая по структуре аналогична FmMessages и содержит колонку с простым текстом, которую надо заполнить. Колонка далее может использоваться для полнотекстового поиска по сообщениям.

      4. Параметр nowarn блокирует вывод в консоль предупреждений о том, что в целевой таблице не найдена строка из исходной таблицы.

Описание необязательных параметров (указаны в квадратных скобках напротив команд):

  • /a - Адрес сервиса Tessa.

  • /i - Имя экземпляра сервера. Зарезервировано для будущих нужд, не рекомендуется использовать.

  • /u - Имя пользователя.

  • /p - Пароль.

  • /f - Полный путь к файловой папке.

  • /db - Имя строки подключения с базой данных для хранения файлов.

  • /n - Имя местоположения. Не указывайте для задания имени по умолчанию или для того, чтобы оставить текущее имя.

  • /ext - Расширения файлов для сохранения в местоположении. Если необходимо указать несколько значений, то указываем их через пробел, взяв строку в кавычки, например "/ext:doc docx xls xlsx".

  • /c - Для команды FileSource: Удалить местоположение или удалить другие местоположения, кроме выбранного, когда используется совместно с /f или /db.

  • /c - Для команды DeleteCards: Не отображать ошибки о том, что карточки уже удалены перед выполнением действия.

  • /s - Разделитель колонок при чтении информации по карточкам из CSV (т.е. из стандартного ввода).

  • /n - Для команды CreateFromTemplate: количество карточек, создаваемых по каждому из файлов с шаблонами (по умолчанию - 1).

  • /r - Для команды CreateFromTemplate: не отображать предупреждения об исправлении структуры для успешно импортированных карточек.

  • /id - Для команды ManageRoles: идентификаторы ролей или генераторов метаролей, разделённые запятыми или точками с запятой. Если не указано, то идентификаторы читаются из стандартного ввода консоли, где идентификаторы разделяются переводом строки. Чтобы выбрать идентификаторы, полученные из SQL-скрипта, вы можете перенаправить вывод команды tadmin Select.

  • /bulk - Для команды ManageRoles: количество записей замещения, загружаемых при каждой итерации синхронизации заместителей. Укажите -1, чтобы загружать все записи замещения одновременно (по умолчанию 500000).

  • /q - На консоль выводятся только ошибки. Если не указать, то все сообщения выводятся на консоль.

  • /default - Укажите, чтобы местоположение было отмечено как местоположение по умолчанию.

  • /legacy - Укажите, чтобы местоположение было отмечено как использующее устаревшую структуру папок. Используйте вместе с /f.

  • /full - Вернуть полное имя сборки с суффиксами, такими как “beta” для предварительных сборок.

  • /nologo - Предотвращает отображение сообщения по авторским правам и номеру версии.

Примеры использования со стандартными скриптами из папки Fixes

Все перечисленные скрипты расположены в папке Fixes сборки, и могут использоваться совместно с утилитой tadmin. В примерах скриптов предполагается, что утилита запускается из папки Tools архива со сборкой.

  • Скрипт GetBuildVersion.sql: возвращает версию сборки платформы, которая в текущий момент установлена на сервере. Для сборок 2.4.х и младше возвращается значение "2.4" (без кавычек).

    Команда возвращает актуальное значение до того, как будет выполнено любое изменение конфигурации, в т.ч. посредством утилиты tadmin, т.к. это перезапишет версию сборки.

    set build= for /f "tokens=* usebackq" %%f in (`tadmin.exe Select "..\Fixes\GetBuildVersion.sql" /q`) do set build=%%f

    echo build="%build%"

  • Скрипт SetBuildVersion.sql: устанавливает номер сборки платформы, установленной на сервере. Используется при автоматическом обновлении на новую сборку в скрипте Upgrade.bat в случае отката преждевременного изменения номера сборки в базе данных при возникновении ошибки.

    Не увеличивает версию конфигурации, для этого выполните команду tadmin IncrementVersion.

    set "build=2.5" tadmin.exe Sql "Fixes\SetBuildVersion.sql" "/p:BuildVersion=%build%" /nologo

  • Скрипт SetConfigDescription.sql: устанавливает текстовое описание для конфигурации платформы, установленной на сервере. Описание может быть строкой локализации, начинающейся со знака $, или может содержать константы локализации вида text {$LocalizedString} text.

    Не увеличивает версию конфигурации, для этого выполните команду tadmin IncrementVersion. Посмотреть текущий текст можно в приложении TessaAdmin на вкладке “Информация”, нажав на ссылку “Информация по конфигурации”. Также текст доступен через SQL вида: select Description from Configuration with(nolock).

    set "description=Текстовое описание сборки" tadmin.exe Sql "..\Fixes\SetConfigDescription.sql" "/p:Text=%description%" /nologo

    Чтобы сбросить описание на “Конфигурация по умолчанию”, используйте команду:

    tadmin.exe Sql "..\Fixes\SetConfigDescription.sql" /p:Text /nologo

Универсальный импорт данных на примере контрагентов

Команды CreateFromTemplate и ImportCards удобно использовать совместно с json-форматом выгруженных карточек для простой организации импорта любых данных в систему. Json-формат выгруженных объектов и шаблонов поддерживается, начиная с релиза 3.1. Общий принцип работы такого импорта заключается в том, чтобы любыми доступными способами подготовить набор файлов .jcard в формате json, каждый из которых затем будет использован как шаблон для создания карточки в системе или даже импортирован с сохранением идентификаторов.

Давайте на примере контрагентов посмотрим, как это работает. Попробуем импортировать в систему двух контрагентов “Ромашка 1” и “Ромашка 2”.

Сначала давайте создадим контрагента, который станет нашим шаблоном. В TessaClient в правой панели выбираем “Создать карточку→Справочники→Контрагент”. Заполним в нашем шаблоне поля “Краткое имя”, “ИНН” и “КПП”. Для простоты заполним их словами, которые потом будет легко найти в выгруженной карточке.

Вы можете заполнить любые поля, таблицы и списки в карточках и даже приложить файлы.

Теперь выгрузим эту карточку. В левой панели выберите тайл “Системные→Экспорт карточки” и сохраните карточку в какую-нибудь директорию. В ней будет создан файл “ИМЯ_КОНТРАГЕНТА.jcard”. Это выгруженная в формат json карточка, которую мы будем использовать как шаблон. Откройте этот файл в любом текстовом редакторе и найдите в нем строки, которым мы вводили для полей контрагента “ИМЯ_КОНТРАГЕНТА”, “1111111111” И “2222222222”.

Теперь в отдельной папке “CompaniesData” (имя выбрано для удобства и может быть любым) создадим две копии этого файла, первый назовем “1.jcard”, второй “2.jcard” (имена файлов могут быть любые). Единственные изменения, которые нужно сделать в этих файлах - задать нужные имя контрагента, ИНН и КПП. Никаких других изменений делать не надо. Мы сделаем это ручным редактированием, но, разумеется, этот процесс может быть легко автоматизирован, чтобы, например импортировать данные из Excel (при помощи простенького макроса) или из любой другой системы.

Вот так будет выглядеть такой файл.

И вот эти файлы в папке.

Собственно, все что нам осталось сделать, это выполнить нужную команду tadmin, передав туда путь к папке, где мы создали нужные нам файлы .jcard.

tadmin.exe CreateFromTemplate "C:\CompaniesData" /nologo

И вуаля! Вот наши контрагенты.

Скажем несколько слов о разнице между командами ImportCards и CreateFromTemplate.

ImportCards - импортирует выгруженный объект с сохранением идентификаторов. То есть карточка будет иметь тот же самый идентификатор, который указан в файле .jcard, а также и все ее строки данных. Если в базе будет найден объект с таким же идентификатором, то в зависимости от переданных параметров, утилита либо попробует удалить объект и потом импортировать его из файла поверх, либо пропустит такой объект. Также ImportCards требует административных прав.

CreateFromTemplate - использует карточку в формате .jcard как шаблон для создания новой карточки. В новую карточку будут скопированы все поля данных, списки и таблицы (например, список контактных лиц для контрагентов) и даже приложенные файлы. Да, карточка в формате .jcard содержит и файлы, которые будут приложены к карточке. При этом сам объект будет создан новый, со своим отдельным идентификатором и все строки данных и файлы также получат новые идентификаторы. Импорт не требует административных прав, достаточно иметь права на создание объектов нужных типов.

Это чрезвычайно простой и универсальный способ организации импорта любых данных в систему, который позволяет очень быстро настроить любыми подручными средствами преобразование из входящего формата в универсальный .jcard, а затем проимпортировать полученные данные в систему. При этом метод не имеет никаких ограничений по сложности импортируемых объектов. Это могут быть карточки с таблицами внутри таблиц внутри таблиц, например. И этот метод не имеет никаких ограничений по набору полей - вы можете импортировать любые поля, которые есть в системе (разумеется при наличии у вас соответствующих прав).

Back to top