Текст пользовательского сценария создается в редакторе ISBL-текстов. Редактор запускается по нажатию кнопки Текст в карточке справочника Пользовательские сценарии. При задании вычислений можно использовать все возможности языка ISBL, функции, константы, предопределенные переменные, объектную модель.
При написании вычисления необходимо иметь в виду, что предопределенная переменная Object и функция GetComponent() будут возвращать компоненту, для которой выполняется пользовательское событие. Подробнее см. раздел «Общие переменные».
Например, чтобы при создании нового договора в справочнике Договоры автоматически заполнялись поля *Дата регистрации и *Ответственный, нужно задать следующий текст:
// Заполнить работника, ответственного за договор.
UserName = Application.Connection.UserName
User = ServiceFactory.GetUserByName(UserName)
Employee = SubString(ПоискСпр('РАБ'; 'Пользователь:' & User.Code);
'|'; 1)
Object.Работник = Employee
// Заполнить дату регистрации.
Object.Дата = Today()
Чтобы при сохранении РКК выдавалось предложение снять РКК с контроля, если завершены все этапы, в карточке пользовательского сценария можно задать вычисление:
// Определить находится ли РКК на контроле.
OnControl = Object.Requisites('ДаНет2').AsString
if OnControl == YES_VALUE
// Проверить завершены ли все этапы.
I = 1
Count = СпрТблСтрКол(;; 2)
StepNumber = СпрТблСтрМин(;; 2)
AllStepsFinished = TRUE
while (I <= Count) and AllStepsFinished
FinishDate = СпрРекв(;; 'Дата2Т2'; StepNumber;)
AllStepsFinished = (FinishDate <<>> '')
StepNumber = СпрТблСтрСлед(;; 2; StepNumber)
I = I + 1
endwhile
// Если завершены все этапы, предложить снять РКК с контроля.
if (Count > 0) and AllStepsFinished
Result = MessageBox('Снятие с контроля';
'Завершены все этапы, снять с контроля?'; 'Да|Нет';
YES_VALUE; NO_VALUE)
Object.ДаНет2 = IfThen(Result == YES_VALUE; NO_VALUE; YES_VALUE)
endif
endif
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |