|
v7: Как закрыть форму? | ☑ | ||
---|---|---|---|---|
0
Dolly_EV
02.04.13
✎
05:49
|
Из формы отчета перед формированием (отчета) открывается другая форма (не модально), проверочная... Как в случае успеха (можно формировать отчет дальше) закрыть эту проверочную форму? сейчас она торчит, пока отчет не сформируется...Модально проверочную открывать нельзя.
|
|||
1
Mikeware
02.04.13
✎
05:56
|
Дык конт.Закрыть() ?
где конт - контекст открытой формы... не? |
|||
2
Dolly_EV
02.04.13
✎
05:58
|
Делаю... висит, с ц у к о, пока отчет не отработает...
|
|||
3
ЧеловекДуши
02.04.13
✎
06:02
|
(2) Не могёт этого быть, если ты только тут же, после команды "конт.Закрыть()" запускаешь формирования отчета :)
|
|||
4
ЧеловекДуши
02.04.13
✎
06:02
|
+ Попробуй запускать свой отчет через ожидание :)
|
|||
5
mishaPH
02.04.13
✎
06:03
|
(2) какой отчет не отработает? проверочный или основной
|
|||
6
ЧеловекДуши
02.04.13
✎
06:08
|
+(2) Ну или как вариант, формируй отчет, после того, как закроют вторую форму, или как только она закроется.
Если ТипЗначения(КонтФормы2) = 100 Тогда // Она еще открыта:( Иначе //Ура, запускаемся :) КонецЕсли; |
|||
7
Dolly_EV
02.04.13
✎
06:10
|
В том и дело, что проверка происходит в начале процедуры формирования отчета
|
|||
8
Dolly_EV
02.04.13
✎
06:11
|
(6) не подойдет, т.к. в процедуре формирования отчета не виден Конт открытой проверочной формы (через класс, мутно всё)... хотя ... попробовать надо
|
|||
9
Dolly_EV
02.04.13
✎
06:14
|
(6) Если ТипЗначения()=100 Тогда
|
|||
10
Dolly_EV
02.04.13
✎
06:14
|
Тогда
ЧТО??? ))) |
|||
11
Dolly_EV
02.04.13
✎
06:15
|
(4) через Ожидание - это вообще жесть))) и так извратился дальше некуда
|
|||
12
mishaPH
02.04.13
✎
06:15
|
автор. в проверочном отчете ставь при открытии СтатусВозврата(0) тогда форма того отчета не будет открываться вообще
|
|||
13
Dolly_EV
02.04.13
✎
06:24
|
(12) Хех)) так ее НАДО открывать...Но потом, если все Ок, надо закрыть и формировать отчет, а если НЕ Ок - оставить висеть открытой и НЕ формировать отчет. Проблема еще в том, что чтобы проверить, что все Ок, открыть ее надо обязательно :-(... В общем не особо она и мешает, но юзера будет вводить в заблуждение, особенно на долгих отчетах - не понятно, формируется он или нет
|
|||
14
Рэйв
02.04.13
✎
06:26
|
(13)А какой признак, что все ОК? На кнопку на форме жмут или чего?
|
|||
15
Dolly_EV
02.04.13
✎
06:28
|
(14) нет, проверка прав доступа, фильтр отчета сравнивается с фильтром пользователя
|
|||
16
Рэйв
02.04.13
✎
06:29
|
(15)А зачем тебе для этого форму какую то открывать? Если на ней никто ничего не делает интерактивно(ну там не жмет кнопочки, не щелкает тумблеры) то и смысла в ней нет
|
|||
17
Dolly_EV
02.04.13
✎
06:35
|
(16) на ней показывается, какие ограничения у юзера установлены, чтоб он понял, какие фильтры в отчете ему установить, что сработало... Можно конечно в ПриОткрытии() не открывать, а про ограничения сообщать... так оно и было раньше. Но так - красивше - юзер наглядно видит, что надо в фильтрах поставить...
|
|||
18
mishaPH
02.04.13
✎
06:36
|
(13)
Процедура ПриОткрытии() СтатусВозврата(СформироватьОтчет()); КонецПроцедуры сформитровать делаешь функцией с возвратом 1 или 0 |
|||
19
Рэйв
02.04.13
✎
06:36
|
(17)Сделай еще красивше. Поставь все фильтры за него и не надо никакой формы открывать.
|
|||
20
Dolly_EV
02.04.13
✎
06:45
|
(19) Там разночтения возникнуть могут))) Т.е. у юзера фильтр по правам шире, чем ему в данный момент сформировать надо...
В общем, хочу, чтоб форма открывалась и закрывалась)) |
|||
21
Dolly_EV
02.04.13
✎
06:46
|
(18) не понял... или ты не понял?)
вот код урезанный: //====================================================================== Процедура Сформировать() // процедура в Отчете //** проверка доступа СписПроверок=СоздатьОбъект("СписокЗначений"); СписПроверок.ДобавитьЗначение("Номенклатура","Номенклатура"); // ... Если торгПроверкаДоступа(ОбъектМФ,СписПроверок)=0 тогда Возврат; КонецЕсли; // формируем отчет... КонецПроцедуры //====================================================================== Функция торгПроверкаДоступа(п_МФ,п_СписФильтров) Экспорт // Проверка возможности формирования отчета пользователем по элементам справочников: // п_МФ - ОбъектМФ из проверяемого отчета ИЛИ СписокЗначений, содержащий Списки для проверки // п_СписФильтров - Список строк - проверяемых фильтров // Возврат 0 = нельзя, 1 = можно //** Получаем ограничения пользователя Юзер=СоздатьОбъект("Справочник.Пользователи"); Если Юзер.НайтиЭлемент(глПользователь)=0 Тогда Возврат 0; // нет юзера - вопиющий косяк КонецЕсли; ОбъектМФ=СоздатьОбъект("МножественныйФильтр"); спМФ=СоздатьОбъект("СписокЗначений"); спМФ.Установить("НеОткрыватьФорму",1); //Вот так все Ок, но форма совсем не открывается, даже когда надо :-( спМФ.Установить("ЗаголовокФормы","Ограничения пользователя: "+СокрЛП(Юзер.Наименование)); спМФ.Установить("ЗаголовокФормыЗамещать",0); спМФ.Установить("НЕДоступностьФормы",1); //спМФ.Установить("Модально",1); ОбъектМФ.Открыть(0,спМФ); // Вот здесь открывается форма! // Далее - получение списков фильтров Юзера ОбъектМФ.Добавить("Справочник.Номенклатура","Номенклатура","Номенклатура",""); // ... ОбъектМФ.мфФлагХранения=1; ОбъектМФ.ВосстановитьЗначенияМФ(Юзер.ТекущийЭлемент()); //** ПРОВЕРЯЕМ лРеж=1; Если СписТовНадо=1 Тогда Если торгПроверкаДоступаПроверкаСписка(Юзер,СписТов,СпТов,"Номенклатура")=0 Тогда лРеж=0; КонецЕсли; КонецЕсли; Если СписКлнНадо=1 Тогда Если торгПроверкаДоступаПроверкаСписка(Юзер,СписКлн,СпКлн,"Контрагенты")=0 Тогда лРеж=0; КонецЕсли; КонецЕсли; Если СписТПНадо=1 Тогда Если торгПроверкаДоступаПроверкаСписка(Юзер,СписТП,СпТП,"Проекты")=0 Тогда лРеж=0; КонецЕсли; КонецЕсли; Если СписСклНадо=1 Тогда Если торгПроверкаДоступаПроверкаСписка(Юзер,СписСкл,СпСкл,"Склады")=0 Тогда лРеж=0; КонецЕсли; КонецЕсли; Если СписТПДопНадо=1 Тогда Если торгПроверкаДоступаПроверкаСписка(Юзер,СписТПДоп,СпТПДоп,"Проекты (дополнительно)")=0 Тогда лРеж=0; КонецЕсли; КонецЕсли; Если лРеж=1 Тогда ОбъектМФ.Конт.Форма.Закрыть(0); // вот здесь прога НЕ ждет и срабатывает далее... и форма висит, пока не сформируется отчет... Иначе Возврат 0; КонецЕсли; //если не выкинули с "0" раньше, значит все Ок - можно по всем статьям Возврат 1; КонецФункции //торгПроверкаДоступа |
|||
22
Рэйв
02.04.13
✎
06:50
|
(20)Имхо красивше будет не форму открывать, а добавить закладку. Захотел - зашел посмотрел, не захотел, не зашел - так запускай
|
|||
23
Dolly_EV
02.04.13
✎
06:56
|
(22) в отчеты - закладку с правами? не не гут... и писанины много
|
|||
24
mishaPH
02.04.13
✎
06:56
|
(22) Действительно зпчем лепить 2 отчета вообще. Если один проверочный. Сделай проверку в текущем отчете
|
|||
25
Рэйв
02.04.13
✎
06:57
|
(23)Твоя задумка вообще не гуд, что ж теперь:-)
|
|||
26
Dolly_EV
02.04.13
✎
06:59
|
В общем нет мыслей больше?... тогда не бум вообще форму открывать
|
|||
27
Рэйв
02.04.13
✎
07:01
|
Самое правильное в твоем случае- это давать выбирать только разрешенный набор фильтров. Т.е. не юзер думает что ему можно выбрать, а ты даешь выбрать только то что надо
|
|||
28
Рэйв
02.04.13
✎
07:01
|
А все остальное - не гуд, с какой стороны не посмотри:-)
|
|||
29
Dolly_EV
02.04.13
✎
07:11
|
(28) Не только давать выбирать, но и заставлять выбирать, если ничего не выбрано... ну и фильтр в 4-х состояниях (вкл/искл/пусто/НЕпусто) - только "вкл"
все остальное - это уж на вкус и цвет. |
|||
30
ЧеловекДуши
02.04.13
✎
07:20
|
(29) Если ты форму открываешь не модально, то при выводе твоей формы должен сразу запуститься отчет, или я чего то не уловил?
|
|||
31
big
02.04.13
✎
07:36
|
Процедура ПриПовторномОткрытии()
Если Форма.Параметр = "закрыть_нах"; Форма.Закрыть(); КонецПроцедуры |
|||
32
Dolly_EV
02.04.13
✎
07:44
|
(30) правильно уловил, только хочется, чтобы форма сначала закрывалась, а потом - формирование отчета. Это если можно. А если нельзя - форма открывалась - и висела до закрытия самим юзером (что работает)
|
|||
33
Dolly_EV
02.04.13
✎
07:45
|
(31) что это дает? где здесь повторное открытие?
|
|||
34
ЧеловекДуши
02.04.13
✎
07:52
|
(32) Тогда, зачем тебе вообще форма, если пользователь не уловит её информативность? :)
|
|||
35
Dolly_EV
02.04.13
✎
08:06
|
(34) если все Ок - оно и не надо.. информативности)) Особенность в том, что эта же форма используется для получения фильтров (ограничений) пользователя
|
|||
36
big
02.04.13
✎
08:10
|
(33) Эта процедура находится в твоей открываемой форме. Если её открыть ещё раз (т.е. из отчета) и передать в параметре команду, то можно отработать эту команду
|
|||
37
ЧеловекДуши
02.04.13
✎
08:39
|
(35) Дак, тогда и проверяй, свое "ОК" в процедуре "ПриОткрытии()" И если не ОК, то отобрази пользователю форму.
А если ОК, то и видеть её не надо :) Так же, если не Ок, то после можно воспользоваться кодом из (6) |
|||
38
Dolly_EV
02.04.13
✎
08:52
|
(37) -> (35) Особенность в том, что эта же форма используется для получения фильтров (ограничений) пользователя. Т.е. ее открыть надо по-любому :-((
|
|||
39
mishaPH
02.04.13
✎
09:10
|
(38) В таком случае не надо заниматься фигней в отдельными формама. переноси функционал в глобальник и используй везде, где надо.
|
|||
40
Dolly_EV
02.04.13
✎
09:28
|
Функция торгПроверкаДоступа(п_МФ,п_СписФильтров) Экспорт
как раз в глобальнике. ОбъектМФ - класс "МножественныйФильтр" Ладно. вопрос закрыт. не бум вообще открывать форму и все тут. |
|||
41
Ёпрст
02.04.13
✎
09:39
|
(0) це же элементарно, ватсон!
|
|||
42
Dolly_EV
02.04.13
✎
09:49
|
(41) колись?
|
|||
43
Dolly_EV
02.04.13
✎
10:24
|
(41) и ушел... элементарно, элементарно...
|
|||
44
Ёпрст
02.04.13
✎
10:45
|
принцип как тут - формула текста на форме
http://infostart.ru/public/16514/ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |