доступность отбора в форме списка 1с
Отбор в форме списка
Класс V8Filter содержит следующие свойства и методы:
Наименование свойства | Тип свойства | Описание |
---|---|---|
FieldName | string | Возвращает или задает имя поля, по которому устанавливается отбор |
Condition | V8FilterCondition | Возвращает или задает условие отбора (равно, не равно, больше, меньше и т.д.) |
Value1 | object | Возвращает или задает значение, с которым произодится сравнение |
ValueType1 | V8TypeInfo | Возвращает или задает тип значения (тип свойства Value1) |
Presentation1 | string | Возвращает или задает представление значения (свойства Value1) |
Value2 | object | Возвращает или задает второе значение, с которым производится сравнение (в случае использования интервала в качестве условия сравнения) |
ValueType2 | V8TypeInfo | Возвращает или задает тип второго значения (тип свойства Value2) |
Presentation2 | string | Возвращает или задает представление второго значения (свойства Value2) |
Disabled | bool | Возвращает или задает доступность условия отбора |
Visible | bool | Возвращает или задает видимость условия отбора |
Checked | bool | Возвращает или задает использование условия отбора |
Наименование метода | Описание |
---|---|
ToString | Возвращает строковое представление условия отбора. Используется для передачи в качестве параметра в формах приложения |
Parse | Создает объект V8Filter по его строковому представлению |
Примеры использования
Установка отбора
Установка отбора по ссылочному полю
В этом примере переменная keyRef содержит ссылку на элемент справочника «Склады».
Установка отбора по полю типа Перечисление
В этих примерах также продемонстрированы различные способы получения представлений значений.
Установка отбора с видом условия Интервал
Работа пользователей с отборами
Пример 1: установить отбор в списке по полю «Склад» и запретить пользователю изменять этот отбор (переменная keyRef содержит ссылку на элемент справочника «Склады»).
Пример 2: скрыть из формы отборов отбор по полю «Склад».
Отбор в форме списка выбора
либо есть еще такой вариант, он весь делается только на форме, где расположен реквизит:
а критично сделать все именно в форме, где располагается реквизит?
если нет, то в конфе на УФ можно сделать примерно так:
а в форме выбора соответственно пишем:
примерное содержимое процедуры ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка:
либо есть еще такой вариант, он весь делается только на форме, где расположен реквизит:
(12) ох. 17 год. Нужно как-то так
ОткрытьФорму («ИмяФормы», Новый Структура(«Отбор»,Новый Структура(«Контрагент», МассивКонтрагентов)));
Спасибо! Работает на 1С ERP Управление предприятием 2.4, 1С:Предприятие 8.3 (8.3.12.1685)
&НаКлиенте
Процедура ОперацияБракНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
НовыйПараметр = Новый ПараметрВыбора(«Отбор.Ссылка», СписокОпераций());
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НовыйПараметр);
НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив);
Элементы.ОперацияБрак.ПараметрыВыбора = НовыеПараметры;
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| ПроизводственнаяОперация2_2.Ссылка КАК ПроизводственнаяОперация
|ИЗ
| Документ.ПроизводственнаяОперация2_2 КАК ПроизводственнаяОперация2_2
|ГДЕ
| ПроизводственнаяОперация2_2.Номер ПОДОБНО &НомерВырезать»;
Запрос.УстановитьПараметр(«НомерВырезать», «%»+НомерВырезать+»%»);
Бодаемся с отображением отборов на управляемых формах
Как известно многим, дьявол всегда кроется в мелочах. Одной из таких мелочей всплыло замечание пользователей о том, что при добавлении отборов при настройке списка не всегда отображается вид сравнения.
Казалось бы, дело за малым, перехватить момент, когда отборы попадают на форму, да пройтись по всем элементам группы пользовательских настроек и проставить видимость.
Итак, первым делом нужно усвоить, что те отборы, которые мы используем через стандартную команду настройки списка, имеют отношение не к самой форме, а к динамическому списку, расположенному на ней, и являются ни чем иным, как пользовательскими настройками.
Если смотреть свойства динамического списка через палитру, можно найти две зацепки для решения нашей задачи:
1) Во-первых, это свойство «Группа пользовательских настроек». В данном свойстве указывается группа формы, которая выступит родителем для всех добавляемых элементов с отображением отборов.
2) Во-вторых, это событие списка «ПриОбновленииСоставаПользовательскихНастроекНаСервере».
Рассмотрим программное создание полей на примере рабочего кода:
В итоге мы имеем стройный ряд настроек, который можно поменять в любой момент:
Как открыть форму списка с некоторым отбором?
Есть несколько способов для того, чтобы открыть форму списка с некоторым, заранее установленным отбором. Рассмотрим их по-порядку:
ЗначениеОтбора = Новый Структура(«Номер», «333»);
ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);
2. Можно открыть форму списка без параметров:
И затем, в обработчике события формы списка приходных накладных ПриСозданииНаСервере написать код, который создает отбор в динамическом списке, являющемся основным реквизитом формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Номер»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = «000000001»;
3. И наконец, условие отбора можно поместить в произвольный запрос, выбирающий данные для динамического списка. Например, нам нужно открыть список приходных накладных, в которых присутствует номенклатура, выделенная в списке номенклатуры.
Обработчик выполнения этой команды заполним следующим образом:
ФормаСписка = ПолучитьФорму(«Документ.ПриходнаяНакладная.ФормаСписка»);
ФормаСписка.ФильтрПоТовару = Элементы.Список.ТекущаяСтрока;
ФормаСписка.Открыть();
В этом обработчике мы получаем форму списка приходных накладных и передаем в параметр формы ФильтрПоТовару ссылку на текущий элемент в списке номенклатуры и открываем форму с этим параметром.
В поле Запрос введем следующий текст запроса:
В результате по нажатию кнопки Приходные накладные в форме списка номенклатуры мы будем получать список только тех приходных накладных, в которых присутствует номенклатура, выделенная в данный момент в списке номенклатуры.
Демонстрационный пример для 3-го варианта находится в каталоге 1CITS/EXE/FAQ/ОткрытьФормуСОтбором.dt. Пример выполнен на версии платформы 8.2.9.356.
1С 8.x : Как установить отбор в форме списка справочника?
Для 1С 8.2:
Есть несколько способов для того, чтобы открыть форму списка с некоторым, заранее установленным отбором. Рассмотрим их по-порядку:
1. Первый способ заключается в том, что при открытии формы можно задать параметр формы Отбор, и открыть форму списка с этим параметром. Параметр Отбор представляет собой структуру. Имена элементов соответствуют именам полей, по которым производится отбор, а значения содержат значения отбора. Это параметр расширения управляемой формы динамического списка. То есть он существует у форм, основным реквизитом которых является реквизит типа Динамический Список, например у форм списка и форм выбора.
В процессе открытия формы будет установлен отбор по указанному полю.
Код 1C v 8.2 УП
2. Можно открыть форму списка без параметров:
Код 1C v 8.2 УП
И затем, в обработчике события формы списка приходных накладных ПриСозданииНаСервере написать код, который создает отбор в динамическом списке, являющемся основным реквизитом формы:
Код 1C v 8.2 УП
Преимущества данного метода в том, что ВидСравнения у отбора можно задавать не только Равно, как в первом случае, а и Больше, Меньше и т.п.
3. И наконец, условие отбора можно поместить в произвольный запрос, выбирающий данные для динамического списка. Например, нам нужно открыть список приходных накладных, в которых присутствует номенклатура, выделенная в списке номенклатуры.
Для этого в форме списка номенклатуры создадим команду и соответствующую ей кнопку Приходные накладные.
Обработчик выполнения этой команды заполним следующим образом:
Код 1C v 8.2 УП
В этом обработчике мы получаем форму списка приходных накладных и передаем в параметр формы ФильтрПоТовару ссылку на текущий элемент в списке номенклатуры и открываем форму с этим параметром.
Затем создадим форму списка документов ПриходнаяНакладная и создадим реквизит формы ФильтрПоТовару, который мы будем использовать в качестве параметра формы при ее открытии. Теперь откроем палитру свойств основного реквизита формы Список. Установим флаг ПроизвольныйЗапрос и в строке Настройка списка нажмем Открыть.
В поле Запрос введем следующий текст запроса:
Код 1C v 8.2 УП
В результате по нажатию кнопки Приходные накладные в форме списка номенклатуры мы будем получать список только тех приходных накладных, в которых присутствует номенклатура, выделенная в данный момент в списке номенклатуры.