Настройка шаблона формы с помощью сценария

Важно :  Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

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

В этой статье:

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

Проблемы совместимости

Выбор языка сценариев для шаблона формы

Отобразить сообщение каждый раз при возникновении события

Добавьте сценарий, который запускается при сохранении данных формы

Добавьте сценарий, который запускается при отправке данных формы

Добавьте сценарий, который запускается при нажатии кнопки

Добавьте сценарий, который запускается при слиянии существующих форм

Добавление сценария для обновления существующих форм

Добавление сценария для других событий

Обзор

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

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

Примечание : Код, добавляемый 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.

Примечание : В этой статье дается общее представление о создании сценариев в шаблоне формы. Дополнительные сведения о редакторе сценариев и определенных объектах, методах, событиях и свойствах, используемых в 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, языком по умолчанию является Microsoft Visual Basic .NET. Чтобы изменить язык сценариев VBScript по-прежнему можно использовать эту процедуру.

К началу страницы

Отображение сообщения при каждом случае события

Чтобы узнать, какие обработчики событий выполняются в ответ на действие или иное событие, можно добавить временный код, который будет открывать окно сообщения при каждом выполнении обработчика событий. Этот код следует использовать только для определения момента выполнения обработчика событий. После добавления этого кода можно с помощью предварительного просмотра просмотреть форму, основанную на этом шаблоне формы, или опубликовать этот шаблон формы и затем создать новый. Некоторые обработчики событий выполняются только если форма создана после публикации шаблона формы. После этого можно выполнить действие, которое могло бы запустить обработчик событий. При выполнении обработчика событий открывается окно сообщения.

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

  1. Добавьте обработчик событий.

  2. Чтобы добавить код JScript, введите в XDocument.UI.Alert ("события имя события, просто запустили программу"); Замените имя обработчика событий. Например если добавить этот код обработчика событий OnValidate , вы введите XDocument.UI.Alert ("OnValidate обработчика событий просто запустили программу");

  3. Чтобы добавить код в VBScript, введите XDocument.UI.Alert ("события имя события, просто запустили программу") , например, если добавить этот код в обработчик событий OnSaveRequest , необходимо ввести XDocument.UI.Alert ("OnSaveRequest обработчика событий просто запустили программу")

  4. Чтобы протестировать код, в меню Файл выберите команду Предварительный просмотр или нажмите CTRL+SHIFT+B и затем выполните действие пользователя, которое может запустить событие. Когда происходит событие, соответствующее строке кода, должно появиться окно сообщения.

    Примечание : Для некоторых событий, прежде чем можно будет выполнить действие пользователя для запуска события, необходимо опубликовать шаблон формы и затем создать форму на основе этого шаблона формы.

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

К началу страницы

Добавление сценария, который выполняется при сохранении данных формы

  1. В меню Сервис выберите пункт Параметры формы.

  2. В списке Категория в диалоговом окне Параметры формы выберите Открытие и сохранение.

  3. В группе Действия при сохранении установите флажок Сохранить с использованием пользовательского кода, затем щелкните Правка. Запустится редактор сценариев, в котором курсор будет установлен в обработчике событий 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. Выполните одно или оба следующих действия.

    • Чтобы добавить сценарий, который выполняется перед тем как InfoPath сохраняет форму, замените комментарий 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. В диалоговом окне Параметры отправки установите флажок Разрешить пользователям отправлять эту форму.

  3. Щелкните Выполнить пользовательское действие с использованием кода, затем — пункт Текст программы. Запустится редактор сценариев, в котором курсор будет установлен в обработчике событий 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. Нажмите Редактировать код формы. Запустится редактор сценариев, в котором курсор будет установлен в обработчике событий 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. Установите флажок Объединить с использованием кода, затем щелкните Изменить. Запустится редактор сценариев, в котором курсор будет установлен в обработчике событий 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. В списке При обновлении версии выберите Использовать специальное событие, затем щелкните Правка. Запустится редактор сценариев, в котором курсор будет установлен в обработчике событий 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

  • В меню Сервис выберите пункт Программирование и затем щелкните событие для добавления в обработчик событий. Запустится редактор сценариев, в котором курсор будет установлен в выбранном обработчике событий.

  • Замените комментарий Write your code here на свой код.

К началу страницы

Примечание : Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×