1с форма выбора не возвращает значение выбора

Обновлено: 04.07.2024

При закрытии формы может потребоваться вернуть из нее некоторые значения. Например, при нажатии на кнопку основной формы, открывается другая произвольная форма. После выполнения необходимых действий дополнительная форма закрывается, а в основную передается значение.

Открытие формы

Необходимо модально открыть произвольную форму с помощью функции ОткрытьФормуМодально().

Закрытие формы с возвратом значения

У открытой формы необходимо вызвать встроенный метод Закрыть(), который на вход принимает возвращаемое значение. Тип возвращаемого значения произвольный. В данном примере возвращается структура.

Статья решает задачи:

  • Как передать параметр в открываемую программно форму;
  • Как вернуть параметр из открываемой программно формы;

Исходные данные:

  • Имеется общая форма — «НашаФорма», с реквизитами:
    • «МножительА» — заполняется при открытии формы, по значению переданного параметра;
    • «МножительБ» — заполняется вручную;
    • программно открыть форму «НашаФорма».
    • передать в форму параметр, по значению которого заполнить реквизит «МножительА»;
    • вручную заполнить реквизит формы «МножительБ»;
    • умножить «МножительА» на «МножительБ» и результат вернуть в исходную процедуру;

    1. Пишем процедуру по открытию «НашаФорма» и передаче в нее параметра «МножительА»

    2. Пишем процедуру, которая при открытии «Наша форма» (в обработчике ПриСозданииНаСервере) будет заполнять реквизит «МножительА» по полученному значению

    3. Пишем процедуру по вычислению результата умножения и возврату значения

    Сайт о программировании в 1с версии 7.7 и 8.x

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

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

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

    Форма.ОткрытьМодально (Form.DoModal)
    ОткрытьМодально( )

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

    В этом случае есть несколько решений:
    1. Получив доступ к форме, мы можем вызывать различные функции и получать переменные. Естественно нужно, чтобы эти функции имели статус Экспорт

    Функция НашаФункция ( ПараметрыФункции ) Экспорт

    Организация выбора из произвольной формы (на примере выбора из списка регистра сведений)

    1С:Предприятие 8 поддерживает готовую функциональность для организации выбора из форм списков объектных данных (справочников, документов и т.д.). В большинстве случаев выбираются именно такие значения. Однако, в некоторых случаях, необходимо организовать выбор и других значений. Механизм форм 1С:Предприятия 8 включает универсальный механизм выбора, позволяющий организовать выбор практически любых значений.

    Для этого используется возможность открытия формы в режиме выбора и возможность обработки события выбора.

    В качестве примера приведем реализацию выбора записи регистра сведений. Стандартные расширения форм не поддерживают механику выбора, однако ее несложно реализовать.

    Вначале создадим новую форму списка регистра сведений и назовем ее "ФормаВыбора". В форме реализуем событие Выбор табличного поля отображающего список.

    В этом событии мы отменяем стандартное действие, предусмотренное расширением табличного поля, и вместо него вызываем метод ОповеститьОВыборе() , передавая ему в качестве параметра текущую строку. Значением текущей строки будет являться значение типа РегистрСведенийКлючЗаписи.<имя> .

    Теперь реализуем функциональность выбора в той форме, в которой это требуется. Например, в форме обработки, имеющей поля ввода "Валюта" и "Период".

    Вначале мы сформируем ключ записи регистра сведений, который будет использоваться для установки в списке текущей строки в соответствии с текущими значениями полей ввода. Сама установка будет выполняться через стандартный параметр формы ПараметрТекущаяСтрока .

    Заметим, что если для установки текущей строки расширение формы не предоставляет стандартного параметра, то можно создать свой реквизит у формы выбора, заполнить его аналогично заполнению стандартного параметра в этом примере, и при открытии формы обеспечить позиционирование в списке в соответствии со значением данного реквизита.

    Далее мы создаем форму, устанавливаем ей режим выбора, владельца формы, и выполняем открытие формы.

    Теперь нам нужно только реализовать обработчик выбора в форме и выполнить в нем необходимее действия с выбранным значением.

    Заметим, что в качестве владельца формы может устанавливаться не только сама форма, в которой осуществляется выбор, но и ТабличноеПоле , ПолеВвода и ПолеВыбора . Соответственно и обработчик выбора нужно будет реализовывать у этих элементов управления.

    В 1С:Предприятии 8.2 нет поля выбора, но для элементов формы вида Поле ввода можно установить свойство РежимВыбораИзСписка в значение Истина . В этом случае поле ввода будет работать как поле выбора и может хранить одно из значений произвольного типа, имеющихся в списке выбора. Сам список значений для выбора задается в свойстве СписокВыбора этого поля.

    Эти свойства можно установить в палитре свойств элемента формы Поле ввода , а можно задать программно при создании формы. Например:

    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Список выбора в поле Город будет выглядеть следующим образом:

    Демонстрационные примеры с интерактивно и программно сформированным списком выбора реквизита справочника находится в каталоге 1CITS/EXE/FAQ/List. Они выполнены на версии платформы 8.2.9.356.

    Существует несколько способов выбора значения из программно сформированного списка значений. Такое обилие вариантов обусловлено различными требованиями к интерфейсу системы.

    Давайте рассмотрим основные варианты. Предположим, что у нас есть список значений из которого пользователю нужно выбрать какое-то одно:

    А. Выбор непосредственно из списка значений

    Самый простой способ выбрать значение — инициировать его выбор через метод СписокЗначений.ВыбратьЭлемент():

    Обратите внимание, что метод возвращает не само значение, а объект ЭлементСпискаЗначений . К значению, хранящемуся в элементе, мы можем обратиться через одноименное свойство Значение .


    Выглядеть это будет так:

    Б. Выбор из выпадающего списка

    При использовании этого способа список выбора будет показан не в независимом окне, а с привязкой к элементу формы. Для реализации этого способа воспользуемся стандартным методом формы ВыбратьИзСписка():


    Выглядеть это будет так:

    В. Выбор из выпадающего меню

    Этот способ похож на предыдущий, но список выбора будет показан в виде выпадающего подменю. Этот способ уместнее использовать с элементами формы типа Кнопка. Для реализации этого способа воспользуемся методом формы ВыбратьИзМеню():

    « Как стать программистом 1С » Язык 1С » Выпадающий список значений 1С на форме

    Выпадающий список значений 1С на форме

    Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.

    Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.


    Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
    Процедура ПриОткрытии()


    Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
    Выпадающий список значений 1С на форме — Вариант 1)

    • Включим кнопку выбора списка
    • В свойстве «Список выбора» нажмите «…» и введите варианты
    • Результат выбора будет сохранен в выбранном реквизите




    Выпадающий список значений 1С на форме — Вариант 2)

    • Включим кнопку выбора списка
    • Добавим обработчик «НачалоВыбораИзСписка»

    Результат аналогичный. Требуется, если список должен быть заполнен ссылками на справочники/документы, которые не являются предопределенными.

    Читайте также: