Пользовательскиe sql-скрипты

Материал из Alta-Soft Wikipedia
Перейти к навигации Перейти к поиску

Общие сведения

Пользовательские скрипты - это файлы *.sql, которые содержат текст с набором SQL-команд. Данные файлы следует размещать в папке ARTICUL\Addons - для платформонезависимых скриптов, ARTICUL\Addons\mssql - для MSSQL-скриптов, ARTICUL\Addons\sqlite - для SQLite-скриптов, ARTICUL\Addons\msacc - для MSAccess-скриптов. При наличии одноименных файлов в ARTICUL\Addons и подпапке текущего типа БД приоритет будет у последней. Артикул активирует меню "Сервис/Выполнить пользовательский скрипт", если при запуске обнаруживает хотя бы один такой файл. Синтаксис и оформление таких скриптов производится также, как в окне "Выполнение SQL команд" (меню "Сервис/Выполнить SQL запрос", Ctrl+Alt+S). После выполнения скрипта данные на закладке "Инвойс" главного окна Артикула будут полностью обновлены для немедленого отображения возможных внесенных в инвойс изменений.

Оформление

Для MSSQL и SQLite поддерживаются специальные комментарии, однако для MSAccess никакие комментарии не поддерживаются:

  • Caption - определяет наименование запускающего данный скрипт пункта меню:
-- Caption: "Наименование"=>"Примечание3" (для выделенных товаров)
  • Hint - определяет подсказку запускающего данный скрипт пункта меню:
-- Hint: Перенос значения колонки "Наименование" в колонку "Примечание3"

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

Синтаксис

В тексте запросов допускается использовать (неограниченное кол-во раз) следующие входные параметры:

  • :sInvNum - номер текущего инвойса.
  • :nPOListID - идентификатор текущей/выделенной записи товара в инвойсе, если скрипт содержит данный параметр и на закладке "Инвойс" выделено несколько товаров, то скрипт будет выполнен один раз для каждого выделенного товара.
  • :nPOListWhere - текущий набор условий фильтров для товаров инвойса.

Перед непосредственным выполнением скрипта каждый такой параметр будет заменен на соотв-щую sql-константу (строковую или числовую), либо целое sql-выражение, как в случае с :nPOListWhere.

Рекомендуется заканчивать каждое SQL-предложение символом ";". Не смотря на то что в большинстве случаев будет работать и без этого, но иногда могут возникнуть проблемы. Для MSAccess еще и каждое SQL-предложение должно находится на отдельной строке, за которой следует строка, которая содержит только "GO".

Примеры

  • MSSQL:
-- Caption: "Наименование"=>"Примечание3" (для выделенных товаров)
-- Hint: Перенос значения колонки "Наименование" в колонку "Примечание3"
update POList set Memo3=Name where ID=:nPOListID;
update POList set Memo3='Из колонки Наименование:'+Memo3 where ID=:nPOListID;
  • SQLite:
-- Caption: "Наименование"=>"Примечание3" (для выделенных товаров)
-- Hint: Перенос значения колонки "Наименование" в колонку "Примечание3"
update POList set Memo3=Name where ID=:nPOListID;
update POList set Memo3='Из колонки Наименование:'||Memo3 where ID=:nPOListID;
  • MSAccess:
update POList set Memo3=Name where ID=:nPOListID;
GO
update POList set Memo3='Из колонки Наименование:'+Memo3 where ID=:nPOListID;