|
|||
Ivan_495
26.03.14 — 14:44 |
Как добавить реквизит документа в отбор в форме списка документа? |
||
Maxus43
1 — 26.03.14 — 14:45 |
он проиндексирован? на форму выведен? |
||
butterbean
2 — 26.03.14 — 14:46 |
(1) индексировать вовсе не обязательно |
||
Ivan_495
3 — 26.03.14 — 14:46 |
на форму выведен |
||
butterbean
4 — 26.03.14 — 14:46 |
(3) какой тип у реквизита?? |
||
Ivan_495
5 — 26.03.14 — 14:46 |
при нажатии на воронку не появляется |
||
Ivan_495
6 — 26.03.14 — 14:47 |
булево |
||
Ivan_495
7 — 26.03.14 — 14:47 |
(2) как без индексирования? |
||
Ане4ка1с
8 — 26.03.14 — 14:49 |
(0) Можно критерий отбора добавить. |
||
Maxus43
9 — 26.03.14 — 14:51 |
(2) тогда бы автоматом вышел емнип |
||
Maxus43
10 — 26.03.14 — 14:52 |
ДокументСписок.настройкаОтбора.Поле.Доступность = истина; не ручаюсь за точность, но как то так тоже модно |
||
Maxus43
11 — 26.03.14 — 14:52 |
*можно |
||
Ivan_495
12 — 26.03.14 — 14:52 |
(9) поставил индексировать |
||
Ivan_495
13 — 26.03.14 — 14:53 |
(10) в процедуру «при открытии» добавить |
||
Maxus43
14 — 26.03.14 — 14:55 |
(13) да, если с индексированием не прокатит |
||
Ivan_495
15 — 26.03.14 — 15:07 |
(14) добавил «приоткрытии» |
||
Maxus43
16 — 26.03.14 — 15:11 |
(15) чудес не бывает |
||
Ivan_495
17 — 26.03.14 — 15:29 |
(16) на станд конфе работает, спасибо |
||
Maxus43
18 — 26.03.14 — 15:31 |
(17) всмысле? обычное приложение? я для него и говорил. На УФ свои заморочки наверное |
||
Ivan_495 19 — 26.03.14 — 15:39 |
(18) нее здесь просто в конфе что-то наворочано, отбор по правой кнопке работает по воронке что в значках наверху нет. |
TurboConf — расширение возможностей Конфигуратора 1С
СправочникСписок.Отбор.Сбросить();
СправочникСписок.Отбор.статус.ВидСравнения=ВидСравнения.Содержит;
СправочникСписок.Отбор.Статус.Значение="Принята";
СправочникСписок.Отбор.Статус.Установить();
Для 1С 8.2:
Есть несколько способов для того, чтобы открыть форму списка с некоторым, заранее установленным отбором. Рассмотрим их по-порядку:
1. Первый способ заключается в том, что при открытии формы можно задать параметр формы Отбор, и открыть форму списка с этим параметром. Параметр Отбор представляет собой структуру. Имена элементов соответствуют именам полей, по которым производится отбор, а значения содержат значения отбора. Это параметр расширения управляемой формы динамического списка. То есть он существует у форм, основным реквизитом которых является реквизит типа Динамический Список, например у форм списка и форм выбора.
В процессе открытия формы будет установлен отбор по указанному полю.
Код 1C v 8.2 УП
// Например, в следующем примере открывается список приходных накладных с отбором по полю Номер, равному 333.
ЗначениеОтбора = Новый Структура("Номер", "333");
ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("Документ.ПриходнаяНакладная.ФормаСписка",ПараметрыВыбора);
// Например, в следующем примере открывается список расходных накладных
// с отбором по полю Контрагент, равному «ОАО Рога и копыта».
ЗначениеОтбора = Новый Структура(«Контрагент», «ОАО Рога и копыта»);
ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);
ОткрытьФорму(«Документ.ПриходнаяНакладная.ФормаСписка», ПараметрыВыбора);
2. Можно открыть форму списка без параметров:
Код 1C v 8.2 УП
ОткрытьФорму("Документ.ПриходнаяНакладная.ФормаСписка");
И затем, в обработчике события формы списка приходных накладных ПриСозданииНаСервере написать код, который создает отбор в динамическом списке, являющемся основным реквизитом формы:
Код 1C v 8.2 УП
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номер");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = "000000001";
КонецПроцедуры
//или
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип
(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных («СуммаДокумента»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = 150000;
КонецПроцедуры
Преимущества данного метода в том, что ВидСравнения у отбора можно задавать не только Равно, как в первом случае, а и Больше, Меньше и т.п.
Но у такого способа есть и очень существенный недостаток: с этим отбором форма будет открываться всегда. Откуда бы ее ни вызвали. Поэтому такую форму не следует назначать основной. А если все же она основная — то перед установкой отбора, необходимо предусмотреть какой-то анализ того, откуда открывается эта форма. Например, анализируя параметры формы.
3. И наконец, условие отбора можно поместить в произвольный запрос, выбирающий данные для динамического списка. Например, нам нужно открыть список приходных накладных, в которых присутствует номенклатура, выделенная в списке номенклатуры.
Для этого в форме списка номенклатуры создадим команду и соответствующую ей кнопку Приходные накладные.
Обработчик выполнения этой команды заполним следующим образом:
Код 1C v 8.2 УП
&НаКлиенте
Процедура ПриходныеНакладные(Команда)
ФормаСписка = ПолучитьФорму("Документ.ПриходнаяНакладная.ФормаСписка");
ФормаСписка.ФильтрПоТовару = Элементы.Список.ТекущаяСтрока;
ФормаСписка.Открыть();
КонецПроцедуры
В этом обработчике мы получаем форму списка приходных накладных и передаем в параметр формы ФильтрПоТовару ссылку на текущий элемент в списке номенклатуры и открываем форму с этим параметром.
Затем создадим форму списка документов ПриходнаяНакладная и создадим реквизит формы ФильтрПоТовару, который мы будем использовать в качестве параметра формы при ее открытии. Теперь откроем палитру свойств основного реквизита формы Список. Установим флаг ПроизвольныйЗапрос и в строке Настройка списка нажмем Открыть.
В поле Запрос введем следующий текст запроса:
Код 1C v 8.2 УП
ВЫБРАТЬ
ДокументПриходнаяНакладная.Номер,
ДокументПриходнаяНакладная.Дата
ИЗ
Документ.ПриходнаяНакладная КАК ДокументПриходнаяНакладная
ГДЕ
ДокументПриходнаяНакладная.Товары.Товар = &Товар
В запросе мы используем параметр Товар, в который и будет передаваться ссылка на текущую строку в списке номенклатуры, содержащуюся в параметре формы списка приходных накладных ФильтрПоТовару. Для этого в обработчике события формы списка ПриОткрытии напишем код для установки значения параметра запроса Товар:
Код 1C v 8.2 УП
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Список.Параметры.УстановитьЗначениеПараметра("Товар", ФильтрПоТовару);
КонецПроцедуры
Здесь Список.Параметры — это список параметров запроса динамического списка для реквизита Список. Значение параметра Товар устанавливается равным значению параметра формы ФильтрПоТовару.
В результате по нажатию кнопки Приходные накладные в форме списка номенклатуры мы будем получать список только тех приходных накладных, в которых присутствует номенклатура, выделенная в данный момент в списке номенклатуры.
Опубликовано ср, 18/04/2012 — 00:07 пользователем guru
1. Создаём Критерий отбора.
2. Выбираем тип данных, по которому будет производиться отбор в списке документов.
3. Выбираем справочники и документы, в которых будет применяться отбор.
4. Создаём новую форму списка копированием.
5. Добавляем реквизит формы с типом данных как и в критерии отбора.
6. Добавляем на форму поле ввода. (Данные – реквизит формы, созданный в п.5. Выбор групп и элементов – Элементы.)
7. Создаём обработчик события ПриИзменении.
//Отбор по номенклатуре
Процедура НоменклатураПриИзменении(Элемент)
Если ЗначениеЗаполнено(Номенклатура) Тогда
Отбор.ОтборПоНоменклатуре.Установить(Номенклатура);
Иначе
Отбор.ОтборПоНоменклатуре.Использование = Ложь;
КонецЕсли;
КонецПроцедуры
8. Устанавливаем созданную форму в качестве основной формы списка.
© При копировании материалов сайта ссылка на оригинал обязательна.
Формы списка объектов конфигурации построены с помощью объекта ДинамическийСписок. Пользователь может самостоятельно задать произвольные отборы в любом списке.
Однако зачастую заранее известно, что в конкретном списке будут часто использоваться отборы лишь по нескольким конкретным полям. И необходимо предоставить возможность простого и быстрого ввода требуемых значений и отбора по ним.
В этом случае можно использовать возможность установки отбора из встроенного языка. Чтобы установить отбор по нескольким реквизитам спиcка, нужно сначала создать группу элементов отбора, а затем добавить в нее собственно сами элементы отбора, которые будут связаны логическим союзом И, ИЛИ, НЕ в зависимости от типа группы.
Рассмотрим пример, когда список номенклатуры отбирается по реквизитам списка, соединенным логическим союзом И.
Допустим, в конфигурации существуют справочники Производители, Поставщики и справочник Номенклатура с реквизитами:
- Производитель (тип СправочникСсылка.Производители),
- Поставщик (тип СправочникСсылка.Поставщики).
Требуется выводить список номенклатуры с отбором по этим реквизитам.
Создадим форму списка номенклатуры. Добавим в форму реквизиты Производитель (тип СправочникСсылка.Производители) и Поставщик (тип СправочникСсылка.Поставщики) и поместим их над таблицей списка. В эти поля мы будем вводить значения для отбора.
Создадим команду формы Отфильтровать и поместим ее в командную панель формы. При нажатии этой кнопки будет выполняться отбор в списке в зависимости от значений в полях формы Поставщик и Производитель.
В палитре свойств команды Отфильтровать нажмем кнопку открытия в поле Действие. Обработчик команды в модуле формы заполним следующим образом:
&НаКлиенте Процедура Отфильтровать(Команда)
Для Каждого ЭлементОтбора Из Список.Отбор.Элементы Цикл Если ЭлементОтбора.Представление = "Программный отбор" Тогда Список.Отбор.Элементы.Удалить(ЭлементОтбора);
КонецЕсли;
КонецЦикла;
ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.Использование = Истина; ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора.Представление = "Программный отбор";
Если НЕ Производитель.Пустая() Тогда ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Производитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = Производитель; ЭлементОтбора.Представление = "Программный отбор";
КонецЕсли;
Если НЕ Поставщик.Пустая() Тогда ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Поставщик"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = Поставщик; ЭлементОтбора.Представление = "Программный отбор";
КонецЕсли;
КонецПроцедуры
В этом обработчике сначала в цикле обходится коллекция всех элементов и групп элементов отбора для основного реквизита формы Список (типа ДинамическийСписок). И удаляются все элементы отбора, созданные программно (Представление = «Программный отбор»). Затем создается группа элементов отбора ГруппаОтбора для реквизита Список с типом логической связи ГруппаИ. И если в полях Производитель и Поставщик содержится не пустая ссылка на справочник, то эти поля добавляются в элементы отбора, принадлежащие группе отбора.
В результате, задав в полях Производитель и Поставщик нужные значения, мы получим отбор в списке номенклатуры сразу по обоим реквизитам списка Производитель и Поставщик.
При этом закладка Отбор в окне Настройка списка (Все действия — Настроить список…) будет выглядеть следующим образом:
Выполнив команду Подробно из контекстного меню мы увидим оба условия отбора. В пользовательском режиме сюда можно добавлять другие элементы и группы отбора:
Если задано только одно из полей отбора, то отбор в списке будет выполняться только по одному реквизиту (Производитель или Поставщик).
Скачать демонстрационный пример (платформа 8.2.15.317) .
Войти или зарегистрироваться
8.х Как добавить новый реквизит в окно отбор и сортировка
Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем Артур, 25 дек 2008.
-
0/5,
Голосов: 0
-
Offline
Артур
Опытный в 1С- Регистрация:
- 7 май 2008
- Сообщения:
- 116
- Симпатии:
- 0
- Баллы:
- 26
В форме списка документа есть кнопка отбор и сортировка.
Я добавил к документу новый реквизит и можно сделать так чтоб он туда попадал.
Артур,
25 дек 2008
#1 -
Offline
Неназываемый
Опытный в 1С
Команда форума- Регистрация:
- 2 фев 2007
- Сообщения:
- 507
- Симпатии:
- 7
- Баллы:
- 29
В форму списка документов следует добавить наш реквизит.
Если он не нужен в табличной части списка документов, делаем Видимость = Ложь.
Неназываемый,
25 дек 2008
#2 -
Offline
Артур
Опытный в 1С- Регистрация:
- 7 май 2008
- Сообщения:
- 116
- Симпатии:
- 0
- Баллы:
- 26
Имелось в виду не в форма списка а в форма которая появляется при нажатии на кнопку Отбор и сортировка
Артур,
25 дек 2008
#3 -
Offline
Неназываемый
Опытный в 1С
Команда форума- Регистрация:
- 2 фев 2007
- Сообщения:
- 507
- Симпатии:
- 7
- Баллы:
- 29
В неё как раз автоматом и попадают те ревизиты которые используются в списке.
Вложения:
-
otbor.JPG
- Размер файла:
- 133,6 КБ
- Просмотров:
- 47
Неназываемый,
25 дек 2008
#4
- Похожие темы
-
8.х
Добавить новый реквизит в документ.
saladinos,
28 авг 2008, в разделе: Конфигурирование на платформе «1С:Предприятие 8»
- Ответов:
- 2
- Просмотров:
- 1.025
- saladinos
- 28 авг 2008
-
7.7
необходимо добавить новый реквизит контрагента
U3BPaLLjeHeLj,
16 окт 2008, в разделе: Конфигурирование на платформе «1С:Предприятие 7.7»
- Ответов:
- 9
- Просмотров:
- 3.832
- Хряк
- 19 окт 2008
-
7.7
Как в Торговле и склад 9.0 в перемещение ТМЦ на форму добавить новый реквизит?
MyNameNoName,
28 апр 2015, в разделе: Отчеты и обработки для «1С:Предприятие 7.7»
- Ответов:
- 4
- Просмотров:
- 921
- Бухгалтерский угодник
- 29 апр 2015
-
[РЕШЕНО]
Если ЭтоГруппа, то не добавить новый реквизит?
Николаич87,
6 окт 2016, в разделе: Конфигурирование на платформе «1С:Предприятие 8»
- Ответов:
- 2
- Просмотров:
- 1.145
- Николаич87
- 6 окт 2016
-
[РЕШЕНО]
Добавить отбор в скд, если задан другой отбор
roofless,
12 апр 2017, в разделе: Система компоновки данных (СКД)
- Ответов:
- 2
- Просмотров:
- 1.429
- roofless
- 12 апр 2017
- Ваше имя или e-mail:
- У Вас уже есть учётная запись?
-
- Нет, зарегистрироваться сейчас.
- Да, мой пароль:
-
Забыли пароль?
-
Запомнить меня
-
- Искать только в заголовках
- Сообщения пользователя:
-
Имена участников (разделяйте запятой).
- Новее чем:
-
- Искать только в этой теме
- Искать только в этом разделе
- Отображать результаты в виде тем
-
Быстрый поиск
- Последние сообщения
Больше…
Форум консультаций по прикладным решениям и программам фирмы «1С».
Онлайн консультации, вопросы и ответы, бесплатная регистрация, личная страница, twitter и facebook каналы и многое другое ждут Вас здесь.
Зарегистрироваться ← Ваш выбор → Войти на форум
Как добавить реквизит в экран «Отбор и сортировка» формы списка?
Тема в разделе ‘Программирование и администрирование в 1С’, создана пользователем Azgerd, 10.07.2013.
-
Не в сети
Azgerd
Участник
1С:Предприятие 8.2 в документ «Реализация товаров и услуг» необходимо было добавить «НовыйРеквизит» типа Булево. В форме списка документа необходимо включать отбор в том числе и по этому «НовомуРеквизиту». В форме списка есть стандартная кнопка(команда) «Отбор и сортировка», как в форму, кот.открывается по этой кнопке добавить «НовыйРеквизит»?
P.S В Конфигураторе добавил в раздел «Общие» новый критерий отбора для этого «НовогоРеквизита», однако в форме списка документов этот реквизит отбора не появился.
Azgerd,
10.07.2013
#1
-
Реклама на форуме
Чтобы убрать:
- Зарегистрируйтесь
- или
- Войдите на форум
-
Не в сети
Andrey
ВР
Критерии отбора не для этого предназначены. Нужно добавить реквизит документа с обязательным признаком индексирования. В таблицу формы добавить колонку с этим реквизитом, тогда будет достпны отбор и сортировка по этому реквизиту. Но не забудьте при обновлении это учитывать, а то затрется все что сделали.
Andrey,
10.07.2013
#2
(Вы должны войти или зарегистрироваться, чтобы ответить.)
Похожие темы
- Тема по ключевым словам: добавить, реквизит.
- Статистика
- Последнее сообщение
-
Как в «1С:Бухгалтерии 8» (ред. 3.0) добавить новую организацию или ИП
Интех, 17.12.2020, в разделе:Интересные статьи
- Ответов:
- 0
- Просмотров:
- 656
- Интех
- 17.12.2020
-
Как добавить услугу в заказ и с/ф
somalina, 28.05.2014, в разделе:Управление Торговлей (ред. 11)
- Ответов:
- 0
- Просмотров:
- 2.147
- somalina
- 28.05.2014
-
Как добавить организацию в 1С 8,3
Sasha KFH, 28.05.2014, в разделе:Бухгалтерия Предприятия (ред. 3.0)
- Ответов:
- 2
- Просмотров:
- 21.394
- Sasha KFH
- 04.06.2014
-
Штрих код , как добавить строчку с названием фирмы ?
henk, 07.08.2013, в разделе:Управление Производственным Предприятием
- Ответов:
- 2
- Просмотров:
- 1.698
- henk
- 14.08.2013
-
как добавить Вид Договора
MariyaS, 06.07.2011, в разделе:1C:8 «Общие вопросы по прикладным решениям»
- Ответов:
- 13
- Просмотров:
- 24.524
- Andrey
- 24.11.2013
- Войти через Facebook
- Войти через ВКонтакте
- Войти через Twitter
- Ваше имя или e-mail:
-
У Вас уже есть учётная запись?
Забыли пароль?
-
- Нет, зарегистрироваться сейчас.
- Да, мой пароль:
-
Запомнить меня
- Искать только в заголовках
- Сообщения пользователя:
-
Имена участников (разделяйте запятой).
- Новее чем:
Расширенный поиск…
В статье будут рассмотрены варианты установки отбора в управляемых формах 1С 8.3. Отбор для динамического списка может быть установлен статически или динамически, в пользовательском интерфейсе или конфигураторе. Все варианты отборов мы рассмотрим ниже.
- Установка отбора в пользовательском режиме
-
Установка отбора в конфигураторе
- Фиксированный отбор
- Динамический (программный) отбор
Установка отбора в пользовательском режиме
Динамический список в отличие от таблицы или дерева значений – более подходящее решение для реализации форм содержащих какие-либо списки, т.к. динамический список предоставляет наиболее широкий набор инструментов для работы с отбором, группировкой полей, сортировкой. Данный отбор можно установить при работе в пользовательском режиме или конфигураторе, принцип одинаков.
Для установки отбора в режиме предприятия необходимо вызвать команду «Настроить список».
Откроется окно.
На вкладке «отбор» представлен список полей, который есть в текущем списке. Выбираем поля списка, по которым будем фильтровать. Сделать это можно двойным кликом или используя drag and drop.
Задаем вид сравнения и значение, жмем «Завершить редактирование», отбор установлен.
Отбор также можно группировать по логическим условиям «И», «ИЛИ».
При установке отбора в режиме предприятия на форме списка автоматически создаются поля так называемых быстрых отборов.
Чтобы платформа 1С автоматически создавала поля быстрых отборов, при разработке формы в конфигураторе необходимо указать группу пользовательских настроек.
Данный отбор будет сохранен только для текущего пользователя, что позволяет гибко производить кастомизированные настройки динамического списка. Однако если стоит задача сделать фиксированный отбор для определенного списка для всех пользователей системы, ее мы сможем решить только через конфигуратор.
Установка отбора в конфигураторе
Работая в конфигураторе, мы можем устанавливать отбор динамического списка двух видов – фиксированный и динамический. Фиксированный отбор настраивается один раз, динамический или программный – можно устанавливать в зависимости от каких-либо данных в системе.
Фиксированный отбор
Принцип установки фиксированного отбора в конфигураторе не отличается от установки в пользовательском режиме описанном выше. Чтобы установить отбор, мы должны открыть настройки динамического списка.
Откроется окно.
Отбор задается так же, как в пользовательском режиме.
Опция «Включать в пользовательские настройки» определяет, будет ли установленный в конфигураторе отбор доступен в пользовательском режиме через пункт меню «Настроить список».
Динамический (программный) отбор
Зачастую возникает необходимость устанавливать отбор программно, например, при открытии формы выбора, когда нам необходимо открыть управляемую форму с отбором. В форму передается параметр и по этому параметру устанавливается отбор. Частый пример этого – отбор элементов справочника по владельцу.
Методы
Если в разрабатываемой конфигурации присутствует подсистема БСП «БазоваяФункциональность», программный отбор в динамическом списке можно установить используя типовой метод:
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка()
Сигнатура данного метода:
ДинамическийСписок Тип: ДинамическийСписок – Список, в котором требуется установить отбор.
ИмяПоля Тип: Строка – Поле, по которому необходимо установить отбор.
ПравоеЗначение Тип: Произвольный – Значение отбора (Необязательный. Значение по умолчанию: Неопределено. Внимание! Если передать Неопределено, то значение не будет изменено).
ВидСравнения Тип: ВидСравненияКомпоновкиДанных – Условие отбора.
Представление Тип: Строка – Представление элемента компоновки данных (Необязательный. Значение по умолчанию: Неопределено. Если указано, то выводится только флажок использования с указанным представлением (значение не выводится). Для очистки, чтобы значение снова выводилось, следует передать пустую строку).
Использование Тип: Булево – Флажок использования этого отбора (Необязательный. Значение по умолчанию: Неопределено).
РежимОтображения Тип: РежимОтображенияЭлементаНастройкиКомпоновкиДанных – Способ отображения этого отбора пользователю. Возможные значения:
- РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ – В группе быстрых настроек над списком.
- РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный – В настройка списка (в подменю Еще).
- РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный – Запретить пользователю менять этот отбор.
ИдентификаторПользовательскойНастройки Тип: Строка – Уникальный идентификатор этого отбора (Используется для связи с пользовательскими настройками).
Для удаления какого-то значения отбора необходимо воспользоваться типовым методом:
ОбщегоНазначенияКлиентСервер. УдалитьЭлементыГруппыОтбораДинамическогоСписка ()
Сигнатура данного метода:
ДинамическийСписок Тип: ДинамическийСписок – реквизит формы, для которого требуется установить отбор.
ИмяПоля Тип: Строка – имя поля компоновки (не используется для групп).
Представление Тип: Строка – представление поля компоновки.
В случае отсутствие в системе БСП отбор можно установить самостоятельно, используя объект ПолеКомпоновкиДанных.
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФИО");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ; // Опционально
ЭлементОтбора.ПравоеЗначение = "Иванов";
Данный отбор отберет строки, в которых значение «ФИО» = «Иванов».
Для использования логических «И», «ИЛИ», «НЕ» предназначен тип данных ГруппаЭлементовОтбораКомпоновкиДанных
ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФИО");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = "Иванов";
ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФИО");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = "Петров";
Данный отбор отберет строки, в которых значение «ФИО» = «Иванов» или «Петров».
Отбор в динамическом списке также можно производить через изменение текста запроса динамического списка. Этот вариант работает, когда динамический список сделан через «произвольный запрос».
Для этого к тексту запроса добавляем условие «ГДЕ Истина»…
…в коде:
Список.ТекстЗапроса = Список.ТекстЗапроса + " И СправочникПользователи.ФИО В(""Иванов"",""Петров"")";
Как видно, такой подход более компактный с точки зрения написания кода. Чем сложнее условия отбора в табличной части мы хотим установить, тем более громоздким будет вариант с использованием отбора через ЭлементОтбораКомпоновкиДанных. Однако у примера с изменением текста запроса есть свои недостатки – эта реализация не устойчива к изменениям кода. Например, вы сделали такую реализацию и забыли, но если в будущем вы захотите модифицировать текст запроса, добавив в него какой-либо оператор после ГДЕ (УПОРЯДОЧИТЬ, СГРУППИРОВАТЬ), вам нужно не забыть про то, что в программном коде есть:
Список.ТекстЗапроса = Список.ТекстЗапроса + " И СправочникПользователи.ФИО В(""Иванов"",""Петров"")";
Если этого не учесть будет ошибка, но чтобы этого избежать, можно переделать на другую реализацию. В текс запроса добавляем такое условие:
ГДЕ (НЕ &ОтборУстановлен ИЛИ СправочникПользователи.ФИО В (&РазрешенныеФИО))
…в коде:
Список.Параметры.УстановитьЗначениеПараметра("ОтборУстановлен", ФИО.Количество() > 0);
Список.Параметры.УстановитьЗначениеПараметра("РазрешенныеФИО", ФИО);
Тут ФИО – массив.
Ка видно, 2 строчки кода против 10. Какой из способов выбрать, зависит от конкретной прикладной задачи.