|
v7: Формекс. Процедура ПослеОткрытия() | ☑ | ||
---|---|---|---|---|
0
hovnokoder
05.09.14
✎
12:15
|
Здраствуйте уважаемые.
Есть такая задача: Нужно после открытия формы отчета подготовить входные данные (создать и заполнить таблицу значений). Только некрасиво получается. Если пишу заполнение таблицы значений в ПриОткрытии(), то форма не появляется до тех пор, пока ТЗ не заполнится. Если пишу заполнение таблицы значений в ПослеОткрытия(), то форма также не появляется. Что посоветуете? |
|||
1
hovnokoder
05.09.14
✎
12:32
|
В ПослеОткрытия() как-бы появляется форма, но это назвать формой никак нельзя: отдельные очертания реквизитов формы.
|
|||
2
akaBrr
05.09.14
✎
12:43
|
(0) обработчик ожидания советую
|
|||
3
Масянька
05.09.14
✎
13:14
|
(0) Попробуй - ФормаПриСоздании
|
|||
4
lavalit
05.09.14
✎
13:28
|
А большая ТЗ? Как вариант (при небольшой ТЗ), пока заполняется делать ее невидимой.. она просто тупо быстрее загрузится, чем если бы она была видимая на форме.
|
|||
5
varelchik
05.09.14
✎
14:37
|
(4)+100.
(0)И вообще когда заполняется ТЗ на форме идет постоянное ее обновление. Так что последуй слудуй совету (4) |
|||
6
hovnokoder
05.09.14
✎
14:41
|
(3) Это откуда? В описаннии формекса такого не нащел.
(4) (5) ТЗ не на форме. Да ТЗ относительно большая, примерно 10000 строк (6 колонок). |
|||
7
hovnokoder
05.09.14
✎
14:43
|
Проблема в том что пока ТЗ не сформировалась. Форма отчёта не открывается. Посторюсь: на форме нет ТЗ.
|
|||
8
hovnokoder
05.09.14
✎
14:45
|
В смысле пользователь нажимает. "Отрыть нужный отчет". И на экране ничего не происходит 2-3 сек. Потом появляется форма отчета
|
|||
9
Chum
05.09.14
✎
14:48
|
(8) нафига ТЗ из 10К строк на форме? Справочник материалов засасываешь?
|
|||
10
hovnokoder
05.09.14
✎
14:48
|
(9) Повторюсь еще раз: ТЗ нет на форме.
|
|||
11
hovnokoder
05.09.14
✎
14:56
|
Посоветуйте как быть? Как после того как откроется форма отчета, автоматически запустить определенную процедуру из этого же отчета.
|
|||
12
varelchik
05.09.14
✎
15:05
|
(11) Повторюсь?
А нафига такой объем? |
|||
13
hovnokoder
05.09.14
✎
15:26
|
(12) Какая разница?
Ладно опишу для чего. В отчете получаю некую нужную инфу. Так как отчет нужно формировать несколько раз с разными параметрами (скажем так для любого выбранного контрагента), есть смысл общую информацию для записать в ТЗ (чтобы каждый раз её не формировать - она какраз формируется 2-3 сек). В ТЗ (не на форме) заполняю общую входную информацию. И уже при формировании отчета использую эту ТЗ (что намного быстрее) |
|||
14
rinaty17
05.09.14
✎
15:29
|
13) чушь полная
|
|||
15
Злопчинский
05.09.14
✎
15:34
|
если заполнение данными идет 2-3 секунды - по любому придется ждать. и пофиг откуда запускать формирование.
|
|||
16
hovnokoder
05.09.14
✎
15:35
|
(14) чушь или нет, неважно. Я прошу конкретного совета: Как после того, как откроется форма отчета, запустить нужную мне процедуру.
Больше ничего. |
|||
17
hovnokoder
05.09.14
✎
15:39
|
(15) Вопрос в том, что когда откроется форма отчета, пользователю будет спокойнее - он будет знать что отчет он уже открыл (а так неизвестно выбрал он из меню нужный отчет или нет.
А чтобы раньше времени не пытался нажимать кнопки на форме отчета, я сделал Видимость(0) для елементов. |
|||
18
hovnokoder
05.09.14
✎
15:40
|
+ (15) 2-3 сек это только один раз при открытии формы, а потом уже мгновенно формируется отчет
|
|||
19
hovnokoder
05.09.14
✎
15:44
|
Где же ЁПРСТ. Он бы посоветовал гениальное решение (в прочем как всегда).....
|
|||
20
varelchik
05.09.14
✎
15:45
|
(19) Он тебе тоже самое что и остальные скажет.
|
|||
21
hovnokoder
05.09.14
✎
15:51
|
(20) "Чушь полная" точно не скажет.
Так что мне делать? Как после того, как откроется форма отчета, запустить нужную мне процедуру. Или такое невозможно в принципе? |
|||
22
hovnokoder
05.09.14
✎
15:58
|
Раз невозможно (или никто незнает как) решил сделать обходным путём: При откритии в переменную УжеСформированаТЗ пишу "0".
При первом формировании отчета (если УжеСформированаТЗ=0) формирую мою ТЗ и пишу УжеСформированаТЗ=1). При последующих формированиях отчета моя ТЗ уже повторно небудет формироваться. Тоисть отчёт будет формироваться относительно долго только первый раз. Как-никак выход для hovnokodera..... |
|||
23
varelchik
05.09.14
✎
16:08
|
(22)оригинальный подход.
вот только вы ни забывайте что база штука динамическая. и данные в ней постоянно меняются. интересно пользователь ну загрузил эту твою тз. а другой пользователь эти загруженные данные изменил. ваши действия при этом? |
|||
24
varelchik
05.09.14
✎
16:10
|
мда и ник соответствующий.
|
|||
25
hovnokoder
05.09.14
✎
16:14
|
(23) 1. Отчет в пользователя же небудет висеть открытим месяцами.
2. Данные, которые заполняются в мою ТЗ изменяются максимум 2 раза в месяц. |
|||
26
varelchik
05.09.14
✎
16:15
|
(0) вы б еще это в глобальную переменную загрузили эту тз.
тогда вообще проблем не будет. вот токо памяти 1С сожреть немерочно. |
|||
27
hovnokoder
05.09.14
✎
16:18
|
(26) я не настолько hovnokoder, чтобы так делать.
|
|||
28
Попытка1С
05.09.14
✎
16:22
|
(0) ты бы всю задачу озвучил для начала
|
|||
29
hovnokoder
05.09.14
✎
16:25
|
(28) Задача:
Как после того как откроется форма отчета, автоматически запустить определенную процедуру из этого же отчета. Остальное неважно. |
|||
30
Попытка1С
05.09.14
✎
16:33
|
(0) Какой формат базы у тебя?
(29) Это бред какой то а не задача. Изначально что хочешь сделать расскажи. |
|||
31
hovnokoder
05.09.14
✎
16:38
|
(30) такое как я озвучил в (29) в принципе возможно или нет?
|
|||
32
lavalit
05.09.14
✎
16:41
|
Вот может быть как еще вариант... Если уж надо "успокоить" пользователя... при открытии выведи какое нибудь предупреждение на пару сек.... во первых пользователь сразу поймет, что отчет запустился и второе пока предупреждение висит на экране табличка то все равно формируется а не ждет, пока погаснет предупреждение.
|
|||
33
lavalit
05.09.14
✎
16:42
|
через пару сек. предупреждение само погаснет а к этому времени и форма будет готова к отображению
|
|||
34
lavalit
05.09.14
✎
16:43
|
А если поставишь все это дело в проц "послеОткрытия" то на время заполнения таблицы появится рамочка самого отчета... ну конечно если она раскрыта на весь экран, то рамочка особо и не заметна будет... эт минус
|
|||
35
lavalit
05.09.14
✎
16:45
|
а в предупреждалку можно какой нибудь анекдот запузырить.. пока пользователь читает и ржет.. оно уже и готово))) и все счастливы))
|
|||
36
varelchik
05.09.14
✎
16:49
|
(35) а вот тут вы неправы.
Пока он будет читать ничего не будет выполнятся. пока он не нажметь ок. |
|||
37
hovnokoder
05.09.14
✎
16:51
|
(36) тоже самое хотел сказать.
Оставлю так как решил: Формирую ТЗ при первом выполнении отчета. |
|||
38
Попытка1С
05.09.14
✎
16:52
|
Формат базы какой, второй раз спрашиваю
|
|||
39
lavalit
05.09.14
✎
16:54
|
Валерчику. я проверял. ставлю предупреждение на 1 сек. и сразу цикл н азаполнение таблички на 10000 циклов.... благополучно предупреждалка переходит в режим обратного отсчета и так как всего 1сек она ждет окончания цикла, а если поставить скажем 5 сек ну с запасом. то ничего не ждет предупреждалка гаснет и на этом все))
|
|||
40
hovnokoder
05.09.14
✎
16:55
|
(38) формат базы - ДБФ
|
|||
41
Попытка1С
05.09.14
✎
16:58
|
надо просто при открытии запустить в фоне заполнение таблички другой обработкой например.
|
|||
42
lavalit
05.09.14
✎
16:58
|
Перем Т;
//******************************************* Процедура Сформировать() Для сч=1 По 100000 Цикл Т.НоваяСтрока(); Т.номер = сч; КонецЦикла; Сообщить("ок"); КонецПроцедуры //****************************************************************************** // Процедура ПослеОткрытия() Предупреждение("Ждите",1); Сформировать(); КонецПроцедуры Т = СоздатьОбъект("ТаблицаЗначений"); Т.НоваяКолонка("номер"); |
|||
43
lavalit
05.09.14
✎
16:59
|
Ну лишнее можно убрать))
|
|||
44
Garry1010
05.09.14
✎
17:01
|
(32)(36)А почему бы тогда не использовать ПоказатьОповещениеПользователя().
|
|||
45
lavalit
05.09.14
✎
17:01
|
Скажу более того, если заполнятьтаблицу после открытия с предупреждалкой, то форма отрисовывается на экране нормально, полностью с кнопками,барами,и прочими атрибутами.)))
|
|||
46
lavalit
05.09.14
✎
17:04
|
(44) Это некая процедура? она может и есть у кого то в моей конфиге такого нет.. поентому не скажу как она работает
|
|||
47
Garry1010
05.09.14
✎
17:26
|
(46) Хммм. Это вообще системная вещь - в синтакс-помощнике тоже не видите?
|
|||
48
КонецЦикла
05.09.14
✎
17:27
|
Не очень понятно, но можно сделать ТЗ не видимой до обновления/заполнения
|
|||
49
КонецЦикла
05.09.14
✎
17:29
|
Все понятно теперь...
Жениться Вам надо, батенька |
|||
50
hovnokoder
05.09.14
✎
17:52
|
(44) речь идет о 7.7
(48) ее вообще нет на форме. |
|||
51
Garry1010
05.09.14
✎
18:20
|
(50) 7.7? Упссс.
Хммм... странно, откуда в 7.7 ПослеОткрытия()? Вот её я не вижу. |
|||
52
lavalit
05.09.14
✎
18:30
|
(47) d 1C 7.7 нет такой системной вещи
|
|||
53
lavalit
05.09.14
✎
18:31
|
(51) После открытия можно использовать при наличии формекса
|
|||
54
Злопчинский
05.09.14
✎
22:06
|
делаем обычным образом штатно
. Процедура ЗаполнитьТЗ() Форма.ОбработкаОжидания("",0); //тут заполняем ТЗ КонецПроцедуры // Процедура ПриОткрытии() Форма.ОбработкаОжидания("ЗаполнитьТЗ",ТутТаймерВсекундахИлиМелисикундах); КонецПроцедуры |
|||
55
oslokot
05.09.14
✎
22:23
|
(51) ПослеСозданияФормы() формекс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |