В программе, предусмотрена возможность работы с MS SQL сервером при помощи сценариев, написанных на языке "Transact-SQL" или запросов соответствующих стандарту SQL-92. Возможность писать сценарии предоставляются отдельным пользователям, которым должен быть открыт доступ. О включении доступа
Внимание! Возможности программы по работе со сценариями, будет расширяться.
После того, как пользователь получит доступ к редактированию SQL-скриптов, он увидит кнопку «SQL-скрипт» . При нажатии на эту кнопку будет открыто окно редактирования скрипта, либо как в случае со-справочниками , кнопки с точками , каждая из которых соответствует одному из значений справочника. Окно редактирования SQL- script
1. Сценарии на кнопку «Добавить» в закладках. Данные сценарии и их события находятся в таблице Contacts_SqlScript. Тут важно знать имя закладки. Его можно узнать выполнив запрос типа: select [Name] from pagename where NameRus='КНИГИ'
a) Срабатывающие до внесения строки. Допустим, наименование закладки в базе- PageForCont1. ( Также следует помнить, что в зкаладках для добавления новой строки используются два варианта кнопок : «плюс» и «уровень» ) Событие на кнопку «плюс» имеет префикс: tbAdd_Before_Level0, а на кнопку «уровень» tbAdd_Before_Level1. Тогда сложив tbAdd_Before_Level0 и имя закладки, получим имя для события до внесения строки для кнопки «плюс» : tbAdd_Before_Level0PageForCont1 Пример сценария: Declare @ SQL_SCRIPT nvarchar(4000) set @SQL_SCRIPT ='select 2,'+char(39)+'Вы уверены что желаете создать новую строку?'+char(39)+',Null,'+char(39)+'Создание строки'+char(39) insert Contacts_SqlScript (SQL_SCRIPT, Event) values (@SQL_SCRIPT,'tbAdd_Before_Level0PageForCont1') Запрос сценария обязательно должен заканчиваться селектом из 1 строки и 4 колонок. В первой колонке цифры 0, 1 или 2. 0 – не выводить никакого сообщения 1 – выводить информационное сообщение с кнопкой Ок 2 – выводить вопрос, при отрицательном ответе на который строка не будет внесена. Во второй колонке текст сообщения если оно есть, если его нет, то ставятся кавычки. В третьей колонке ставится дата, которая будет присовокуплена к вопросу. В четвертой колонке ставится строка-заголовок для вопроса.
b) Срабатывающие по факту внесения строки. Имя события составляется как префикс tbAdd и имя закладки (в нашем примере PageForCont1). Таким образом для нашего примера имя будет иметь вид: tbAddPageForCont1 Запрос сценария обязательно должен заканчиваться селектом из 1 строки и 3 колонок. В первой колонке цифры 0 или 1. 0 – не выводить никакого сообщения 1 – выводить информационное сообщение с кнопкой Ок Во второй колонке текст сообщения если оно есть, если его нет, то ставятся кавычки. В третьей колонке ставится дата, которая будет присовокуплена к вопросу. Пример: declare @Sql nvarchar(4000), @Event varchar(250) delete from Contacts_SqlScript where Event='tbAddPageForCont1' set @Event='tbAddPageForCont1' set @SQL='select '+char(39)+'1'+char(39)+','+char(39)+'Вы создали новую строку. Текущее число: '+','+'getdate()'
insert Contacts_SqlScript(Event, SQL_SCRIPT) values(@Event, @SQL)
2. Сценарий на событие «Закрыть карточку». Пример сценария: INSERT HistoryContacts ([DATE], Message, id_user, id_contacts, id_usertask ) values (getdate(), 'Внесли закрытие '+cast(_NUMBER_CONTACTS_ as varchar(250)), _ID_USER_, _NUMBER_CONTACTS_, 0) Данный сценарий записывает в историю контакта сообщение о том, что данный пользователь закрыл карточку. при этом _ID_USER_ - переменная, которая понимается программой как текущий пользователь _NUMBER_CONTACTS_ - переменная, которая понимается программой как текущий контакт.
3. Сценарий на закрытие карточки редактирования внутри закладки. Событие состоит из имени закладки и постфикса DeepCardClose. Таким образом для закладки PageForCont1 имя события будет выглядеть как PageForCont1DeepCardClose. Данный сценарий не возвращает никаких сообщений, то есть это сценарий исключительно для внесения каких либо данных в базу типа insert или update. Сценарий понимает переменные: _ID_PAGE_NUMBER_ - берет текущий номер строки в закладке _NUMBER_CONTACTS_ - берет текущий контакт _ID_USER_ - берет текущего пользователя
Пример: Declare @n nvarchar(4000) Set @n = ‘Какой-то мой insert’ insert Contacts_SqlScript (Event, SQL_SCRIPT) values ('PageForCont1DeepCardClose',@n)
4. Сценарий на редактирование значения справочника, расположенного на лицевой части Карточки. Данная возможность необходима в случае, если при выборе определенного значения из справочника должны выполняться дополнительные действия: создаваться напоминания пользователя, вноситься какие-либо строки в закладки и т.п. Сценарий понимает переменные: _NUMBER_CONTACTS_ - берет текущий контакт _ID_USER_ - берет текущего пользователя
5. Сценарий на редактирование значения справочника из закладки. Запрос будет выполняться по факту присвоения определенного значения из справочника. Сценарий понимает переменные: _ID_PAGE_NUMBER_ - берет текущий номер строки в закладке _PAGE_NAME_ - берет текущую закладку _NUMBER_CONTACTS_ - берет текущий контакт _ID_USER_ - берет текущего пользователя
6. При внесении новых дат в закладках. По факту внесения новых дат в закладках выполняется сценарий не возвращающий никаких значений. Данные сценарии находятся в таблице Page_SqlScript . Переменные: _ID_PAGE_NUMBER_ - воспринимается как текущая строка _PAGE_NAME_ - воспринимается как текущая закладка _COLUMN_NAME_ - воспринимается как текущий столбец _ID_USER_ - воспринимается как текущий пользователь |