Имя: Пароль:
1C
1С v8
Передача значения из одной формы в другую
0 _stay true_
 
09.08.12
16:22
В одной обработке 2 формы. Код основной формы:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
     Рез=ПолучитьРазностьДат(ОбработкаОбъект.ЗаказНаряд);                  
Сообщить(Рез);

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

Хочу чтобы при нажатии "выполнить" вместо "сообщить",  "Рез" выводилась в виде надписи в произвольную форму при её открытии(уже создал саму форму) Пробовал метод Предупреждение, но в него не запихнешь функцию. Помогите кто может
1 Asmody
 
09.08.12
16:23
попробуй метод Оповестить
2 _stay true_
 
09.08.12
16:25
Это в основной форме, или в которую собрался выводить?
3 Rovan
 
гуру
09.08.12
16:27
(0) произвольная_форма.Открыть();
произвольная_форма.Надпись.Заголовок = "Тут ничего не написано !";
4 Asmody
 
09.08.12
16:27
в основной. в СП всё доходчиво написано
5 KindLion
 
09.08.12
16:34
На новой форме создаешь реквизит Рекв
Получаешь новую форму, пишешь:

НоваяФорма.Рекв = Результат;
НоваяФорма.Открыть();
6 _stay true_
 
09.08.12
16:51
Наверное, я немного неправильно объяснил
Я пробовал обойтись без создания формы с помощью метода Предупреждение - но в него к сожалению не запихнешь функцию. Нужно чтобы при нажатии на кнопку выполнить в обработке появлялось окно, в котором бы содержался результат функции(аналог метода предупреждение, только вместо текста вставить функцию).
7 Asmody
 
09.08.12
17:14
(6) в 1С нельзя функции в другие функции передавать, это вам не хаскель, только результат функции
8 KindLion
 
09.08.12
17:31
(0), (6)
А что мешает сделать так:

Рез=ПолучитьРазностьДат(ОбработкаОбъект.ЗаказНаряд);
Предупреждение(Рез);

?
9 _stay true_
 
10.08.12
09:20
Пробовал. Не получается. Вылезает окно, но пустое.
10 _stay true_
 
10.08.12
10:04
Ещё попробовал метод ОткрытьЗначение

ОткрытьЗначение(ПолучитьРазностьДат(ОбработкаОбъект.ЗаказНаряд));


но какой-бы заказ-наряд я не выбрал в обработке, всё время вылезает "Неопределено".

Код Функции получения разности дат

Функция ПолучитьРазностьДат(ЗН)Экспорт

   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    РАЗНОСТЬДАТ(ЗаказНаряд.ДатаНачала, ЗаказНаряд.ДатаОкончания, ДЕНЬ) КАК Разность
                  |ИЗ
                  |    Документ.ЗаказНаряд КАК ЗаказНаряд
                  |ГДЕ
                  |    ЗаказНаряд.Дата МЕЖДУ &Дата1 И &Дата2
                  |    И ЗаказНаряд.ВидРемонта = &ВидРемонта
                  |    И ЗаказНаряд.Автомобиль = &Авто
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    РАЗНОСТЬДАТ(ЗаказНаряд.ДатаНачала, ЗаказНаряд.ДатаОкончания, ДЕНЬ)";
                 
   Дата2 = ТекущаяДата();
   Дата1 = Дата2 - 365*24*3600;
   Запрос.УстановитьПараметр("Дата1", Дата1);
   Запрос.УстановитьПараметр("Дата2", Дата2);
   Запрос.УстановитьПараметр("ВидРемонта", Справочники.ВидыРемонта.НайтиПоНаименованию("Гарантия пр"));
   Запрос.УстановитьПараметр("Авто", ЗН.Автомобиль);

   РазностьДат = Запрос.Выполнить();
   Выборка = РазностьДат.Выбрать();
   СуммаДней = 0;
     Пока Выборка.Следующий() Цикл
      СуммаДней2 = СуммаДней + Выборка.Разность;

      Сообщить(СуммаДней2);
     
   КонецЦикла;


КонецФункции // ПолучитьРазностьДат()
11 KindLion
 
10.08.12
10:19
(9) ???? Посмотри отладчиком - есть ли в Рез какое-либо значение, какой тип этого значения, и что будет с этим значением после преобразования его в строку.
12 KindLion
 
10.08.12
10:24
(10) Посмотрел функцию.
Она смешная, уж извини.
Она ж у тебя ничего не возвращает.
Ясен пень, что будет неопределено.
Вот если ты напишешь в последней строке функции Возврат СуммаДней2 - то получишь что-либо хорошее. :)
13 _stay true_
 
10.08.12
10:32
KindLion

я в этой сфере новичок, неделю как курсы окончил)))
спасибо тебе за всё, будем пробовать!)
14 Ksandr
 
10.08.12
10:36
Не, надо как гуанокодеры - создать глобальную переменную в модуле сеанса, при нажатии кнопки выполнить писать туда данные, а при открытии второй формы читать :)
15 _stay true_
 
10.08.12
10:40
Для начала попытаюсь обойтись без создания второй формы
16 zladenuw
 
10.08.12
10:44
(0) так выводи в предупреждение результат твой функции и делов то
17 _stay true_
 
10.08.12
10:45
KindLion

Заработало!Спасибо тебе огромное!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.