MiDays: База знаний

Скрипты при запуске

2024-12-26 10:36 Разное
Обратите внимание! Данная статья предназначена для технических специалистов. Разработчики MiDays UNO не несут ответственности за неверно составленные и применённые скрипты
Данная возможность появилась с версии 2024.12.26.

Для чего?

Скрипты можно использовать для изменения информации в базе данных.
Например, можно изменить группу НДС для товаров, но сделать это нужно с определённой даты.

Как создать?

В папке с параметрами программы найдите папку UserScripts (C:\ProgramData\MiDays\MiDaysCommerce\UserScripts), если папки нет - создайте её.
В этой папке необходимо создать файл определённого формата. Расширение файла должно быть json (Например, MyScript.json)
{
  "Name": "Название скрипта",
  "Start": "Дата",
  "Query": "Скрипт",
  "IsRecurring": true
}
Объяснение:
  1. "Name": Название скрипта.
  2. "Start": Дата и время запуска в формате ISO 8601.
  3. "Query": Пример SQL-запроса.
  4. "IsRecurring": Логическое значение, указывающее, является ли скрипт повторяющимся.
Start может принимать значения даты в форматах:
  • Дата-время yyyy-MM-ddTHH:mm:ss. Если необходимо указать время, после которого будет выполнен скрипт.
  • Дата yyyy-MM-dd. Если достаточно указать дату, после которой будет выполнен скрипт.
IsRecurring может принимать значения:
  • true - указывает, что скрипт будет повторяться.
  • false - указывает, что скрипт будет выполнен один раз.
Если скрипт не должен повторяться, то после выполнения файл скрипта будет перенесён в папку UserScripts\Finish.

Как работает?

При запуске программы будет выполнена проверка, есть ли файлы в папке со скриптами.
Если файлы найдены, для каждого из них будет предпринята попытка открыть и десериализовать текст файла.
После успешной десериализации пройдёт проверка даты, если дата/время на момент запуска программы будет больше, чем указанная дата в файле - произойдёт выполнение SQL скрипта.
Обратите внимание, выполнение скрипта происходит ДО авторизации пользователя, поэтому, если Ваш скрипт выполняется долго, то это может внести замедление в запуск программы.

Примеры

На момент написания статьи актуален скрипт для изменения группы НДС, в связи с вводом новых групп НДС с 1 января 2025.
1. Изменение группы НДС на организацию.
{
  "Name": "Изменение НДС организации",
  "Start": "2025-01-01",
  "Query": "UPDATE Organizations SET VatGroupID = XX WHERE ID = YY",
  "IsRecurring": false
}
  • XX - ID новой группы НДС.
  • YY - ID организации, для которой должен быть применён скрипт.
  • IsRecurring = false, т.к. достаточно этот скрипт выполнить один раз.
2. Изменений группы НДС на некоторые группы товаров.
{
  "Name": "Изменение НДС некоторых групп товаров",
  "Start": "2025-01-01",
  "Query": "UPDATE Goods SET VatGroupID = XX WHERE GroupID in (YY, ZZ, ...)",
  "IsRecurring": false
}
  • XX - ID новой группы НДС.
  • YY, ZZ - ID групп товаров, для который должен быть применён скрипт (указать через запятую все необходимые группы товаров
  • IsRecurring = false, т.к. достаточно этот скрипт выполнить один раз.

Логирование.

При выполнении скриптов ведётся подробное логирование выполняемых действий.
  1. Скрипт найден в папке (указываются имя скрипта и путь до файла). Данная запись будет отображена в лог-файле программы.
  2. Начато выполнение скрипта (указываются имя скрипта и путь до файла). Данная запись будет отображена в лог-файле программы.
  3. Скрипт пропущен из-за не наступившей даты (указываются имя скрипта, дата в скрипте, текущая дата). Данная запись будет отображена в лог-файле программы.
  4. Скрипт выполнен (указываются имя скрипта и путь до файла). Данная запись будет отображена в лог-файле программы и записана в базу данных.
  5. SQL запрос скрипта. Данная запись будет отображена только в лог-файле программы.