1с открыть форму списка справочника

Есть несколько способов для того, чтобы открыть форму списка с некоторым, заранее установленным отбором. Рассмотрим их по-порядку:

1. Первый способ заключается в том, что при открытии формы можно задать параметр формы Отбор , и открыть форму списка с этим параметром. Параметр Отбор представляет собой структуру. Имена элементов соответствуют именам полей, по которым производится отбор, а значения содержат значения отбора. Это параметр расширения управляемой формы динамического списка. То есть он существует у форм, основным реквизитом которых является реквизит типа Динамический Список , например у форм списка и форм выбора.

В процессе открытия формы будет установлен отбор по указанному полю. Например, в следующем примере открывается список приходных накладных с отбором по полю Номер , равному 333.

ЗначениеОтбора = Новый Структура(«Номер», «333»);
ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);

2. Можно открыть форму списка без параметров:

И затем, в обработчике события формы списка приходных накладных ПриСозданииНаСервере написать код, который создает отбор в динамическом списке, являющемся основным реквизитом формы:

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

ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Номер»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = «000000001»;

Преимущества данного метода в том, что ВидСравнения у отбора можно задавать не только Равно , как в первом случае, а и Больше , Меньше и т.п.

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

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

Для этого в форме списка номенклатуры создадим команду и соответствующую ей кнопку Приходные накладные .

Обработчик выполнения этой команды заполним следующим образом:

ФормаСписка = ПолучитьФорму(«Документ.ПриходнаяНакладная.ФормаСписка»);
ФормаСписка.ФильтрПоТовару = Элементы.Список.ТекущаяСтрока;
ФормаСписка.Открыть();

В этом обработчике мы получаем форму списка приходных накладных и передаем в параметр формы ФильтрПоТовару ссылку на текущий элемент в списке номенклатуры и открываем форму с этим параметром.

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

В поле Запрос введем следующий текст запроса:

В запросе мы используем параметр Товар , в который и будет передаваться ссылка на текущую строку в списке номенклатуры, содержащуюся в параметре формы списка приходных накладных ФильтрПоТовару . Для этого в обработчике события формы списка ПриОткрытии напишем код для установки значения параметра запроса Товар :

Здесь Список.Параметры — это список параметров запроса динамического списка для реквизита Список . Значение параметра Товар устанавливается равным значению параметра формы ФильтрПоТовару .

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

Демонстрационный пример для 3-го варианта находится в каталоге 1CITS/EXE/FAQ/ОткрытьФормуСОтбором.dt. Пример выполнен на версии платформы 8.2.9.356.

Открыть форму справочника можно несколькими способами:

А. По имени формы

Если требуется открыть основную форму нового элемента справочника или форму списка, достаточно написать следующий код:

Где ФормаОбъекта — имя основной формы открываемого справочника. Вместо нее можно указать другую основную форму, которую требуется открыть:

ФормаОбъекта основная форма элемента справочника
ФормаГруппы основная форма группы справочника
ФормаСписка основная форма списка справочника
ФормаВыбора основная форма выбора справочника
ФормаВыбораГруппы основная форма выбора группы

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

Б. По ссылке

Если в контексте вызова доступна ссылка на элемент или группу справочника, можно воспользоваться параметрами формы:

а можно воспользоваться универсальными методами и просто открыть значение:

В 1С Предприятии 8.2 реализована механика перехода к подчиненной информации. Врезультате платформа автоматически предоставляет команду перехода к списку подчиненного справочника и вставляет ее в форму справочника-владельца в панель навигации в группу Перейти .

Однако, в форму списка платформа такую команду не вставляет, но это может сделать сам разработчик — Команды — Глобальные команды- Параметризуемые — Элементы — Список — Имя подчиненного справочника — Элементы.Список.ТекущиеДанные.Ссылка .

Если нужно, можно все то же самое сделать программным образом. Для этого следует открыть форму подчиненного справочника с отбором по владельцу. Сначала задается параметр формы Отбор , и форма списка открывается с этим параметром. В процессе открытия формы будет установлен отбор по указанному владельцу.

При этом, если вы в помещаете команду перехода к подчиненному списку в форму элемента, то значение владельца — это Объект.Ссылка , а если в форму списка, то значение владельца — это Элементы.Список.ТекущаяСтрока .

Например, процедура в модуле формы элемента справочника Контрагенты , которая открывает форму списка подчиненного справочника ДоговорыВзаиморасчетов , может выглядеть следующим образом:

ЗначениеОтбора = Новый Структура(«Владелец», Объект.Ссылка);

ПараметрыФормы = Новый Структура(«Отбор», ЗначениеОтбора);

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

ЗначениеОтбора = Новый Структура(«Владелец», Элементы.Список.ТекущаяСтрока);

ПараметрыФормы = Новый Структура(«Отбор», ЗначениеОтбора);

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

Оцените статью
Добавить комментарий