|   |   | 
| 
 | Режим немодальности. | ☑ | ||
|---|---|---|---|---|
| 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С тоже.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |