Вход | Регистрация

1С:Предприятие ::

Метки: 

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

Я
   s1219257
 
27.11.17 - 21:18
Есть справочник (1 форма), пользователь выбирает 2 значения, материал и профиль, дальше эти данные передаются во 2 форму (общая форма)

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




Вторая форма


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


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

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



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

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



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


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



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

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

     




//        a = длина

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

        
        
КонецЕсли;




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

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





Но, есть пару проблем, почему-то не просчитываются поля Ширина и Длина и наконец, как после этого передать поле Вес в первую форму, где есть поле ВесФормы?
 
 
   nordbox
 
1 - 27.11.17 - 21:22
Ну вместо процедуры сделай Функцию которая рассчитывает и возвращает
Функция РасчитатьВес(Команда)
    Пар = Новый Структура ("Параметр1, Параметр2", Объект.Профиль, Объект.Материал);
Возврат Пар;
    КонецФнкции
   nordbox
 
2 - 27.11.17 - 21:23
Тока вот непонятно из твоего кода где тут расчет
Процедура РасчитатьВес(Команда)
    Пар = Новый Структура ("Параметр1, Параметр2", Объект.Профиль, Объект.Материал);
    ОткрытьФорму("ОбщаяФорма.Форма", Пар);
    КонецПроцедуры
   Tateossian
 
3 - 27.11.17 - 21:27
Оу, MRP на 1С?

Не понятно, куда там чего вводить нужно. В поля ввода чтоль? Сделай визардом, там будет лучше (пошаговый заполняльщик) с глобальной функцией ПоказатьВводЧисла.

При открытии передавай владельца/уид вызвавшей формы (ты опустил этот параметр), чтобы потом из целевой или по владельцу обратиться или методом Оповестить, тогда тебе уид лучше, чтобы одним из параметров передать его, чтобы форма-получатель идентифицировала оповещение
   Borteg
 
4 - 27.11.17 - 21:33
(0) см параметры открытьформу, там есть оповещение после закрытия
   Tateossian
 
5 - 27.11.17 - 21:36
(4) Параметр закрытия формы, открытой в модальном режиме. Не всегда это можно юзать. А еще точнее - никогда.
   FIXXXL
 
6 - 28.11.17 - 08:38
(5) какое модальное?

<ОписаниеОповещенияОЗакрытии> (необязательный)

Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана при закрытии формы со следующими параметрами:
<РезультатЗакрытия> - значение, переданное при вызове метода Закрыть открываемой формы,
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан, то по завершению никакая процедура вызвана не будет.
Используется только в управляемом приложении.


Список тем форума
Рекламное место пустует Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует