|
Режим немодальности. | ☑ | ||
---|---|---|---|---|
0
antihacker
21.01.15
✎
13:19
|
Всем привет !
Открываю форму документа.Далее вот так открываю форму обработки,передовая туда значения через парамтеры. Параметр = Новый Структура("ТекстПисьма",Реквизит2); ОткрытьФорму("Обработка.РедактироватьПисьмо.Форма.ФормаРедактирование",Параметр,,,ЭтаФорма.Окно,); Как видите, форма оработки открывается на текущеем окне. Так экономим пространство. Особенно если клиент из планшета открывает. Модальный режим запрещен. Форма ооткрывается и получает значение. Я редактирую эти значения. Как вернуть значение на исходную форму документа ? Везде пишут о модальных значениях. Так выглядит модули формы обработки &НаКлиенте Перем ФормаЗакрыта; &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если ФормаЗакрыта Тогда Возврат; КонецЕсли; ОписаниеОповещения = Новый ОписаниеОповещения("ОтветНаВопрос", ЭтаФорма); ТекстВопроса = "Закрыть окно редактирование ?"; Режим = РежимДиалогаВопрос.ДаНет; ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Режим); Отказ = Истина; КонецПроцедуры &НаКлиенте Процедура ОтветНаВопрос(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда Если ТекстРедактирован Тогда ОписаниеОповещения = Новый ОписаниеОповещения("ЗаписьМодифицированного", ЭтаФорма); ТекстВопроса = "Форма модифицированна, записать?"; Режим = РежимДиалогаВопрос.ДаНет; ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Режим); Иначе сообщить("Окно закрыт !"); //Записать(); ФормаЗакрыта = Истина; Закрыть(); КонецЕсли; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ЗаписьМодифицированного(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда сообщить("Текст сохранен !"); //Записать(); ФормаЗакрыта = Истина; Закрыть("Текст передан в главную форму !"); иначе сообщить("Текст НЕ сохранен !"); ФормаЗакрыта = Истина; Закрыть(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ФормаЗакрыта = Ложь; ТекстРедактирован= Ложь; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //сообщить(Параметры.Свойство("ТекстПисьма")); Письмо=Параметры.ТекстПисьма; ВходящийТекстПисьма=Параметры.ТекстПисьма; КонецПроцедуры &НаКлиенте Процедура ПисьмоПриИзменении(Элемент) ТекстРедактирован= Истина; КонецПроцедуры |
|||
1
Sj
21.01.15
✎
13:24
|
Оповещение
|
|||
2
antihacker
21.01.15
✎
13:31
|
Да да. Пробовал вот так.
Параметр = Новый Структура("ТекстПисьма",Реквизит2); Оповещение = Новый ОписаниеОповещения("ВводЗначенияЗавершение", ЭтотОбъект); ОткрытьФорму("Обработка.РедактироватьПисьмо.Форма.ФормаРедактирование",Параметр,,,ЭтаФорма.Окно, Оповещение); &НаКлиенте Процедура ВводЗначенияЗавершение(Результат,Параметры) Экспорт сообщить(Результат); Если Не Результат = Неопределено Тогда сообщить(Результат); КонецЕсли; КонецПроцедуры Но дальше как быть так и не понял |
|||
3
antihacker
21.01.15
✎
13:32
|
Но форма все же так открывается и получает значени япо параметрам
|
|||
4
Sj
21.01.15
✎
13:34
|
Оповестить("ОбновитьФорму", Новый Структура("ИмяЭлемента","ИзмененСписокСправочникаХранилищеДопИнформации"),мОбъектОтбора);
|
|||
5
Sj
21.01.15
✎
13:35
|
А в исходной форме ловишь на "Обработка оповещения"
|
|||
6
antihacker
21.01.15
✎
13:48
|
То есть на открытой форме обработки оповеститьи ловить на исходной форме ?
|
|||
7
antihacker
21.01.15
✎
14:02
|
Но как эторешает проблему о передаче знаяение открытой формы на исходную форму ?
|
|||
8
antihacker
21.01.15
✎
14:04
|
Все понял
|
|||
9
antihacker
21.01.15
✎
14:05
|
Спасибо ! Удачи !
|
|||
10
GROOVY
21.01.15
✎
14:06
|
А можно просто вызвать клиентсвую процедуру формы владельца и передать туда то, что надо.
|
|||
11
Провинциальный 1сник
21.01.15
✎
14:11
|
Я не могу понять, зачем 1с было героически бороться с модальностью, если модальные состояния ввода данных можно было реализовать в платформе. Без открытия модальных окон на уровне системы или браузера, раз уж это немодно. И не пришлось бы прикладные решения переписывать..
|
|||
12
antihacker
21.01.15
✎
14:18
|
Я согласен с 1С. Все идет к мобильным приложениям. А там модальные окна не работают. По этому исключая использования модалных приложении можно считать , что это приложение будет работать на планшетах. Одной пулей 2х зайцев.А так можно и удобно исопльзовтаь модальные окна. Тогда для планшетников пиши дублируй не модальные решения. А зачем ?
|
|||
13
Адский плющ
21.01.15
✎
14:20
|
Закрыть(РезультатРаботыФормы) - вот это и придет в результат обработки оповещения.
|
|||
14
Адский плющ
21.01.15
✎
14:22
|
А оповестить это фу.
(10) Подобная форма вообще не должна знать кто её владелец и какие у неё клиентские методы. |
|||
15
Адский плющ
21.01.15
✎
14:22
|
*у него
|
|||
16
GROOVY
21.01.15
✎
14:33
|
(13) А если я закрывать форму не хочу?
|
|||
17
Адский плющ
21.01.15
✎
14:36
|
(16) Зачем что-то передавать заблокированному формой владельцу до её закрытия?
|
|||
18
Провинциальный 1сник
21.01.15
✎
14:39
|
(12) Что мешало реализовать модальность интерфейса своими средствами, не вызывая модальных (всплывающих) окон?
|
|||
19
antihacker
21.01.15
✎
14:42
|
Провинциальный 1сник, зачем усложнять ?
|
|||
20
Адский плющ
21.01.15
✎
14:43
|
(16) Но если и решились на гм "нестандартное поведение", то можно выполнить не закрывая форму:
ВыполнитьОбработкуОповещения(ЭтотОбъект.ОписаниеОповещенияОЗакрытии, Результаты) |
|||
21
Провинциальный 1сник
21.01.15
✎
14:44
|
(19) Лучше чуть усложнить платформу, но упростить конфигурации)
|
|||
22
polosov
21.01.15
✎
14:46
|
(18) Думаю сделают. Там же просто надо замораживать интерфейс программы кроме небольшой области и отвечать на сообщения браузера, чтобы он не думал, что скрипт повис.
|
|||
23
Адский плющ
21.01.15
✎
14:46
|
(21) Это не 1С придумала. Браузеры для подключаемых библиотек тоже на асинхронные вызовы переходят. Ну и 1С тоже.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |