Имя: Пароль:
1C
1С v8
Режим немодальности.
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С тоже.