Как передать параметры из модуля формы в модуль объекта и обратно

Для этого можно воспользоваться двумя способами:

  • Через структуру ДополнительныеСвойства, которая есть почти у каждого объекта.
  • Через экспортную переменную модуля объекта

Например, модуль формы(РеквизитФормы имеет тип булево и равен Ложь):

//модуль формы документа:
 
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	//в обработчике ПередЗаписьюНаСервере в параметре ТекущийОбъект 
	//находится сам прикладной объект, а не данные формы. 
	//Соответственно доступны и ДополнительныеСвойства и 
	//экспортная переменная модуля объекта
	ТекущийОбъект.ДополнительныеСвойства.Вставить("РеквизитФормы", 
													РеквизитФормы);
	ТекущийОбъект.ПеременнаяМодуляОбъект = 1;
КонецПроцедуры
 
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	//в обработчике ПриЗаписиНаСервере в параметре ТекущийОбъект
	//тоже сам прикладной объект, а не данные формы. 
	//Тут можно получить какое-то значение из модуля объекта
	Сообщить("Форма: " + ТекущийОбъект.ПеременнаяМодуляОбъект); 
КонецПроцедуры

И модуль объекта:

//модуль объекта документа:
 
//экспортная переменная модуля объекта
Перем ПеременнаяМодуляОбъект Экспорт;
 
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	//проверяем есть ли в дополнительных свойствах ключ РеквизитФормы
	Если ДополнительныеСвойства.Свойство("РеквизитФормы") Тогда
		//получаем значение по ключу
		РеквизитФормы = ДополнительныеСвойства.РеквизитФормы;
		Сообщить("Перед записью: " + РеквизитФормы); 
	КонецЕсли;	
	//это экспортная переменная, которая была заполнена в модуле формы
	Сообщить("Перед записью: " + ПеременнаяМодуляОбъект);
КонецПроцедуры
 
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	//тут тоже самое
	Если ДополнительныеСвойства.Свойство("РеквизитФормы") Тогда
		РеквизитФормы = ДополнительныеСвойства.РеквизитФормы;
		Сообщить("Проведение: " + РеквизитФормы);
	КонецЕсли;
	Сообщить("Проведение: " + ПеременнаяМодуляОбъект);
	//меняем значение экспортной переменной, потом получим 
	//это значение в модуле формы
	ПеременнаяМодуляОбъект = 2;
КонецПроцедуры

При проведении документа получим такие сообщения:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями: