Имя: Пароль:
1C
 
Как во время выполнения обработки обновлять форму
0 Velber
 
24.07.09
00:30
Во время работы обработки, ее форма не изменяется и только после выполнения обработки изменяет все данные.
Как во время ее выполнения обновлять форму?
1 Velber
 
24.07.09
00:30
Пробовал через Форма.Обновить(1) но все равно не обновляется.
2 Ёпрст
 
гуру
24.07.09
00:30
Форма.Обновить(0)
3 Ёпрст
 
гуру
24.07.09
00:31
(1) текст в студию..
4 Стрелок
 
24.07.09
00:31
Форма.Обновить(1)

(2) стыдно не знать
5 Один С
 
24.07.09
00:31
хочешь мультики показывать?
6 Velber
 
24.07.09
00:32
ну что-то подобное)
7 Стрелок
 
24.07.09
00:32
у меня на форме лог загрузки выводится вов время работы формы
8 Ёпрст
 
гуру
24.07.09
00:32
(4) Стыдно не знать ЧТО ?!
9 Velber
 
24.07.09
00:32
(7) а как это сделать?
10 Ёпрст
 
гуру
24.07.09
00:33
Нахрена взводить флаг модифицированности формы ?
11 Velber
 
24.07.09
00:33
просто во время выполнения цикла, все висит, как дать команду форме обновиться?
12 Ёпрст
 
гуру
24.07.09
00:33
(11) я знаю как, но лучше пусть (7) тебе ответит :)...
13 Velber
 
24.07.09
00:34
Может вы там порешаете свои отношения потом, действительно нужно.
14 Стрелок
 
24.07.09
00:34
(13) ты не указывай чего и как нам делать. а слушай и жди.... щас код нарою
15 Velber
 
24.07.09
00:36
Почему все такие злые... жесть просто
16 Ёпрст
 
гуру
24.07.09
00:36
(15) Кто злой ?
17 Стрелок
 
24.07.09
00:36
Процедура ПровестиДокументы()
   Если Вопрос("Провести документы?","Да+Нет")="Нет" Тогда
       Возврат;
   КонецЕсли;
   
   ХодЗагрузки=ХодЗагрузки+
   ТекущееВремя()+" Начало проведение документов"+РазделительСтрок;
   Форма.Обновить(1);
   
   Док=СоздатьОбъект("Документ");
   
   Документы.ВыбратьСтроки();
   Пока Документы.ПолучитьСтроку()<>0 Цикл
       Док.НайтиДокумент(Документы.Документ);
       Если Док.Провести()=1 Тогда  
           Документы.Проведен=2;
           ХодЗагрузки=ХодЗагрузки+
           ТекущееВремя()+" Документ "+СокрЛП(Документы.Документ)+" успешно проведён"+РазделительСтрок;
       Иначе
           ХодЗагрузки=ХодЗагрузки+
           ТекущееВремя()+" Документ "+СокрЛП(Документы.Документ)+" провести не удалось"+РазделительСтрок;
       КонецЕсли;    
   КонецЦикла;
   
   ХодЗагрузки=ХодЗагрузки+
   ТекущееВремя()+" Проведение документов завершено"+РазделительСтрок;
   Форма.Обновить(1);
   
   Этап=4;
   
КонецПроцедуры


Процедура СоздатьОбязательства()
   ФинОбязательства_=СоздатьОбъект("ТаблицаЗначений");
   ФинОбязательства_.Загрузить(ФинОбязательства);
   ФинОбязательства_.Свернуть("НомерРегистрации,ЕДРПОУ,КЭКВ,РСчет,ОрганизацияСтр,Организация,ДатаЗанесения","Сумма");
   // грузим юр.обязательства
   ХодЗагрузки=ХодЗагрузки+
   ТекущееВремя()+" Начало загрузки юридических обязательств"+РазделительСтрок;
   Форма.Обновить(1);
   Если ЮрОбязательства.КоличествоСтрок()<>0 Тогда
       Если Вопрос("В таблице уже существуют загруженные данные"+РазделительСтрок+
       "по юридическим обязательствам. Вы действительно продолжать?","Да+Нет")="Нет" Тогда
           Возврат;
       Иначе
           ЮрОбязательства.УдалитьСтроки();
       КонецЕсли;
   КонецЕсли;    
       
   ФинОбязательства_.ВыбратьСтроки();
   Пока ФинОбязательства_.ПолучитьСтроку()<>0 Цикл
       ЮрОбязательства.НоваяСтрока();
       ЮрОбязательства.НомСтр=ЮрОбязательства.КоличествоСтрок();
       ЮрОбязательства.НомерРегистрации=ФинОбязательства_.НомерРегистрации;
       ЮрОбязательства.ДатаЗанесения=ФинОбязательства_.ДатаЗанесения;
       ЮрОбязательства.ЕДРПОУ=ФинОбязательства_.ЕДРПОУ;
       ЮрОбязательства.КЭКВ=ФинОбязательства_.КЭКВ;
       ЮрОбязательства.Организация=ФинОбязательства_.Организация;
       ЮрОбязательства.ОрганизацияСтр=ФинОбязательства_.ОрганизацияСтр;
       ЮрОбязательства.Сумма=ФинОбязательства_.Сумма;
       ЮрОбязательства.ДатаДо=ФинОбязательства_.ДатаЗанесения;
   КонецЦикла;  
   Форма.Закладки.ДобавитьЗначение("ЮрОбязательства","Юр.обязательства");
   ХодЗагрузки=ХодЗагрузки+
   ТекущееВремя()+" Окончание загрузки юридических обязательств"+РазделительСтрок;
   Форма.Обновить(1);
   
   ХодЗагрузки=ХодЗагрузки+
   ТекущееВремя()+" Начало загрузки платёжных поручений"+РазделительСтрок;
   Форма.Обновить(1);
   ФинОбязательства.ВыбратьСтроки();
   Пока ФинОбязательства.ПолучитьСтроку()<>0 Цикл
       Платежки.НоваяСтрока();
       Платежки.НомСтр=ФинОбязательства.НомСтр;
       Платежки.НомерРегистрации=ФинОбязательства.НомерРегистрации;
       Платежки.ДатаЗанесения=ФинОбязательства.ДатаЗанесения;
       Платежки.ЕДРПОУ=ФинОбязательства.ЕДРПОУ;
       Платежки.КЭКВ=ФинОбязательства.КЭКВ;
       Платежки.Организация=ФинОбязательства.Организация;
       Платежки.РСчет=ФинОбязательства.РСчет;
       Платежки.ОрганизацияСтр=ФинОбязательства.ОрганизацияСтр;
       Платежки.Сумма=ФинОбязательства.Сумма;
   КонецЦикла;
   Форма.Закладки.ДобавитьЗначение("Платежки","Плат.поручения");
   ХодЗагрузки=ХодЗагрузки+
   ТекущееВремя()+" Окончание загрузки платёжных поручений"+РазделительСтрок;
   Форма.Обновить(1);
   Этап=2;
КонецПроцедуры

ХодЗагрузки - переменная модуля. на форме текстовое поле в формуле которого написано ХодЗагрузки
18 Стрелок
 
24.07.09
00:36
(15) тебе просто показалось ;)
19 Стрелок
 
24.07.09
00:38
(10) флаг модифицированности вызывает обновление формы если юзать текстовый реквизит так как указано в 17 то при этом он появится на экране


если юзать реквизит формы и ему присваивать значение(не через форму) то изменения на форме станут видны только после обновления картинки - т.е. чаще всего в конце работы обработки
20 Ёпрст
 
гуру
24.07.09
00:39
(19) Праильно, но нафига там флаг модифицированности в 1 при этом затачивать?
21 Ёпрст
 
гуру
24.07.09
00:39
:)
Усё и без модифицированности работает..
22 Ёпрст
 
гуру
24.07.09
00:41
(0) если интересно,что еще можно сделать на форме, можешь посмотреть :
http://infostart.ru/projects/3276/
http://infostart.ru/projects/2573/
23 Стрелок
 
24.07.09
00:41
(20) а ты попробуй без - изменения на форме появятся только после отработки процедуры. так в 1С задумано (я с Альфом консультировался). форма обновляется либо по взводу флага этого либо при появлении надписи "Для подсказки нажмите Ф1" т.е. когда отработала процедура от начала до конца
24 Velber
 
24.07.09
00:41
Огромное СПАСИБО!!! Все получилось!
25 Стрелок
 
24.07.09
00:42
(24) как?
26 Ёпрст
 
гуру
24.07.09
00:42
(23)всё может быть..я обходился другими методами..
27 Стрелок
 
24.07.09
00:43
(26) какими?
28 Velber
 
24.07.09
00:46
Просто для текстового поля убрал идентификатор и оставил только в формулу
29 Стрелок
 
24.07.09
00:47
ааааа ну я же говорил. фишка именно в этом
30 Ёпрст
 
гуру
24.07.09
00:48
(27) через ложное закрытие или ПриПовторномОткрытии можно сделать

Хотя, твоя не совсем правда..Слепил такой код:

Пока  1=1 Цикл
  Форма.ТекстНаФорме.Заголовок(ТекущееВремя());
  Форма.Обновить(0);
КонецЦикла;

усё работает :)
31 Velber
 
24.07.09
00:48
))))
32 Velber
 
24.07.09
00:49
Спасибо сильно выручили! Вы только не деритесь)))
33 Стрелок
 
24.07.09
00:54
(30) читаем русские буквы включив мозг

ЗЫ кстати - часики на форме не так делаются... красивее и главное - в фоне работают. а не в цикле бесконечном
34 Ёпрст
 
гуру
24.07.09
00:57
(33) Ё.. я просто тебе показал, что всё работает без модифицированности формы..
А по-поводу часиков - у Рупора на сайте есть прекрасная демонстрашка..
35 AcaGost
 
24.07.09
00:58
ОбработкаОжидания(<?>);
36 Стрелок
 
24.07.09
00:59
(34) ага именно про рупоровский метод я и говорю.....

а обновление формы без модификации....

сделай на форме два реквизита типа дата и попробуй их поменять в ходе работы процедуры.... сильно удивишься разнице между Обновить(0) и Обновить(1)
37 Стрелок
 
24.07.09
00:59
(35) ну что ты.... РасчитатьРегистрыНа(<?>)
38 Ёпрст
 
гуру
24.07.09
01:04
(36) и чего ? Реквизиты диалога типа едит не обновятся вообще, хоть с форма.Обновить(0), хоть с Форма.Обновить(1) ...пока цикл до конца не доедет..
Если только цикл не делать другими методами..
39 Стрелок
 
24.07.09
01:04
(38) если сделать Обновить(1) то обновятся сразу ;)
40 Стрелок
 
24.07.09
01:05
(+39) поправка - если это будет ДО цикла или запроса

я так понимаю цикл и запрос грузят систему хорошо и не остаётся ресурсов на он-лайн обновление формы. а вот всё остальное позволяет компу "найти время" для обновления формы
41 Ёпрст
 
гуру
24.07.09
01:06
(39) Ха.. но автору то нужно - во время цикла..!
:)
Так что с форма.Обновиьт(1) ты явно погорячился :)
42 Ёпрст
 
гуру
24.07.09
01:07
Можно сделать и в диалогах типа edit ... если отдать отрисовку , например в ложное закрытие формы..
43 Стрелок
 
24.07.09
01:08
(41) не погорячился. в цикле обновляется через текстовый реквизит с формулой
44 Стрелок
 
24.07.09
01:08
в цикле не работает обновление реквизитов формы
45 ZDenis
 
24.07.09
01:14
(43) но через текстовый реквизит с формой обновляется и с Обновить(0) =))
46 Стрелок
 
24.07.09
01:16
(45) далеко не всегда
47 Стрелок
 
24.07.09
01:16
(+46) закономерности не выявил но для надёжности всегда ставлю 1
48 Ёпрст
 
гуру
24.07.09
01:16
(44) работает :)
http://webfile.ru/3793988
49 Стрелок
 
24.07.09
01:19
(48) конечно работает. метода рупора в чистом виде... отчепись ;)
50 Ёпрст
 
гуру
24.07.09
01:20
(49) не.. у Рупора там через повторное открытие сделано..
51 Стрелок
 
24.07.09
01:25
(50) дащаз.... я знаю и юзаю методу через псевдозакрытие как раз....
52 ZDenis
 
24.07.09
01:25
У меня и так работает, все обновляется
http://webfile.ru/3793999
53 ZDenis
 
24.07.09
01:26
52 без закрытия и с форма обновить(0)
54 Стрелок
 
24.07.09
01:29
(52) а что ещё кроме бесконечного обновления формы выполнится может? задача то другая - вывести параллельное обновление формы и полезную работу
55 Cthulhu
 
24.07.09
01:47
тюблин...
Дитер, харош триндеть.
Всю жизень обновляю как Ёпрст показал - назначением текстовому рекыизиту заголовка и форма.обновить(0), для отражения процесов, для прогресс-бара, и даже екзотику для пробы - в функции, вызываемой из запроса... все работает...
шо ты дойеппался до формулы...
56 Стрелок
 
24.07.09
01:48
(55) пшёл в пень. кто ещё до кого докапался ;)

каждый делает так как удобно.... я делаю так. но самое смешное что у автора темы по ёпрсту и тебе - не сработало а по мне - сработало. так что... иди хава
57 Стрелок
 
24.07.09
01:48
иди хавай мозг другим ;)
58 Cthulhu
 
24.07.09
01:51
(56): тычотупой?.. это ты тут истеришь и холивор на пустом месте разводишь, а у меня все спокойно работает как надо (несмотря на то что я "с АЛьФом" не "консультировался")))))
(57): намекаеш шо у тя пожblвиццо нечем?.. (шудго, не пенься)))
59 Стрелок
 
24.07.09
01:52
(55) слушая гуру. ты говоришь всегда пользовался методом ёпрста. не сложно будет мне кинуть обработку реальную интересно uzkyenm не на трёхстрочечный код а на реально полезную обработку например с прогресс-баром... только давай договоримся - она точно будет твоя а не чья то... хорошо? ну как земляк земляку . у тебя же их куева туча должно быть
60 Стрелок
 
24.07.09
01:53
(58) слышь ты многоликий анус..... иди у петросяна поучись... остряк-самоучка.
61 Cthulhu
 
24.07.09
01:56
(59): дятел, по слогам читай - я сказа КАК у Ёпрста, превожу для тупых: "как в посте (30)"...
(60): накуа мне питрасян если ты тут выступаеш не хуже )))))
62 Стрелок
 
24.07.09
01:57
(61) ті тупой? я тебе говорю - кидай свою обработку со своим методом обновления - мне интересно глянуть. если конечно они у тебя есть, в чём я сильно сомневаюсь....
63 Cthulhu
 
24.07.09
02:01
(62): та не, то ты тупой.. и говори так своей бабушке, дятел, у тя чо, и руки тоже отломали?.. у нас для нищих лакеев нет, те сказали как и что - тестируй сам, мне для тебя пур-прогрессбары из обработок, лопатящих мои данные, выковыривать никакого мотиву нет - ни интересу (ибо тупишь а тупые мне неинтересны) и даже скверносовишь...
64 Cthulhu
 
24.07.09
02:03
ЗЫ: спать_на.. завтро доругаемся..
65 Злопчинский
 
24.07.09
22:51
слабо чего-то понял.. в отпуске видать потомучто...
на форме есть реквизит строка неогр.длины многострочное поле ввода
куда во время выполнения обработки пишется лог
полеПротокола=ПолеПротокола+РасзделительСтрок+"очередная инфа"
Форма.Обновить();
- в одно обработке - все обновляеся;
- в другой аналогичной - только после окончания выполнения кода.
..
???
66 Ёпрст
 
гуру
24.07.09
23:00
(65) речь про текст на форме и реквизит диалога типа строка...