Настроювання шаблону форми за допомогою сценарію

Увага! : Цю статтю перекладено за допомогою служби машинного перекладу; див. застереження. Версію цієї статті англійською мовою див. тут для отримання довідки.

Якщо ви знайомі з написанням сценаріїв, можете додати сценарій до шаблону форми Microsoft Office InfoPath за допомогою мови сценаріїв Microsoft JScript або Microsoft Visual Basic Scripting Edition (VBScript). Додавання сценарію дозволяє настроювати власний шаблон форми поза обмеженнями правил, формул, перевірки даних або умовного форматування. Наприклад, можна додати сценарій, який створює і надсилає повідомлення електронної пошти, коли користувач змінює подання у формі на основі шаблону форми. Можна настроїти шаблон форми на створення і надсилання повідомлень електронної пошти лише за допомогою сценарію.

У цій статті

Огляд

Зауваження щодо сумісності

Встановлення мови сценаріїв для шаблону форми

Відображення повідомлення під час кожного подія відбувається

Додавання сценарій, який запускається, коли користувач зберігає дані форми

Сценарій, який запускається під час надсилання даних форми

Сценарій, який запускається під час натискання кнопки

Сценарій, який запускається під час злиття наявних форм

Сценарій для оновлення наявних форм

Сценарій для інших подій

Огляд

Шаблон форми InfoPath можна настроїти за допомогою правил, формул, перевірки даних і умовного форматування. Хоча ці функції дуже гнучкі та можуть виконувати різноманітні завдання, деякі завдання не можна виконати за допомогою таких функцій. Наприклад, не можна використовувати правила для надсилання повідомлень електронної пошти, коли користувач вводить значення до текстового поля в формі. Якщо потрібно настроїти шаблон форми, виходячи за можливостей цих функцій, і якщо ви маєте навички написання сценаріїв мовами JScript або VBScript, можна додати сценарій, який запускається під час відкриття користувачем нової форми або змінення наявної форми, створеної на основі шаблону.

Під час додавання сценарію до шаблону форми запускається редактор сценаріїв Microsoft (MSE), який дозволяє додавати, редагувати та налагоджувати сценарій у шаблоні форми, і розташовує курсор у вибраній події. InfoPath автоматично додає до сценарію обробник події. Обробник події — це код функції у шаблоні форми InfoPath, який відповідає на дію користувача або змінення XML-даних у формі. Наприклад, якщо потрібно, щоб користувачі зберігали форми в кількох мережних розташуваннях, можна додати сценарій до обробника подій OnSaveRequest. У разі додавання сценарію, що запускатиметься під час збереження користувачем форми, створеної на основі шаблону форми, запускається редактор сценаріїв і до сценарію додаються наведені нижче коди.

Примітка : Коди, які додає InfoPath, залежать від вибраної мови сценаріїв.

JScript

//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSaveRequest(eventObj)
{
// Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation();
// Write the code to be run after saving here.
eventObj.ReturnStatus = true;
}

VBScript

'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSaveRequest(eventObj)
' Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation
' Write the code to be run after saving here.
eventObj.ReturnStatus = True
End Sub

Потім можна додати коди у відповідних місцях в обробнику подій, який зберігає форму в іншому мережному розташуванні. Якщо користувач зберігає форму, основану на цьому шаблоні, InfoPath запускає код в обробнику подій OnSaveRequest.

Примітка : Ця стаття надає детальний огляд створення сценаріїв у шаблоні форми. Для отримання додаткових відомостей про редактор сценаріїв (Microsoft) і певні об’єкти, методи, події і властивості, що використовуються в InfoPath, див. довідник розробника InfoPath.

InfoPath автоматично додає обробники подій для всіх подій, окрім однієї.

Event handler

Description

Steps for creating

OnAfterChange

This event runs after a user changes the value in the specified control bound to a field. For example, you can display a custom HTML task pane after a user selects an item in a list box control. This event runs after the OnValidate event.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On After Change Event.

OnAfterImport

This event runs after the user successfully merges several forms into one form.

Manually add the OnAfterImport event handler declaration directly to the script file by using MSE. This event handler cannot be created in design mode.

OnBeforeChange

This event runs after a user changes the value in a control and before the value is added to the specified field bound to that control. For example, you can prevent a user from adding an additional row before filling out the last row in a repeating table.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On Before Change Event.

OnClick

This event runs when a user clicks a button associated with this event. This event is available after you add a button to the form template. For example, you can perform a complex calculation by using the values in fields in the main data source when a user clicks the button.

Double-click the button control and then on the General tab of the Button Properties dialog box, click Edit Form Code.

OnContextChange

This event runs when the focus changes in the form. For example, this event runs when a user navigates from a text box to a date picker, or when a user switches views. This event occurs after all other events have occurred.

On the Tools menu, point to Programming, and then click On Context Change Event.

OnLoad

This event runs whenever a user creates a new form or opens an existing form based on your form template. For example, you can copy a list of items from a secondary data source to the main data source when a user opens the form.

On the Tools menu, point to Programming, and then click On Load Event.

OnMergeRequest

This event runs when forms based on your form template are merged. For example, you can display the number of forms that were merged to give a user a status during the merge operation.

On the Tools menu, click Form Options. In the Category list, click Advanced. Under Merge forms, select the Merge using custom code check box, and then click Edit.

OnSaveRequest

This event runs when a user saves a form based on your form template. For example, you can save the form based on this form template to more than one location when a user saves the form. InfoPath adds two additional lines of code to this event: a line that saves the form and another line that tells you if InfoPath successfully saved the form.

On the Tools menu, click Form Options. In the Category list, click Open and Save. Under Save behavior, select the Save using custom code check box, and then click Edit.

OnSign

This event runs when a user applies a digital signature to a form. For example, you can add additional data to the digital signature of an expense report form when a user signs it.

On the Tools menu, point to Programming, and then click On Sign Event.

OnSubmitRequest

This event runs when a user submits his or her form data. For example, you can submit the form data to a secure Web service when the user clicks Submit on the File menu. Since InfoPath does not support a data connection to a secure Web service, you need to add a custom data connection that works with your secure Web service.

On the Tools menu, click Submit Options. Select the Allow users to submit this form check box, click Perform custom action using Code, and then click Edit Code.

OnSwitchView

This event runs when a user opens a form based on your form template or switches to another view in the form. For example, when a user switches to a specific view, you can create an e-mail message that contains data from the fields in the form's main data source.

On the Tools menu, click Programming, and then click On Switch View Event.

OnValidate

This event runs when a user changes the value in a control bound to a field. For example, when the user changes the value in a specific control, you can calculate a new value for another control by using the number that the user entered and a number that is in the script. This event occurs after the OnBeforeChange event handler runs.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On After Validate Event.

OnVersionUpgrade

This event runs when a user opens an existing form and the version number of the form template used by the existing form is older than the version number of the form template in the publish location. When a user opens an existing form, InfoPath checks the version number of the form template associated with the existing form. If the form template has a newer version number, InfoPath runs the OnVersion event handler when the user opens the existing form. For example, imagine that you add a new field to an existing form template and republish it, and you want the new field to be added to the main data source if a user opens an existing form. This event adds the new field to the main data source when a user opens an existing form.

On the Tools menu, click Form Options. In the Category list, click Versioning. In the On version upgrade list, click Use custom event, and then click Edit.

На початок сторінки

Можливості сумісності

Не можна додавати сценарій до сумісний із браузером шаблон форми. Сценарій можна додавати лише для шаблону, форми якого будуть заповнені в InfoPath. Сумісний із браузером шаблон форми можна настроювати тільки за допомогою керованого коду.

На початок сторінки

Встановлення мови сценаріїв для шаблону форми

Настроювання шаблону форми за допомогою сценарію, можна використовувати Microsoft JScript або Microsoft Visual Basic Scripting Edition (VBScript). InfoPath настроєно за промовчанням, щоб додати сценарій за допомогою JScript. Якщо до шаблону форми не містить сценарію або керований код, і ви віддаєте перевагу VBScript як мови сценаріїв, можна змінити мову сценаріїв для шаблону форми до VBScript. Не можна використовувати як мови сценаріїв в той самий шаблон форми.

Якщо вже містить шаблон форми сценарій однією мовою, і ви хочете використовувати іншу мову, ви повинні зберегти наявну сценаріїв, щоб інші мови, можна перетворити сценарій видалення сценарій із шаблону форми за допомогою діалогового вікна Параметри форми і додайте перетворені сценарію до шаблону форми. Програма InfoPath не можна перетворити сценаріїв для нової мови сценаріїв. Змінення мови сценаріїв у діалоговому вікні Параметри форми лише впливає на шаблон форми. Інші шаблони форм матиме JScript сценаріїв мови за промовчанням.

  1. У меню Знаряддя виберіть пункт Параметри форми.

  2. У списку числові формати , у діалоговому вікні Параметри форми натисніть кнопку програмування.

  3. У списку мова коду шаблону форми у розділі мова програмування, натисніть кнопку VBScript.

    Примітки : 

    • Після встановлення мови сценаріїв та створити один або кілька обробників для шаблону форми, не можна змінити мову сценаріїв для шаблону форми.

    • Якщо інстальовано Microsoft Visual Studio 2005 Tools for Applications, мови за промовчанням – .NET Microsoft Visual Basic. Можна й надалі використовувати цю процедуру, змінення мови сценаріїв для VBScript.

На початок сторінки

Відображення повідомлення під час кожної події

Якщо потрібно дізнатися, які обробники подій запускаються у відповідь на дію або іншу подію, можна додати тимчасовий код для відображення вікна повідомлення під час запуску обробника подій. Цей код потрібно використовувати тільки для того, щоб визначити, коли запускатиметься обробник подій. Після додавання цього коду можна використовувати попередній перегляд для форми, заснованої на цьому шаблоні, або для публікування шаблону форми й створення нового шаблону. Деякі обробники подій запускаються тільки під час створення форми після публікування шаблону форми. Потім можна виконати дію, яка, на вашу думку, може запустити обробник подій. Коли обробник подій запуститься, з’явиться вікно повідомлення.

Після визначення дій або подій, які запускають обробник подій, видаліть код і відновіть розроблення шаблону форми. Якщо цей код не видалити й опублікувати шаблон форми, користувачі побачать вікно повідомлення під час запуску обробника подій.

  1. Додавання обробника подій.

  2. Щоб додати код у JScript, введіть XDocument.UI.Alert ("подія назву події просто запускали"); Замініть ім'я обробника подій. Наприклад, якщо додати код обробника подій OnValidate , потрібно ввести XDocument.UI.Alert ("The OnValidate обробника подій просто запускали");

  3. Щоб додати код у VBScript, введіть XDocument.UI.Alert ("подія назву події просто запускали") , наприклад, якщо додати код подій OnSaveRequest , потрібно ввести XDocument.UI.Alert ("The OnSaveRequest обробника подій просто запускали")

  4. Щоб перевірити код, виберіть команду Переглянути в меню Файл або натисніть сполучення клавіш CTRL+SHIFT+B і виконайте дію, яка може запустити подію. Якщо відбувається подія з рядком коду, з’являється відповідне вікно повідомлення.

    Примітка : Для деяких подій може бути потрібно опублікувати шаблон форми та створити форму на основі шаблону, перш ніж виконати дію для запуску події.

  5. Перш ніж опублікувати шаблон форми й дозволити користувачам заповнювати форми на основі цього шаблону форми, видаліть код, використовуваний для відображення вікна повідомлення.

На початок сторінки

Додавання сценарію, який запускається, коли користувач зберігає дані форми

  1. У меню Знаряддя виберіть пункт Параметри форми.

  2. У списку Категорія в діалоговому вікні Параметри форми, виберіть пункт Відкриття та збереження.

  3. У розділі Поведінка під час збереження встановіть прапорець Зберегти за допомогою настроюваного коду й виберіть пункт Редагувати. Редактор сценаріїв Microsoft відкриється з курсором на обробнику подій OnSaveRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnSaveRequest(eventObj)
    {
    // Write the code to be run before saving here.
    eventObj.IsCancelled = eventObj.PerformSaveOperation();
    // Write the code to be run after saving here.
    eventObj.ReturnStatus = true;
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnSaveRequest(eventObj)
    ' Write the code to be run before saving here.
    eventObj.IsCancelled = eventObj.PerformSaveOperation
    ' Write the code to be run after saving here.
    eventObj.ReturnStatus = True
    End Sub
  4. Виконайте одну або обидві такі дії:

    • Щоб додати сценарій, який запускається перед збереженням форми, замініть примітку Write the code to be run before saving here. кодом.

    • Щоб додати сценарій, який запускається після того, як InfoPath збереже форму, замініть примітку Write the code to be run after saving here. власним кодом.

  5. Щоб перевірити зміни, на панелі інструментів Стандартна натисніть кнопку Попередній перегляд або натисніть клавіші Ctrl+Shift+B.

    Примітка : Якщо обробник подій запускається лише після створення форми, заснованої на вашій формі, опублікуйте шаблон форми, вибравши пункт Опублікувати в меню Файл, і пройдіть майстра публікування. Після того, як шаблон форми опублікований, створіть форму та виконайте дію для запуску обробника події.

На початок сторінки

Додавання сценарію, який запускається, коли користувач надсилає дані форми

  1. У меню Знаряддя виберіть пункт Параметри надсилання.

  2. У діалоговому вікні Submit Options установіть прапорець Allow users to submit this form.

  3. Виберіть пункт Виконати настроювану дію за допомогою коду, і натисніть кнопку Редагувати текст програми. Редактор сценаріїв Microsoft запускається з курсором в обробнику події OnSubmitRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnSubmitRequest(eventObj)
    {
    // If the submit operation is successful, set
    // eventObj.ReturnStatus = true;
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnSubmitRequest(eventObj)
    ' If the submit operation is successful, set
    ' eventObj.ReturnStatus = True
    ' Write your code here
    End Sub
  4. Замініть примітку If the submit operation is successful, set eventObj.ReturnStatus = true Write your code here власним кодом.

  5. Щоб перевірити зміни, на панелі інструментів Стандартна натисніть кнопку Попередній перегляд або натисніть клавіші Ctrl+Shift+B.

На початок сторінки

Додавання сценарію, який запускається, коли користувач натискає на кнопку

  1. Додайте нову кнопку до подання в шаблоні форми та двічі клацніть цю кнопку.

    Примітка : Якщо сценарій додається до наявної кнопки, двічі клацніть наявну кнопку.

  2. Перейдіть на вкладку Загальні.

  3. Виберіть пункт Редагувати код форми. Редактор сценаріїв Microsoft відкривається з курсором на обробнику подій OnClick для цієї кнопки.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function Button Name::OnClick(eventObj)
    {
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub Button Name_OnClick(eventObj)
    ' Write your code here
    End Sub
  4. Замініть примітку Write your code here власним кодом.

  5. Щоб перевірити зміни, на панелі інструментів Стандартна натисніть кнопку Попередній перегляд або натисніть клавіші Ctrl+Shift+B.

На початок сторінки

Додавання сценарію, який запускається під час злиття наявних форм

  1. У меню Знаряддя виберіть пункт Параметри форми.

  2. У списку Категорія в діалоговому вікні Параметри форми виберіть пункт Додатково.

  3. У розділі Об'єднання форм установіть прапорець Увімкнути злиття форм.

  4. Установіть прапорець Злиття за допомогою настроюваного коду і натисніть кнопку Редагувати. Редактор Microsoft відкривається з курсором на обробнику подій OnMergeRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnMergeRequest(eventObj)
    {
    // Write the code that handles each form being merged here.
    XDocument.ImportDOM(eventObj.DOM);
    eventObj.ReturnStatus = true;
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnMergeRequest(eventObj)
    ' Write the code that handles each form being merged here.
    XDocument.ImportDOM(eventObj.DOM)
    eventObj.ReturnStatus = True
    End Sub
  5. Замініть примітку Write the code that handles each form being merged here. власним кодом.

  6. Щоб перевірити код у цій події, опублікуйте шаблон форми, створіть кілька форм на основі цього шаблону та об’єднайте шаблони форм.

    Примітка : Посилання на додаткові відомості про публікування шаблону форми див. у розділі Див. також.

На початок сторінки

Додавання сценарію для оновлення наявних форм

Якщо ви оновили шаблон форми, який був попередньо опублікований, можна додати сценарій до оновленого шаблону форми, який запускається, коли користувач відкриває одну з наявних форм. Коли користувач відкриває наявну форму, InfoPath перевіряє номер версії пов’язаного шаблону форми в розташуванні публікації. Якщо номер версії шаблону форми в розташуванні публікації новіший за номер версії наявної форми, це означає, що він оновлювався, і InfoPath запускає код у цій події, щоб оновити наявну форму.

  1. У меню Знаряддя виберіть пункт Параметри форми.

  2. У списку Категорія в діалоговому вікні Параметри форми виберіть пункт Керування версіями.

  3. У списку Під час оновлення версії виберіть пункт Використання настроюваної події і натисніть кнопку Редагувати. Редактор сценаріїв Microsoft запускається з курсором на обробнику події OnVersionUpgrade.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnVersionUpgrade(eventObj)
    {
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnVersionUpgrade(eventObj)
    ' Write your code here
    End Sub
  4. Замініть примітку Write your code here власним кодом.

  5. Щоб перевірити код у цій події, опублікуйте шаблон форми, створіть кілька форм на основі цього шаблону, змініть і опублікуйте оновлену версію шаблону форми, а потім відкрийте наявну форму на основі старої версії шаблону цієї форми.

    Примітка : Посилання на додаткові відомості про публікування шаблону форми див. у розділі Див. також.

На початок сторінки

Додавання сценарію для інших подій

Цю процедуру можна використовувати, щоб додати такі обробники до шаблону форми:

  • OnAfterChange

  • OnBeforeChange

  • OnContextChange

  • OnLoad

  • OnSwitchView

  • OnSign

  • OnValidate

  • В меню Знаряддя виберіть розділ Програмування і клацніть подію, щоб додати її до обробника подій. Редактор сценаріїв Microsoft запускається з курсором на вибраному обробнику подій.

  • Замініть примітку Write your code here власним кодом.

На початок сторінки

Примітка : Застереження про машинний переклад: Цю статтю перекладено комп’ютерною системою без втручання людини. Корпорація Майкрософт пропонує таку послугу, щоб іншомовні користувачі могли дізнаватися про продукти, служби й технології Microsoft. Оскільки статтю перекладено за допомогою служби машинного перекладу, вона може містити смислові, синтаксичні або граматичні помилки.

Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×