helpf.pro
Регистрация
 0 
Распечатать

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

Код 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 УП
 
&НаКлиенте
Процедура ПриОткрытии(Отказ)

Список.Параметры.УстановитьЗначениеПараметра("Товар", ФильтрПоТовару);

КонецПроцедуры

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

В результате по нажатию кнопки Приходные накладные в форме списка номенклатуры мы будем получать список только тех приходных накладных, в которых присутствует номенклатура, выделенная в данный момент в списке номенклатуры.
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 156985
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C: Enterprise Development Tools 52
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое
Посмотреть все результаты поиска похожих
Комментарии
Hangmaster
06.02.2013 18:01Комментарий: 1
Hangmaster
Пора весь сайт в книгу оформлять. И рекомендовать как учебник для всех "восьмерочников". Спсибо на простые и понятные листинги.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.