Как добавить реквизит в отбор формы списка

Как добавить реквизит документа в отбор в форме списка документа?

Я
   Ivan_495

26.03.14 — 14:44

Как добавить реквизит документа в отбор в форме списка документа?

  

Партнерская программа EFSOL Oblako

   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) поставил индексировать

уже минут 5 лопатит

   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С

Код 1C v 8.х

 СправочникСписок.Отбор.Сбросить();
СправочникСписок.Отбор.статус.ВидСравнения=ВидСравнения.Содержит;
СправочникСписок.Отбор.Статус.Значение="Принята";
СправочникСписок.Отбор.Статус.Установить();

Для 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
  1. TopicStarter Overlay

    Артур

    Offline

    Артур
    Опытный в 1С

    Регистрация:
    7 май 2008
    Сообщения:
    116
    Симпатии:
    0
    Баллы:
    26

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


    Артур,
    25 дек 2008
    #1

  2. Неназываемый

    Offline

    Неназываемый
    Опытный в 1С
    Команда форума

    Регистрация:
    2 фев 2007
    Сообщения:
    507
    Симпатии:
    7
    Баллы:
    29

    В форму списка документов следует добавить наш реквизит.
    Если он не нужен в табличной части списка документов, делаем Видимость = Ложь.


    Неназываемый,
    25 дек 2008
    #2
  3. TopicStarter Overlay

    Артур

    Offline

    Артур
    Опытный в 1С

    Регистрация:
    7 май 2008
    Сообщения:
    116
    Симпатии:
    0
    Баллы:
    26

    Имелось в виду не в форма списка а в форма которая появляется при нажатии на кнопку Отбор и сортировка


    Артур,
    25 дек 2008
    #3

  4. Неназываемый

    Offline

    Неназываемый
    Опытный в 1С
    Команда форума

    Регистрация:
    2 фев 2007
    Сообщения:
    507
    Симпатии:
    7
    Баллы:
    29

    В неё как раз автоматом и попадают те ревизиты которые используются в списке.

    Вложения:

    • otbor.JPG
      otbor.JPG
      Размер файла:
      133,6 КБ
      Просмотров:
      47

    Неназываемый,
    25 дек 2008
    #4
(Вы должны войти или зарегистрироваться, чтобы ответить.)
Показать игнорируемое содержимое
Похожие темы

  1. saladinos

    8.х
    Добавить новый реквизит в документ.

    saladinos,
    28 авг 2008
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»
    Ответов:
    2
    Просмотров:
    1.025
    saladinos
    28 авг 2008

  2. U3BPaLLjeHeLj

    7.7
    необходимо добавить новый реквизит контрагента

    U3BPaLLjeHeLj,
    16 окт 2008
    , в разделе: Конфигурирование на платформе «1С:Предприятие 7.7»
    Ответов:
    9
    Просмотров:
    3.832
    Хряк
    19 окт 2008

  3. MyNameNoName

    7.7
    Как в Торговле и склад 9.0 в перемещение ТМЦ на форму добавить новый реквизит?

    MyNameNoName,
    28 апр 2015
    , в разделе: Отчеты и обработки для «1С:Предприятие 7.7»
    Ответов:
    4
    Просмотров:
    921
    Бухгалтерский угодник
    29 апр 2015

  4. Николаич87

    [РЕШЕНО]
    Если ЭтоГруппа, то не добавить новый реквизит?

    Николаич87,
    6 окт 2016
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»
    Ответов:
    2
    Просмотров:
    1.145
    Николаич87
    6 окт 2016

  5. roofless

    [РЕШЕНО]
    Добавить отбор в скд, если задан другой отбор

    roofless,
    12 апр 2017
    , в разделе: Система компоновки данных (СКД)
    Ответов:
    2
    Просмотров:
    1.429
    roofless
    12 апр 2017

Загрузка…
Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Поиск

  • Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:
  • Искать только в этой теме
  • Искать только в этом разделе
    • Отображать результаты в виде тем

Быстрый поиск

  • Последние сообщения

Больше…

Форум консультаций по прикладным решениям и программам фирмы «1С».

Онлайн консультации, вопросы и ответы, бесплатная регистрация, личная страница, twitter и facebook каналы и многое другое ждут Вас здесь.

Зарегистрироваться ← Ваш выбор → Войти на форум

Как добавить реквизит в экран «Отбор и сортировка» формы списка?

Тема в разделе ‘Программирование и администрирование в 1С’, создана пользователем Azgerd, 10.07.2013.

  1. Не в сети

    Azgerd

    Участник

    1С:Предприятие 8.2 в документ «Реализация товаров и услуг» необходимо было добавить «НовыйРеквизит» типа Булево. В форме списка документа необходимо включать отбор в том числе и по этому «НовомуРеквизиту». В форме списка есть стандартная кнопка(команда) «Отбор и сортировка», как в форму, кот.открывается по этой кнопке добавить «НовыйРеквизит»?
    P.S В Конфигураторе добавил в раздел «Общие» новый критерий отбора для этого «НовогоРеквизита», однако в форме списка документов этот реквизит отбора не появился.


    Azgerd,
    10.07.2013

    #1

  2. Реклама на форуме

    Чтобы убрать:

    Зарегистрируйтесь
    или
    Войдите на форум

  3. Не в сети

    Andrey

    ВР

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


    Andrey,
    10.07.2013

    #2

(Вы должны войти или зарегистрироваться, чтобы ответить.)

Похожие темы

Тема по ключевым словам: добавить, реквизит.

Статистика
Последнее сообщение

  1. Интех

    Как в «1С:Бухгалтерии 8» (ред. 3.0) добавить новую организацию или ИП

    Интех, 17.12.2020, в разделе:

    Интересные статьи

    Ответов:
    0
    Просмотров:
    656
    Интех
    17.12.2020

  2. somalina

    Как добавить услугу в заказ и с/ф

    somalina, 28.05.2014, в разделе:

    Управление Торговлей (ред. 11)

    Ответов:
    0
    Просмотров:
    2.147
    somalina
    28.05.2014

  3. Sasha KFH

    Как добавить организацию в 1С 8,3

    Sasha KFH, 28.05.2014, в разделе:

    Бухгалтерия Предприятия (ред. 3.0)

    Ответов:
    2
    Просмотров:
    21.394
    Sasha KFH
    04.06.2014

  4. henk

    Штрих код , как добавить строчку с названием фирмы ?

    henk, 07.08.2013, в разделе:

    Управление Производственным Предприятием

    Ответов:
    2
    Просмотров:
    1.698
    henk
    14.08.2013

  5. MariyaS

    как добавить Вид Договора

    MariyaS, 06.07.2011, в разделе:

    1C:8 «Общие вопросы по прикладным решениям»

    Ответов:
    13
    Просмотров:
    24.524
    Andrey
    24.11.2013

Загрузка…
  • Войти через Facebook
  • Войти через ВКонтакте
  • Войти через Twitter
Ваше имя или e-mail:
У Вас уже есть учётная запись?

Забыли пароль?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:

Запомнить меня

Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:

Расширенный поиск…

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

  • Установка отбора в пользовательском режиме
  • Установка отбора в конфигураторе

    • Фиксированный отбор
    • Динамический (программный) отбор

Установка отбора в пользовательском режиме

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

Для установки отбора в режиме предприятия необходимо вызвать команду «Настроить список».

Рис.1 Настроить список
Рис.1 Настроить список

 

Откроется окно.

Рис.2 Окно настройки
Рис.2 Окно настройки

 

На вкладке «отбор» представлен список полей, который есть в текущем списке. Выбираем поля списка, по которым будем фильтровать. Сделать это можно двойным кликом или используя drag and drop.

Рис.3 На вкладке «Отбор»
Рис.3 На вкладке «Отбор»

 

Задаем вид сравнения и значение, жмем «Завершить редактирование», отбор установлен.

Отбор также можно группировать по логическим условиям «И», «ИЛИ».

Рис.4 Отбор также можно группировать по логическим условиям «И», «ИЛИ»
Рис.4 Отбор также можно группировать по логическим условиям «И», «ИЛИ»

 

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

Рис.5 Поля быстрых отборов
Рис.5 Поля быстрых отборов

 

Чтобы платформа 1С автоматически создавала поля быстрых отборов, при разработке формы в конфигураторе необходимо указать группу пользовательских настроек.

Рис.6 Группа пользовательских настроек
Рис.6 Группа пользовательских настроек

 

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

Установка отбора в конфигураторе

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

Фиксированный отбор

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

Рис.7 Фиксированный отбор
Рис.7 Фиксированный отбор

 

Откроется окно.

Рис.8 Окно динамического списка
Рис.8 Окно динамического списка

 

Отбор задается так же, как в пользовательском режиме.

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

Рис.9 Настроить список
Рис.9 Настроить список

 

Динамический (программный) отбор

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

Методы

Если в разрабатываемой конфигурации присутствует подсистема БСП «БазоваяФункциональность», программный отбор в динамическом списке можно установить используя типовой метод:


	 ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка()

Сигнатура данного метода:

ДинамическийСписок Тип: ДинамическийСписок – Список, в котором требуется установить отбор.

ИмяПоля Тип: Строка – Поле, по которому необходимо установить отбор.

ПравоеЗначение Тип: Произвольный – Значение отбора (Необязательный. Значение по умолчанию: Неопределено. Внимание! Если передать Неопределено, то значение не будет изменено).

ВидСравнения Тип: ВидСравненияКомпоновкиДанных – Условие отбора.

Представление Тип: Строка – Представление элемента компоновки данных (Необязательный. Значение по умолчанию: Неопределено. Если указано, то выводится только флажок использования с указанным представлением (значение не выводится). Для очистки, чтобы значение снова выводилось, следует передать пустую строку).

Использование Тип: Булево – Флажок использования этого отбора (Необязательный. Значение по умолчанию: Неопределено).

РежимОтображения Тип: РежимОтображенияЭлементаНастройкиКомпоновкиДанных – Способ отображения этого отбора пользователю. Возможные значения:

  • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ – В группе быстрых настроек над списком.
  • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный – В настройка списка (в подменю Еще).
  • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный – Запретить пользователю менять этот отбор.

ИдентификаторПользовательскойНастройки Тип: Строка – Уникальный идентификатор этого отбора (Используется для связи с пользовательскими настройками).

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


	 ОбщегоНазначенияКлиентСервер. УдалитьЭлементыГруппыОтбораДинамическогоСписка ()

Сигнатура данного метода:

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

ИмяПоля Тип: Строка – имя поля компоновки (не используется для групп).

Представление Тип: Строка – представление поля компоновки.

В случае отсутствие в системе БСП отбор можно установить самостоятельно, используя объект ПолеКомпоновкиДанных.


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

Данный отбор отберет строки, в которых значение «ФИО» = «Иванов».

Для использования логических «И», «ИЛИ», «НЕ» предназначен тип данных ГруппаЭлементовОтбораКомпоновкиДанных


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

Данный отбор отберет строки, в которых значение «ФИО» = «Иванов» или «Петров».

Отбор в динамическом списке также можно производить через изменение текста запроса динамического списка. Этот вариант работает, когда динамический список сделан через «произвольный запрос».

Рис.10 Отбор в динамическом списке
Рис.10 Отбор в динамическом списке

 

Для этого к тексту запроса добавляем условие «ГДЕ Истина»…

Рис.11 Условие «ГДЕ Истина»
Рис.11 Условие «ГДЕ Истина»

 

…в коде:


	Список.ТекстЗапроса = Список.ТекстЗапроса + " И СправочникПользователи.ФИО В(""Иванов"",""Петров"")";

Как видно, такой подход более компактный с точки зрения написания кода. Чем сложнее условия отбора в табличной части мы хотим установить, тем более громоздким будет вариант с использованием отбора через ЭлементОтбораКомпоновкиДанных. Однако у примера с изменением текста запроса есть свои недостатки – эта реализация не устойчива к изменениям кода. Например, вы сделали такую реализацию и забыли, но если в будущем вы захотите модифицировать текст запроса, добавив в него какой-либо оператор после ГДЕ (УПОРЯДОЧИТЬ, СГРУППИРОВАТЬ), вам нужно не забыть про то, что в программном коде есть:


	Список.ТекстЗапроса = Список.ТекстЗапроса + " И СправочникПользователи.ФИО В(""Иванов"",""Петров"")";

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

ГДЕ (НЕ &ОтборУстановлен ИЛИ СправочникПользователи.ФИО В (&РазрешенныеФИО))

…в коде:


	Список.Параметры.УстановитьЗначениеПараметра("ОтборУстановлен", ФИО.Количество() > 0);
	Список.Параметры.УстановитьЗначениеПараметра("РазрешенныеФИО", ФИО);

Тут ФИО – массив.

Ка видно, 2 строчки кода против 10. Какой из способов выбрать, зависит от конкретной прикладной задачи.

Понравилась статья? Поделить с друзьями:
  • Как добавить реквизит в регистр накопления
  • Как добавить реквизит для поиска по строке
  • Как добавить свою компанию на яндекс карты
  • Как добиться успеха в строительном бизнесе
  • Как доказать что сайт принадлежит компании