Имя: Пароль:
1C
1С v8
Обновление элементов управляемой формы
,
0 Lion-Killer
 
30.11.12
12:40
Задача: вывести на управляемую форму текущее время. Проблема: при присвоении реквизиту формы который показывает дату нового значения обновляется ВСЯ форма, то есть если пытаешься в другом элементе управления, например номенклатура ввести артикул, то текст в пропадает с периодичностью обновления даты. Как форме сказать, чтобы обновляла только элемент с текущей датой?
1 Богдан
 
30.11.12
12:44
А каким образом изменяется дата? Обработчик ожидания?
2 MSII
 
30.11.12
12:46
Форма на сервере не бегает случайно каждый раз, когда время меняется?
3 MSII
 
30.11.12
12:47
*на сервер
4 Lion-Killer
 
30.11.12
12:47

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   
   ПодключитьОбработчикОжидания("ОбновлениеДаты", 1);
   
КонецПроцедуры

&НаКлиенте
Процедура ОбновлениеДаты()
   
   ТекущаяДата = ТекущаяДата();
   
КонецПроцедуры
5 Cube
 
30.11.12
12:48
(0) Зачем? Задачу опиши...
6 MSII
 
30.11.12
12:50
В общем, посмотрел, так и есть - в элементах восстанавливаются значения реквизитов.
7 Богдан
 
30.11.12
12:50
Капитан, Вы?
8 Lion-Killer
 
30.11.12
12:51
Я привел упрощенный пример. Задача считать сколько прошло времени от начала продажи и выводить это в реальном времени пользователю.
9 Cube
 
30.11.12
12:52
(4) Это, типа, решение задачи (0) или что? Я что-то не догнал, к чему это?
10 MSII
 
30.11.12
12:52
(8) Отказаться от обработчика ожидания, вместо него обновлять время по событиям в форме. Вариант?
11 Богдан
 
30.11.12
12:53
Точно поможет отключать обработчик при начале работы с любым полем и подключать после окончания, но это, конечно, везде прописывать
12 dj_serega
 
30.11.12
12:55
вот обработка, в которой есть такая проблема.
http://rghost.ru/private/41904912/d126dec85ff9ba3e427567b6416c6647
13 MSII
 
30.11.12
12:56
(11) Да вообще отключить его нафиг. Если пользователь не проявляет никакой активности в форме, значит он ушел курить / на обед. Нафига тогда выводить ему время, обойдется.
14 Lion-Killer
 
30.11.12
12:58
(10) По событиям не вариант - это же время, оно должно обновляться каждую секунду
15 Cube
 
30.11.12
13:01
(14) Ты на вопрос (5) ответь
16 Cube
 
30.11.12
13:02
(15) А всё, вижу
17 MSII
 
30.11.12
13:03
(14) Вот из-за таких вещей продажники потом с ума сходят и из окон бросаются.
18 dj_serega
 
30.11.12
13:05
(15) ответ на (5) в (8). Пример я выложил на rghost (12)
19 Cube
 
30.11.12
13:05
Выла где-то на мисте подобная тема, там решили вопрос тем, что устанавливали не реквизит формы, а заголовок формы и там писали текущее время (или сколько времени прошло). При обновлении заголовка на экране отрисовывается стандратное окошко (внизу справа) с заголовком формы - типа контроль времени в отдельном окне.
20 Cube
 
30.11.12
13:05
(19) "Выла" = "Была" =))
21 acsent
 
30.11.12
13:06
(0) Таковая се ля ви. Так устроена 1с. Откажись от часов на форме
22 dj_serega
 
30.11.12
13:18
Кстати, не обновляется только реквизит с видом "Поле текстового документа".
23 Heckfy
 
30.11.12
13:19
(22) Так не пойдет:

Процедура Обработчик1()  
   //Объект.ПоследнееОбновление = ТекущаяДата();
   ЭтаФорма.Заголовок=ТекущаяДата();
КонецПроцедуры // Обработчик1


?
24 Lion-Killer
 
30.11.12
13:22
(23) Идея хорошая, но есть одно "но": вместе с текущим временем надо обновлять еще динамический список на форме для получения актуальных остатков.
25 Heckfy
 
30.11.12
13:29
(24) Как то это не правильно. Каждую секунду запрос к базе делать. Сто клиентов=сто запросов на сервер в секунду.... Не загнется ли он у тебя?
26 Lion-Killer
 
30.11.12
13:32
По другому нельзя - это теле магазин - у них очень дорогое эфирное время
27 Lion-Killer
 
30.11.12
13:33
Тем более что с данной обработкой работает только 1 человек
28 Heckfy
 
30.11.12
13:34
(26) А в чём тога "Но" в (24)? Запрос не успевает за секунду отрабатывать?
29 Богдан
 
30.11.12
13:34
Не уверен, что это возможно в управляемых формах, но я бы поискал в сторону вывода поля с HTML, где будет работать скрипт
30 Богдан
 
30.11.12
13:37
(29) ну или пытаться запускать из 1С самописную программку, которая будет где-то отображать время и закрывать её при закрытии формы
31 dj_serega
 
30.11.12
13:37
(28) Запрос успевает все делать. Данные формы должны обновляться максимально часто. Во время обновления нужно подбирать товары. А это невозможно, так как текст редактирования постоянно изменяется на уже записанное значение.
З.Ы.: за 5-10 секунд еще можно ввести артикул, но если форма обновляется за 1-2 секунды, это сделать нереально ;) Вот и вся соль :(
32 Cube
 
30.11.12
13:40
Я не понял, кто ТС Lion-Killer или dj_serega ???
33 Cube
 
30.11.12
13:41
В любом случае, добавь на форму кнопку "Обновить данные", убери обработчик ожидания и пусть давят на кнопку :)
34 dj_serega
 
30.11.12
13:42
(32) :) ТС Lion, а я в курсе событий :)
35 regniws
 
30.11.12
13:42
а зачем обновлять остатки, если один человек в базе?
36 Юрий Лазаренко
 
30.11.12
13:44
(21) У меня на форме обработки работает счетчик, форма не обновляется при этом. ЧЯДНТ?
37 Богдан
 
30.11.12
13:45
(36) ты не делаешь запрос по остаткам?
38 Lion-Killer
 
30.11.12
13:45
(35) Один человек работает с этой обработкой, а влияют на остатки еще несколько человек.
39 Lion-Killer
 
30.11.12
13:45
(36) Как реализовано?
40 regniws
 
30.11.12
13:47
(39) да просто выводить часы не в надпись, а в поле ввода, в чем проблема? Остатки получать в процедуре на сервере без контекста, на клиенте их уже выводить.
41 Heckfy
 
30.11.12
13:48
(40) (12) Качни, посмотри в чем проблема.
42 Heckfy
 
30.11.12
13:48
(40) Или свою выложи для примера.
43 regniws
 
30.11.12
14:04
эх вы... одноэснеги, про
ОбновлениеТекстаРедактирования = ОбновлениеТекстаРедактирования.НеИспользовать

все ессно забыли..
44 dj_serega
 
30.11.12
14:06
(43) http://uaimage.com/image/0df530e3 не помогает :(
45 regniws
 
30.11.12
14:10
(44) ты на каком поле поставил-то?
46 dj_serega
 
30.11.12
14:15
(45)и на реквизите формы, и на реквизите объекта. Обновляется.
Вариант (22) как извращение подходит. Также как вариант сделать прикрепленную форму (как подбор в типовой конфе).

З.Ы.: Правда не знаю есть ли такая возможность в УП.
47 regniws
 
30.11.12
14:18
48 dj_serega
 
30.11.12
14:20
(47) так текст редактирования же обновляется после подключения обработчика.
49 regniws
 
30.11.12
14:22
1С:Предприятие 8.2 8.2.17
Ничего не обновляется.
50 regniws
 
30.11.12
14:23
Режим совместимости какой?
51 Богдан
 
30.11.12
14:23
(43) ты прав, я проверил, все работает и часы запрос (в неконтекстной) и подбор не страдает
52 dj_serega
 
30.11.12
14:26
(50) Совместимость: Версия 8.2.13
Платформа: 8.2.16.368
53 regniws
 
30.11.12
14:28
документацию читать в россии не принято, да.. понимаю..

Расширение поля формы для поля ввода (Form field extension for a text box)
ОбновлениеТекстаРедактирования (EditTextUpdate)
Использование:

Чтение и запись.
Описание:

Тип: ОбновлениеТекстаРедактирования.
Управляет режимом обновления текста.
Значение по умолчанию Авто.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.
Примечание:

В режиме совместимости Версия8_2_13 не влияет на поведение поля ввода управляемой формы.
В остальных случаях влияет на то, в каких ситуациях будет обновляться текст в поле ввода при установке значения
54 dj_serega
 
30.11.12
14:31
(53) Спасибо. Работает.

З.Ы.: Что у вас в России читают/не читают я не знаю ;)
55 dj_serega
 
30.11.12
14:31
+(54) Документированный баг не считается багом...
56 regniws
 
30.11.12
14:32
(54) значит у вас не лучше
(55) это не баг и даже намека на баг нету
57 dj_serega
 
30.11.12
14:35
(56) Значит я был не прав, считая что такие примечания описывают невозможность решить проблему.
58 regniws
 
30.11.12
14:42
(57) такие примечания говорят о том, что в 8.2.14 было добавлено это свойство и 8.2.13 его не было, поэтому в 8.2.13 указанная проблема решиться не могла в принципе.
59 dj_serega
 
30.11.12
14:45
(58) спасибо за объяснение.
60 Lion-Killer
 
30.11.12
14:51
Дело было в режиме совместимости, проблема решена, спасибо.