1 сентября 2011 г.

Модальное открытие формы в 1с 8. Как вернуть результат ОткрытьМодально()

Открытие формы модально - форма появляется на экране и блокирует другие окна, пока не будет закрыта.

МодФорма = ПолучитьФорму("ОсновнаяФорма",ВладелецФормы);
Результат = МодФорма.ОткрытьМодально();
Возникает проблема возврата результата, если форма не "для выбора"




В описании функции ОткрытьМодально() написано:


Форма.ОткрытьМодально (Form.DoModal)
ОткрытьМодально(<Таймаут>)

Параметры: <Таймаут> (необязательный)
Тип: Число. Время показа формы в секундах, по истечении которого форма будет закрыта с параметром закрытия Неопределено. Если значение параметра не задано, время показа не ограничено.
Значение по умолчанию: 0
 Возвращаемое значение:
Тип: Произвольный. Команда закрытия формы.
Если форма открывалась для выбора, возвращает выбранное значение (или массив значений, в случае разрешенного множественного выделения в открываемой форме). Если значение не выбрано, возвращается Неопределено. 
Описание:
Открывает форму в модальном режиме.

Я специально выделил фразу цветом. Получается: если форма определена "для выбора" - то она возвращает выбранные значения
В любых других случаях будет возвращаться - Неопределено. 


Что же делать, когда у нас  "обычная" форма (т. е. форма не определена как "для выбора") и мы хотим вернуть результат из формы после закрытия ?

В этом случае есть несколько решений:
1. Получив доступ к форме, мы можем вызывать различные функции и получать переменные. Естественно нужно, чтобы эти функции имели статус Экспорт
Например:  МодФорма = ПолучитьФорму("ОсновнаяФорма",ВладелецФормы);
          Результат = МодФорма.ОткрытьМодально();
РезультатФункции  = МодФорма.НашаФункция("Параметры функции");
Внимание!  Форма после закрытия продолжает существовать, и доступ к функциям с пометкой Экспорт можно получить.
......
// Функция вставляется в   Форму
Функция НашаФункция(ПараметрыФункцииЭкспорт
// Действия в функции
Возврат Результат  
КонецФункции
2.  Можно использовать команду ОповеститьОВыборе(ВозвращаемыйПараметр)
Эта команда позволяет вернуть из формы указанный параметр "ВозвращаемыйПараметр"


На  этом пока всё, может будут у кого замечания и дополнения ... пишите :)



5 комментариев:

  1. Это прекрасно, но есть вариант проще. У формы есть метод "Закрыть":

    Закрыть()
    Параметры:
    (необязательный)

    Тип: Произвольный.
    Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
    Значение по умолчанию: Неопределено
    Описание:
    Закрывает форму. Если закрываемая форма была открыта в модальном режиме, то метод может передать команду закрытия методу, открывшему форму.

    ОтветитьУдалить
  2. Первое решение - отличное. Возьму себе на заметку. СПАСИБО!!!

    ОтветитьУдалить
  3. Я хочу поделиться свидетельством о том, как г-н Бенджамин помог мне с займом в 2 000 000,00 долларов США для финансирования моего проекта по выращиванию марихуаны, я очень благодарен и пообещал поделиться этой законной финансирующей компанией с любым, кто ищет способ расширить свой бизнес-проект. .финансирующая компания. Любой, кто ищет финансовую поддержку, должен связаться с ними по адресу lfdsloans@outlook.com. Г-н Бенджамин также работает в WhatsApp + 1-989-394-3740, чтобы облегчить задачу любому заявителю.

    ОтветитьУдалить