Имя: Пароль:
1C
 
проблема с формой
0 vostdnn
 
27.06.11
10:29
Добрый день!
из документа открываю форму обработки. передаю через параметр ряд значений. при закрытии формы в документ возвращаю ряд значений.
сейчас потребовалось чтобы открываемая обработка каждую секунду выполняла некую процедуру и обновлялась.

кнопка на форме документа

Процедура ВзвеситьНаВесах()  
Записать();
ВзвешиваемыйДокумент=ТекущийДокумент();
   ОткрытьФорму("Обработка.ОбработкаВесов",ПерДан);  
КонецПроцедуры


в гМ

//весы
Процедура ОбработкаВесов() Экспорт
   ТЗВесы.УстановитьЗначение(ТЗВесы.КоличествоСтрок(),"Вес_1",Srv.Weight(0));
   ТЗВесы.УстановитьЗначение(ТЗВесы.КоличествоСтрок(),"Состояние_1",Srv.scstate(0));
   ТЗВесы.УстановитьЗначение(ТЗВесы.КоличествоСтрок(),"Вес_2",Srv.Weight(1));
   ТЗВесы.УстановитьЗначение(ТЗВесы.КоличествоСтрок(),"Состояние_2",Srv.scstate(1));
   Попытка
       ПерДан.Форма.обновить();
   Исключение
   КонецПопытки;
   
КонецПроцедуры


в конце ГМ
   ОбработкаОжидания("ОбработкаВесов", 1);

при данном коде открываемая обработка обновляется 1 раз в секунду, но не передается контекст открытого документа.
подскажите где пошаманить.
1 ДенисЧ
 
27.06.11
10:30
А с чего бы ему передаваться? Храни в глобальном переменной...
2 andrewks
 
27.06.11
10:31
ну и где у тебя что передаётся? не видно ничего
3 ДенисЧ
 
27.06.11
10:32
(2) передаётся через ОткрытьФорму("Обработка.ОбработкаВесов",ПерДан);  

Но кто такой этот пердан... хз...
4 andrewks
 
27.06.11
10:34
(3) вот и я об этом же
5 vostdnn
 
27.06.11
10:46
в ГМ
Перем ПерДан Экспорт;
6 vostdnn
 
27.06.11
10:51
При открытии обработки отладчик переменной перДан возвращает пустоту.
7 VasilyKushnir
 
27.06.11
11:01
(6) И почему я не удивлен....
Покажи пальцем, где ты в обработку передаешь контекст документа. И еще покажи список возвращаемых значений.  Посмотри в сторону
ПереданныйПараметр = Форма.Параметр;
8 vostdnn
 
27.06.11
11:14
(7)
обычно контекст документа передаю таким образом.

ОткрытьФорму("Обработка.ОбработкаВесов",Контекст);
но тогда не работает обновление формы, т.е. реквизит формы "вес" получает значение только при нажатии кнопки на форме, а мне нужно чтобы значения реквизита "вес" получало значение каждую секунду.
9 VasilyKushnir
 
27.06.11
11:17
ОткрытьФорму("Обработка.ОбработкаВесов",ТаблицаЗначений);
ТаблицаЗначений - содержит список передаваемых параметров, в том числе моешь туда запихнуть и контекст документа (ТаблицаЗначений.Конт = Контекст к примеру)
10 vostdnn
 
27.06.11
11:22
(9) попробую. спасибо.
11 VasilyKushnir
 
27.06.11
11:36
Но лучше Открывай с тремя параметрами (смотри ЖКК):
ОткрытьФорму (<Параметр1>, <КонтекстФормы>, < Параметр 3>...)
12 vostdnn
 
27.06.11
12:06
(11) ни фига все не работает.
либо передаю контекст, но не получаю вес каждую секунду, либо получаю вес каждую секунду, но не передаю контекст.

как заставить эту форму обновляться каждую секунду и выполнять процедуру в Гм?
13 VoditelKobyly
 
27.06.11
12:29
А зачем каждую секунду открывать форму? Может можно её открытой держать а уже внутри формы ОбработкаОжидания() в которой идет Форма.Обновить()?
14 Cthulhu
 
27.06.11
13:30
(13): ну, например, чтобы в "ПриПовторномОткрытии" модуля формы обработк каждую скунду ловить из параметра тошонадо и обрабатывать его такккакнадо.
15 vostdnn
 
27.06.11
13:43
(13) форма не открывается каждую секунду, а обновляется.
обработкаожидания вызывает процедуру глобального модуля - это очень хорошо.
если в этой процедуре прописать
   Форма.Обновить()
то возникает ошибка:
Форма<<?>>.Обновить();
{Глобальный модуль(4976)}: Переменная не определена (Форма)
16 vostdnn
 
27.06.11
13:50
ап!
17 Ёпрст
 
27.06.11
13:54
(15) ясен пень.

ЗЫ: нахрена для этой задачи что-то писать в глобальнике - хз.
Всё и так работает тупо через контекст формы.
Лепить процедуры и обработки ожидания в глобальнике нет необходимости.
18 Ёпрст
 
27.06.11
14:03
19 vostdnn
 
28.06.11
14:57
(18) спс за примерчик!!

почему что-то писать в глобальнике....
ОбработкаОжидания(<?>,)
Синтаксис:
ОбработкаОжидания(<ИмяПроцедуры>,<ИнтервалВызова>)
Назначение:
Инициирует периодический вызов процедуры глобального модуля с заданным интервалом времени.
Возвращает имя процедуры глобального модуля, которая назначена для периодического запуска (на момент до исполнения процедуры).
Параметры:
<ИмяПроцедуры> - необязательный параметр. Строковое выражение - имя процедуры глобального модуля, которая будет вызываться периодически с временным интервалом <ИнтервалВызова>. Тело процедуры <ИмяПроцедуры> должно быть написано разработчиком конфигурации в глобальном программном модуле. Если в качестве параметра передается 'пустая строка', то ранее запущенный процесс прекращается.


черным по-белому написано гнлобальном. не знал о таких недокоментированных возможностях 1Ц