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

События · OnWriteAtServer

Возникает на сервере при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта) в базу данных, но до окончания транзакции записи.

Синтаксис

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

Расширение формы клиентского приложения для набора записей.ПриЗаписиНаСервере (Managed form extension for record set.OnWriteAtServer)

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

ПриЗаписиНаСервере (OnWriteAtServer)

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

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

<Отказ>
Тип: Булево.
Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись произведена не будет.
Значение по умолчанию: Ложь.

<ТекущийОбъект>
Тип: РегистрСведенийНаборЗаписей.<Имя регистра сведений>, РегистрНакопленияНаборЗаписей.<Имя регистра накопления>, РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии>, РегистрРасчетаНаборЗаписей.<Имя регистра расчета>.
Записываемый объект.

<ПараметрыЗаписи>
Тип: Структура.
Структура, содержащая параметры записи.
Описание:

Возникает на сервере при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта) в базу данных, но до окончания транзакции записи.

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

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение (сервер), мобильный автономный сервер.

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

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

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

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

Разобрать ПриЗаписиНаСервере на собственном управляемом наборе

Форма относится к конкретному собственному регистру, открывается с документированным параметром Отбор и работает только со своим новым UUID-ключом.

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

Модуль настоящей управляемой формы УчебныйНабор собственного независимого регистра сведений; точная клиентская / серверная директива указана в коде.

Подготовка

  1. В отдельной учебной конфигурации создайте свой независимый непериодический регистр сведений УчебныеНаборыФормы: измерение Ключ (Строка 40, Основной отбор Истина), ресурс Количество (Число 12.2 со знаком).

  2. Мастером создайте у этого регистра именно управляемую форму набора записей УчебныйНабор, сохранив её настоящий основной реквизит и таблицу строк. Не заменяйте её формой записи или произвольной общей формой.

  3. В УчебныйНабор добавьте реквизиты РазрешитьЗапись и ОтменитьВТранзакции (Булево), СчетчикСобытий (Число 10.0), СтатусУрока (Строка 200), выведите их на форму. Отдельный инициализатор относится к этой форме.

  4. В своей внешней обработке с управляемой формой создайте команду ОткрытьСвойНабор. Дополнительный блок открытия и серверной подготовки поместите только в её модуль; он создаёт свою запись и передаёт форме настоящий параметр Отбор.

  5. Открывайте форму только этой командой. Новый UUID-ключ ограничивает набор одной собственной записью; не открывайте без отбора рабочий регистр и не подставляйте чужое имя.

  6. В свойствах самой формы УчебныйНабор назначьте событие ПриЗаписиНаСервере основному обработчику. Элемент в эту сигнатуру не добавляется.

  7. Измените только собственную строку и используйте стандартную команду Записать. Для события чтения достаточно открыть форму указанной командой. Каждый урок самостоятельный: остальные учебные события не обязательны.

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    Если ОтменитьВТранзакции Тогда
        Отказ = Истина;
        Сообщить("Отмена записи своего набора до завершения транзакции");
        Возврат;
    КонецЕсли;
    Сообщить("Свой набор записан внутри ещё не завершённой транзакции");
КонецПроцедуры
Отдельная форма своей обработки: подготовить запись и открыть свой набор с отбором
&НаКлиенте
Процедура ОткрытьСвойНабор(Команда)
    СвойКлюч = ПодготовитьСвойНабор();
    ОтборНабора = Новый Структура("Ключ", СвойКлюч);
    ПараметрыОткрытия = Новый Структура("Отбор", ОтборНабора);
    ОткрытьФорму("РегистрСведений.УчебныеНаборыФормы.Форма.УчебныйНабор", ПараметрыОткрытия);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПодготовитьСвойНабор()
    СвойКлюч = Строка(Новый УникальныйИдентификатор);
    Набор = РегистрыСведений.УчебныеНаборыФормы.СоздатьНаборЗаписей();
    Набор.Отбор.Ключ.Установить(СвойКлюч);
    Запись = Набор.Добавить();
    Запись.Ключ = СвойКлюч;
    Запись.Количество = 3;
    Набор.Записать();
    Возврат СвойКлюч;
КонецФункции
Форма УчебныйНабор: инициализация собственных учебных реквизитов
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    РазрешитьЗапись = Ложь;
    ОтменитьВТранзакции = Ложь;
    СчетчикСобытий = 0;
    СтатусУрока = "Свой набор открыт по уникальному ключу";
КонецПроцедуры

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

  1. Создаём собственный регистр и настоящую управляемую форму набора мастером.

  2. Отдельная обработка создаёт одну свою строку и открывает форму с нужным отбором.

  3. Выполняем указанную команду / действие и различаем чтение, отказ до транзакции, событие внутри и событие после транзакции.

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

  1. С установленным ОтменитьВТранзакции сохранение собственной строки отменяется, хотя событие находится уже после записи объекта внутри транзакции.

  2. После отказа перечитайте свою строку: прежние данные сохранены. В обработчике нет вложенного Записать и нет утверждения, что транзакция уже зафиксирована.

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

Метод / событие показано на собственном реально открываемом наборе с точным контекстом и ограниченным отбором.

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

  1. Запись набора с пустым отбором опасна: урок открывает только свой набор по новому уникальному Ключ.

  2. Форма записи, форма набора записей и произвольная общая форма не имеют одинакового расширения.

  3. Код 1С при сборке HTML не исполнялся; учебные и рабочие записи агентом не менялись.

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

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

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

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

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