Имя: Пароль:
1C
1C 7.7
v7: Как закрыть модальное окно сразу же после открытия из него формы
, , ,
0 snaiper
 
17.12.12
12:36
Добрый день.
Есть обработка "Выбор из справочника по подстроке", которая, по понятным причинам, открывается обычно модально.

Обработка эта модифицирована, в частности, на её форме появилась кнопка, открывающая отчёт "Остатки ТМЦ", где в множественный фильтр автоматически добавляются все строки, найденные вызвавшей обработкой.

После открытия отчёта "Остатки ТМЦ" хочется закрыть форму обработки "Выбор...", чтобы она не мешала свернуть отчёт и работать с другими документами.

Код:
Процедура ПоКнопкеОстатки()
//...//
   Параметры.Установить("ТаблицаМФ", ТаблицаМФ);
   глОбновить = 0;
   Форма.Закрыть(0);
   ОткрытьФорму("Отчет.ОстаткиТМЦ", Параметры);
   Возврат;    
КонецПроцедуры

Не помогает, всё равно висит открытое, пока я не сформирую отчёт и не закрою форму. Тогда закрываются обе, как будто процедура ПоКнопкеОстатки() ждёт закрытия немодальной формы.
1 Kreont
 
17.12.12
12:38
ЭтаФорма.Закрыть();
2 Ёпрст
 
17.12.12
12:38
(0) любое открытие формы из модальной формы будет открыто так же модально, rtfm
3 Ёпрст
 
17.12.12
12:39
пок не закроешь модальную форму с отчетом по остаткам, твоя форма подбора не закроется
4 snaiper
 
17.12.12
12:43
(1) {Обработка.ВыборИзСправочникаПоПодстроке.Форма.Модуль(565)}: Переменная не определена (ЭтаФорма) :-(

(2) o'k, то есть без извращений (вроде отложенного открытия отчёта, в т.ч. через внешние файлы, обработки ожидания и ВК) эта эстетическая задача нерешаема?
5 Ёпрст
 
17.12.12
12:44
(4) убери модальность - делай что хочешь
6 Масянька
 
17.12.12
12:45
Процедура ПоКнопкеПолучитьЦены()

   Предупреждение("Закройте файл с прайс-листом.");

   Параметры = СоздатьОбъект("СписокЗначений");
   Параметры.ДобавитьЗначение(гТабВыборка,        "Данные");
   Параметры.ДобавитьЗначение(ДокументПрайсЛист,    "Прайс");

   ОткрытьФормуМодально("Отчет", Параметры, ".....\ПоискЦен.ert");
   Перерисовка();
   
КонецПроцедуры    // ПоКнопкеПолучитьЦены  

Поиск цен - код:
Перем РабочаяТаблица;
Перем ДокументПрайсЛист;
Перем МожноЗакрыть;

//******************************************************************************
Процедура Выполнить()


... тут происходит поиск    
   МожноЗакрыть = 1;
   
КонецПроцедуры    // Выполнить

//******************************************************************************
Процедура ПриОткрытии()
   
   МожноЗакрыть = 0;
   
   РабочаяТаблица        = Форма.Параметр.Получить("Данные");
   ДокументПрайсЛист    = Форма.Параметр.Получить("Прайс");
   
   Форма.Закрыть();
   
КонецПроцедуры    // ПриОткрытии

//******************************************************************************
Процедура ПриЗакрытии()
   
   Выполнить();
   СтатусВозврата(МожноЗакрыть);
   
КонецПроцедуры    // ПриЗакрытии
7 snaiper
 
17.12.12
12:53
(5) Спасибо.
(6) Спасибо. Значит, в любом случае закрывать поиск вручную.
8 Ёпрст
 
17.12.12
12:53
(6) какая наивность
9 Масянька
 
17.12.12
12:55
(8) Хорош наезжать. Чего не так-то?
10 Ёпрст
 
17.12.12
12:57
(9) см (2)
11 Масянька
 
17.12.12
12:59
(10) Я знаю, автор тоже (вроде) понял.
12 Ёпрст
 
17.12.12
13:00
(11) ну и ? чего тогда за бредятинку в (6) советуешь ?
:)))
13 Ёпрст
 
17.12.12
13:00
форма с подбором не закроется, пока отчет по останкам не закроет.
14 Масянька
 
17.12.12
13:04
(12) Почему бредятинка?
15 Ёпрст
 
17.12.12
13:05
подумай.
16 Cthulhu
 
17.12.12
13:07
(15): судя по разжеванному в (10) и последовавшему вопросу (14) - не в коня корм.
17 Масянька
 
17.12.12
13:09
(15) Я код кинула после твоего поста про НЕ модальность. Сам и думай.
18 Ёпрст
 
17.12.12
13:14
(17):))
Да ?
и тут же в коде предлагаешь сделать это ?
ОткрытьФормуМодально ?
:)
19 Масянька
 
17.12.12
13:16
(18) Мне - так нужно (пока открыта форма - идет поиск, поиск прошел - форма закрылась). Автор почитает и может чего полезного почерпнет для своей задачи.
20 Ёпрст
 
17.12.12
13:17
Автор, тебе поможет следующее:

в глобальничке,
в Процедура глПоискПоПодстроке(Конт, СписокПолей = "") Экспорт

в СписокПараметров передаешь ышо один параметр, например Вася, в самой поделке, по кнопке останки в Вася пихаешь, что он Федя и закрываешь форму, далее в этой проце, после ОткрытьФормуМодально пишешь код, что если Вася = Федя, то ОткрытьФорму с отчетом по останкам и передаешь в отчет параметром полученные найденные элементы из обработки подбора..

Наслаждайся.
21 ADirks
 
17.12.12
19:41
А кстати, если окно перед открытием другой формы сделать немодальным (FormEx'ом)? Не пробовал, но вдруг?
22 ADirks
 
17.12.12
19:47
не, гоню... это для всего 1С-ного окна
23 snaiper
 
18.12.12
10:54
(19) Безусловно! Ознакомился с интересом :)

(20) Что же, как я и думал в (4), придётся открывать отчёт отложенно (т.е. из глПоиска...). Кстати, тоже не самый плохой вариант. Так и сделаю.

(12), (16) за что ж вы так с девушкой? Она ведь как лучше хочет.
24 Ёпрст
 
18.12.12
11:06
(23) мот это бородатый дядька ?
нам отсюда не видно.
25 Cthulhu
 
18.12.12
21:51
(24): ну, или как это бывает в интернетах с грудастыми стройными блондинками, и вовсе - старый, толстый, потный и лысый педофил, ммм?..
26 snaiper
 
19.12.12
12:37
(24) (25) Предпочитаю об этом не думать, когда разговариваю с человеком. Просто неудобно как-то сразу стало. Ладно, тему можно закрыть.