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

События · BeforeWriteAtServer

Вызывается перед записью объекта на сервере. Можно отменить запись. Выполняется вне транзакции.

Синтаксис

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

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

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

ПередЗаписьюНаСервере (BeforeWriteAtServer)

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

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

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

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

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

Вызывается перед записью объекта на сервере.
Можно отменить запись. Выполняется вне транзакции.

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

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

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

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

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

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

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

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

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

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

Подготовка

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Введите -1 в собственную строку и запишите: серверная проверка отказывает до транзакции; платформа может показать исключение отказа.

  2. После исправления на 4 запись проходит. ТекущийОбъект — реальный набор, переданный платформой этой формы, а не произвольный входной параметр getter.

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

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

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

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

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

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

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

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

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

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

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