PDA

Просмотр полной версии : Как правильно открыть вторую форму, рассчитав там данные и вбить в первую форму?



s1219257
27.11.2017, 21:20
Код первой формы
&НаКлиенте
Процедура РасчитатьВес(Команда)
Пар = Новый Структура ("Параметр1, Параметр2", Объект.Профиль, Объект.Материал);
ОткрытьФорму("ОбщаяФорма.Форма", Пар);
КонецПроцедуры




Вторая форма
+ Code


&НаСервере
Процедура ПриСозданииНаСервере(Отка� �, СтандартнаяОбработка)
Профиль = Параметры.Параметр1;
Материал = Параметры.Параметр2;
КонецПроцедуры


&НаКлиенте
Процедура ПрофильПриИзменении()
РасчетВеса();
КонецПроцедуры

&НаКлиенте
Процедура МатериалПриИзменении()
РасчетВеса();
КонецПроцедуры



&НаКлиенте
Процедура ДлинаПриИзменении(Элемент)
РасчетВеса();
КонецПроцедуры

&НаКлиенте
Процедура ШиринаПриИзменении(Элемен� �)
РасчетВеса();
КонецПроцедуры



&НаКлиенте
Процедура ВысотаПриИзменении(Элемен� �)
РасчетВеса();
КонецПроцедуры


&НаКлиенте
Процедура ДиаметрПриИзменении(Элеме� �т)
РасчетВеса();
КонецПроцедуры



&НаКлиенте
Процедура РасчетВеса()

Плотность = ПолучитьПлотность(Материа� �);
Сообщить(Вес);






// a = длина

// D = диаметр
// b = ширина

// h = высота
// l = длина



Если (Профиль = "Балка Двутавровая") Тогда
Сообщить("Введите только длину");
//Высота = "";

//Диаметр = "";

Вес = Плотность/8.650 * Длина;

ИначеЕсли (профиль = "Квадрат") Тогда
Сообщить ("Введите только длину и ширину");
Вес = Длина * Длина * Диаметр;

ИначеЕсли (профиль = "Круг") Тогда
Сообщить ("Введите только длину и диаметр");
//Ширина = "";

//Высота = "";

Вес = 3.14/4 * Диаметр * Диаметр * Длина * Плотность;

ИначеЕсли (профиль = "Полоса, лист") Тогда
Сообщить ("Введите только ширину, длину и высоту");;
//Диаметр = "";

Вес = Длина * Ширина * Высота* Плотность;

ИначеЕсли (профиль = "Уголок") Тогда
Сообщить ("Введите только длину, ширину и высоту");
//Ширина = "";

//Высота = "";

Вес = (Длина + Ширина - Высота) * Высота * Длина * Плотность;

ИначеЕсли (профиль = "Труба") Тогда
Сообщить ("Введите только длину, высоту и диаметр");
//Высота = "";

//Диаметр = "";

Вес = 3.14 * (Диаметр - Высота) * Высота * Длина * Плотность;

ИначеЕсли (профиль = "Швеллер") Тогда
Сообщить ("Введите только длину");
//Ширина = "";

Вес = Плотность/7.850 * Длина;

ИначеЕсли (профиль = "Шестигранник") Тогда
Сообщить ("Введите только длину, высоту и диаметр");
//Высота = "";

//Диаметр = "";

Вес = 0.866 * Диаметр * Диаметр * Длина * Плотность;



КонецЕсли;




КонецПроцедуры

&НаСервере
Функция ПолучитьПлотность(Профиль)
Возврат Профиль.Плотность;
КонецФункции





Но, есть пару проблем, почему-то не просчитываются поля Ширина и Длина и наконец, как после этого передать поле Вес в первую форму, где есть поле ВесФормы?

vlad420420
28.11.2017, 15:45
Первая форма.

ОткрытьФорму(
"НазваниеФормы",
ПараметрыФормы,
ЭтаФорма,
,
,
,
Новый ОписаниеОповещения("ЗдесьНазваниеПроцедурыКот ораяОбработаетТвоиЗначени я", ЭтотОбъект,Параметр),
РежимОткрытияОкнаФормы.Бл� �кироватьОкноВладельца);
вторая форма

&НаСервере
Процедура ПриСозданииНаСервере(Отка� �, СтандартнаяОбработка)
ПолучитьПараметр = Параметры.ТвойПараметр;
КонецПроцедуры

При закрытии возвращаешь параметр через метод "Закрыть()"