Расширение формы клиентского приложения для задачи.ПриЧтенииНаСервере

События · OnReadAtServer

Вызывается при чтении объекта на сервере.

Синтаксис

ПриЧтенииНаСервере(<ТекущийОбъект>)
Полное описание, параметры и ограничения

Расширение формы клиентского приложения для задачи.ПриЧтенииНаСервере (Managed form extension for tasks.OnReadAtServer)

Расширение формы клиентского приложения для задачи (Managed form extension for tasks)

ПриЧтенииНаСервере (OnReadAtServer)

Доступен, начиная с версии 8.2.

Синтаксис:
ПриЧтенииНаСервере(<ТекущийОбъект>)
Параметры:

<ТекущийОбъект>
Тип: ЗадачаОбъект.<Имя задачи>.
Объект, который будет прочитан.
Описание:

Вызывается при чтении объекта на сервере.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Обработать ПриЧтенииНаСервере на форме УчебныеСогласования

Показана конкретная стадия формы: проверка до действия, чтение объекта, завершение записи или выбор своей ссылки. Клиентский и серверный код не смешиваются.

Где и как запускать

Модуль собственной управляемой формы УчебныеСогласования, событие ПриЧтенииНаСервере. Серверный обработчик.

Подготовка

  1. Работайте в отдельной пустой учебной конфигурации. Создайте справочник УчебныеИсполнители и предопределённый элемент Демонстрационный с наименованием Учебный исполнитель.

  2. Создайте задачу УчебныеСогласования: строковый номер длиной 12, автонумерация, наименование длиной 100. Добавьте реквизит адресации Исполнитель типа СправочникСсылка.УчебныеИсполнители и выберите его основным реквизитом адресации. Здесь используется прямая адресация; регистр ролевой адресации не нужен.

  3. Создайте параметр сеанса УчебныйИсполнитель того же ссылочного типа. В свойстве задачи Текущий исполнитель выберите этот параметр. Запросы урока передают исполнителя явно и не зависят от начального значения параметра сеанса.

  4. Создайте бизнес-процесс УчебноеСогласование со строковым номером длиной 12 и автонумерацией. В свойстве Задача выберите УчебныеСогласования. Карта маршрута: Старт (начало) → Согласовать (действие) → Завершение. В точке Согласовать задайте адресацию Исполнитель = Демонстрационный, Групповая = Ложь.

  5. И у задачи, и у бизнес-процесса создайте обычные реквизиты КомментарийУчебный (Строка 100), Сумма (Число 12.2), Подтверждено (Булево), ЗапретУдаления (Булево). Добавьте табличную часть Детали с колонками Наименование (Строка 100) и Количество (Число 10.0).

  6. Создайте общий реквизит УчебныйИсточник типа Строка 20, Разделение данных = Не использовать. Включите только учебную задачу и бизнес-процесс в его состав. Это не разделитель и не настройка рабочей конфигурации.

  7. В модуле объекта бизнес-процесса разместите отдельный обработчик СогласоватьПриСозданииЗадач из дополнительного блока. В свойствах точки Согласовать назначьте его событию ПриСозданииЗадач. Платформа записывает сформированные задачи после обработчика; внутри него Записать не вызывается.

  8. Обновите учебную базу. Создайте серверный общий модуль УчебныеПроцессы: поместите туда функцию ПодготовитьУчебныйПроцесс из отдельного блока и процедуру ВыполнитьПример() Экспорт. Основной код без заголовка вставляйте в тело этой процедуры и вызывайте её из серверной команды своей обработки.

  9. Каждый запуск подготовки действительно создаёт новый учебный бизнес-процесс и его задачу. Не используйте рабочую базу. Табличные части и обычные реквизиты заполняются только у этих новых объектов; ничего не отправляется по сети.

  10. У УчебныеСогласования создайте управляемую форму объекта УчебнаяФорма с основным реквизитом Объект. Выведите его Сумма, КомментарийУчебный и Подтверждено. У формы добавьте СтатусПроверки (Строка 200) и СчетчикСобытий (Число 10.0), выведите их только для просмотра.

  11. В свойствах этой формы назначьте показанный обработчик событию ПриЧтенииНаСервере. Основной блок относится к модулю формы; дополнительная функция подготовки остаётся в серверном общем модуле.

  12. В собственной внешней обработке с управляемой формой создайте команду ОткрытьУчебныйОбъект и кнопку. В модуль этой внешней формы вставьте два дополнительных блока СоздатьУчебныеДанные и ОткрытьУчебныйОбъект; назначьте клиентский обработчик команде. Они создадут данные и откроют конкретную УчебнаяФорма с параметром Ключ.

  13. Команды Записать, Старт / Выполнена и Активировать должны быть стандартными командами именно формы объекта. После открытия используйте ту команду, которая вызывает изучаемое событие.

  14. На время урока не устанавливайте другие учебные обработчики отмены в модулях объекта и формы. Они могут изменить результат текущего сценария.

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    СтатусПроверки = "ПриЧтенииНаСервере: сумма " + Строка(ТекущийОбъект.Сумма);
    СчетчикСобытий = СчетчикСобытий + 1;
    Сообщить(СтатусПроверки);
КонецПроцедуры
Серверный общий модуль УчебныеПроцессы: реальное создание процесса и задачи
Функция ПодготовитьУчебныйПроцесс(ЗапуститьМаршрут = Истина) Экспорт
    Процесс = БизнесПроцессы.УчебноеСогласование.СоздатьБизнесПроцесс();
    Процесс.Дата = Дата(2026, 10, 14, 10, 0, 0);
    Процесс.КомментарийУчебный = "Согласовать учебную покупку";
    Процесс.Сумма = 100;
    Процесс.Подтверждено = Ложь;
    Процесс.УчебныйИсточник = "ПРИМЕР";
    Деталь = Процесс.Детали.Добавить();
    Деталь.Наименование = "Книга";
    Деталь.Количество = 2;
    Процесс.Записать();
    Если Не ЗапуститьМаршрут Тогда
        Возврат Новый Структура("Процесс,Задача", Процесс.Ссылка, Задачи.УчебныеСогласования.ПустаяСсылка());
    КонецЕсли;
    Процесс.Старт();
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Задача.УчебныеСогласования ГДЕ БизнесПроцесс = &Процесс";
    Запрос.УстановитьПараметр("Процесс", Процесс.Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Не Выборка.Следующий() Тогда
        ВызватьИсключение "Маршрут не создал учебную задачу: проверьте подготовку";
    КонецЕсли;
    Возврат Новый Структура("Процесс,Задача", Процесс.Ссылка, Выборка.Ссылка);
КонецФункции
Модуль объекта бизнес-процесса: назначенный обработчик точки Согласовать
Процедура СогласоватьПриСозданииЗадач(ТочкаМаршрута, ФормируемыеЗадачи, Отказ)
    Для Каждого НоваяЗадача Из ФормируемыеЗадачи Цикл
        НоваяЗадача.КомментарийУчебный = "Проверить учебную покупку";
        НоваяЗадача.Сумма = 100;
        НоваяЗадача.УчебныйИсточник = "ПРИМЕР";
        Деталь = НоваяЗадача.Детали.Добавить();
        Деталь.Наименование = "Книга";
        Деталь.Количество = 2;
    КонецЦикла;
КонецПроцедуры
Внешняя управляемая форма: серверная функция создания данных
&НаСервере
Функция СоздатьУчебныеДанные()
    Контекст = УчебныеПроцессы.ПодготовитьУчебныйПроцесс(Истина);
    Возврат Контекст;
КонецФункции
Внешняя управляемая форма: назначенная команда открытия собственного объекта
&НаКлиенте
Процедура ОткрытьУчебныйОбъект(Команда)
    Контекст = СоздатьУчебныеДанные();
    ПараметрыФормы = Новый Структура("Ключ", Контекст.Задача);
    ОткрытьФорму("Задача.УчебныеСогласования.Форма.УчебнаяФорма", ПараметрыФормы);
КонецПроцедуры

Разбор по шагам

  1. Директива соответствует стадии: события НаСервере выполняются на сервере, остальные показанные события — на клиенте.

  2. Объект — данные основной формы; ТекущийОбъект в серверном событии — настоящий объект, переданный платформой.

  3. Отказ применяется только к событию с таким параметром. ПослеЗаписи и ПослеЗаписиНаСервере выполняются после завершения транзакции и её уже не отменяют.

Как проверить результат

  1. Проверьте указанную стандартную команду своей формы; сообщение или статус появляются в правильной стадии.

  2. При снятом Подтверждено старт / выполнение отменяется. Нулевая сумма отменяет запись в проверяющем обработчике; после записи статус лишь сообщает завершение.

Ожидаемый результат

Показан результат для собственных подготовленных объектов учебного согласования.

На что обратить внимание

  1. Все имена метаданных берутся из подготовки; в типовой конфигурации таких учебных объектов может не быть.

  2. Каждый блок вставляется в указанный модуль отдельно. Не вызывайте процедуру события вручную вместо реального действия платформы.

  3. Запись и старт относятся только к новым учебным объектам. Пример не выполняет обработку реальных согласований и не гарантирует правильность чужого маршрута.

  4. ПриЗаписиНаСервере находится в транзакции; перед серверной записью выполняется другая стадия ПередЗаписьюНаСервере вне транзакции.

  5. У формы задачи ОбработкаАктивации не имеет параметра СтандартнаяОбработка: показанный обработчик задачи только регистрирует событие и не утверждает, что отменяет стандартную активацию.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.