Открытие формы выбора и получение значения
Форма открывается, но я не могу понять как мне получить выбранные значения. Подскажите пожалуйста.
P.S.
ОткрытьМодально нельзя.
В параметр ОписаниеОповещенияОЗакрытии передать имя процедуры, которая будет вызываться при закрытии формы выбора.
Из синтакс-помощника:
(необязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана при закрытии формы со следующими параметрами:
— значение, переданное при вызове метода Закрыть открываемой формы,
— значение, которое было указано при создании объекта ОписаниеОповещения.
В параметр ОписаниеОповещенияОЗакрытии передать имя процедуры, которая будет вызываться при закрытии формы выбора.
Из синтакс-помощника:
(необязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана при закрытии формы со следующими параметрами:
— значение, переданное при вызове метода Закрыть открываемой формы,
— значение, которое было указано при создании объекта ОписаниеОповещения.
В ОсновнойФорме создаем реквизит произвольного типа «СсылкаНаДопФорму», в котором будет храниться ссылка на дополнительную форму. В ДопФорме создаем реквизит произвольного типа «СсылкаНаОсновнуюФорму», в котором, соответственно, будет храниться ссылка на основную форму.
При вызове дополнительной формы прописываем код:
Вот и всё, перекрестные ссылки между формами прописаны. Теперь можно можно манипулировать одной формой из другой как угодно. Например, если на кнопке в дополнительной форме прописать код:
то заголовок поменяется.
Более того, можно управлять всеми объектами, вложенными в другую форму, а так же вызывать экспортные процедуры и функции формы. Как из ОсновнойФормы, так и из ДопФормы.
.
Это описание для обычных форм.
Для УФ необходимо создавать в модуле форм экспортные переменные, в которых будут храниться ссылки на другую форму, чтобы к этим переменным можно было обращаться из другой формы
Как программно открыть форму выбора с отбором?
Для открытия формы выбора (справочника, документа и т.п.) необходимо воспользоваться параметрами открываемой формы.
Обязательным условием является наличие в открываемой форме динамического списка, который назначен основным реквизитом формы. В качестве полей отбора можно воспользоваться любым полем, настроенным в динамическом списке.
Давайте рассмотрим работу механизма на примере: в документе «Поступление товаров» при выборе контрагента необходимо выбирать только поставщиков (отбор будем производить по реквизиту Поставщик типа Булево справочника «Контрагенты»).
Для начала, проверим наличие поля отбора «Поставщик» в настройках отбора динамического списка. Для этого откроем форму выбора справочника «Контрагенты» и перейдем к настройкам динамического списка:
Мы видим, что поле Поставщик есть среди полей отбора. Значит, наш отбор работать будет (на самом деле, мы можем добавить дополнительные поля в динамический список и использовать их для отбора):
Теперь нам осталось написать только код процедуры, который будет вызывать форму выбора:
Как видите, ничего сложного нет: мы создаем структуру, имитирующую отбор (ключ структуры — имя поля отбора, а значение — значение отбора), и включаем его в параметры открываемой формы.
Организация выбора из произвольной формы (на примере выбора из списка регистра сведений)
1С:Предприятие 8 поддерживает готовую функциональность для организации выбора из форм списков объектных данных (справочников, документов и т.д.). В большинстве случаев выбираются именно такие значения. Однако, в некоторых случаях, необходимо организовать выбор и других значений. Механизм форм 1С:Предприятия 8 включает универсальный механизм выбора, позволяющий организовать выбор практически любых значений.
Для этого используется возможность открытия формы в режиме выбора и возможность обработки события выбора.
В качестве примера приведем реализацию выбора записи регистра сведений. Стандартные расширения форм не поддерживают механику выбора, однако ее несложно реализовать.
Вначале создадим новую форму списка регистра сведений и назовем ее «ФормаВыбора». В форме реализуем событие Выбор табличного поля отображающего список.
Теперь реализуем функциональность выбора в той форме, в которой это требуется. Например, в форме обработки, имеющей поля ввода «Валюта» и «Период».
Заметим, что если для установки текущей строки расширение формы не предоставляет стандартного параметра, то можно создать свой реквизит у формы выбора, заполнить его аналогично заполнению стандартного параметра в этом примере, и при открытии формы обеспечить позиционирование в списке в соответствии со значением данного реквизита.
Далее мы создаем форму, устанавливаем ей режим выбора, владельца формы, и выполняем открытие формы.
Теперь нам нужно только реализовать обработчик выбора в форме и выполнить в нем необходимее действия с выбранным значением.
1С 8.3 : Как открыть форму списка документов с отбором?
Данный код позволяет открыть список документов с установленным отбором, также можно открыть список элементов справочника с нужным отбором
Для того, чтобы открыть форму списка с заранее установленным отбором используйте следующие способы:
Первый способ заключается в том, что при открытии формы можно задать параметр формы Отбор, и открыть форму списка с этим параметром.
Параметр Отбор представляет собой структуру. Имена элементов соответствуют именам полей, по которым производится отбор, а значения содержат значения отбора. Это параметр расширения управляемой формы динамического списка. То есть он существует у форм, основным реквизитом которых является реквизит типа ДинамическийСписок, например у форм списка и форм выбора.
Например, в следующем примере открывается список приходных накладных с отбором по полю Номер, равному 333.
Второй способ
Можно открыть форму списка без параметров:
И затем, в обработчике события формы списка приходных накладных ПриСозданииНаСервере написать код, который создает отбор в динамическом списке, являющемся основным реквизитом формы:
Преимущества данного метода в том, что ВидСравнения у отбора можно задавать не только Равно, как в первом случае, а и Больше, Меньше и т.п.
Третий способ
И наконец, условие отбора можно поместить в произвольный запрос, выбирающий данные для динамического списка.
Например, нам нужно открыть список приходных накладных, в которых присутствует номенклатура, выделенная в списке номенклатуры.
Для этого в форме списка номенклатуры создадим команду и соответствующую ей кнопку Приходные накладные.
Обработчик выполнения этой команды заполним следующим образом:
В этом обработчике мы открываем форму списка приходных накладных, передавая в параметр формы ФильтрПоТовару ссылку на текущий элемент в списке номенклатуры.
Затем создадим форму списка документов ПриходнаяНакладная и создадим параметр формы ФильтрПоТовару, который мы будем использовать для открытия формы с нужным отбором.
Теперь откроем палитру свойств основного реквизита формы Список. Установим флаг ПроизвольныйЗапрос и в строке Настройка списка нажмём Открыть.
В поле Запрос введём следующий текст запроса:
В запросе мы используем параметр Товар, в который и будет передаваться ссылка на текущую строку в списке номенклатуры, содержащуюся в параметре формы списка приходных накладных ФильтрПоТовару.
Для этого в обработчике события формы списка ПриСозданииНаСервере напишем код для установки значения параметра запроса Товар:
В результате по нажатию кнопки Приходные накладные в форме списка номенклатуры мы будем получать список только тех приходных накладных, в которых присутствует номенклатура, выделенная в данный момент в списке номенклатуры.