Шаг 259 - Регистр и сложная фильтрация

В шаге "Шаг 248 - Устанавливаем фильтр на движения регистра" мы обсуждали установку фильтра. Но теперь нам нужно бы сделать сложную фильтрацию по условиям. Вот, например, такая форма регистра.

259_1.gif (3690 b)

У нас есть 5 позиций, по которым можно сделать фильтрацию. Конечно пользователь может захотеть посмотреть ЧерезКого было требование, может посмотреть и КомуПоставляем. А может захотеть и отфильтровать по двум вариантам сразу. Ну не писать же каждый раз сложные Если. Конечно нет. Вот, например, есть форма.

259_2.gif (3248 b)

Здесь можно установить КомуПоставляем и Тип ТМЦ. Заведем две переменные.

Процедура Сформировать()
Перем Пр; 
Перем ТипТр;
........

И теперь если Выбор все-таки был, то будет устанавливать именно переменную.

Процедура Сформировать()
Перем Пр; 
Перем ТипТр;

Рег1 = СоздатьОбъект("Регистр.Требования");
Т = СоздатьОбъект("Таблица");
Т.ВывестиСекцию("Секция_1");   
 
Если Предприятие.Выбран()=1 Тогда
	Пр=Предприятие;
КонецЕсли;  
  		    
 
Если ТипТребования.Выбран()=1 Тогда
	ТипТр= ТипТребования;
КонецЕсли;

.......

А как только это будет сделано установим сам фильтр.

Процедура Сформировать()
Перем Пр; 
Перем ТипТр;

	Рег1 = СоздатьОбъект("Регистр.Требования");
	Т = СоздатьОбъект("Таблица");
	Т.ВывестиСекцию("Секция_1");   
 
	Если Предприятие.Выбран()=1 Тогда
		Пр=Предприятие;
	КонецЕсли;  
  		    
 
	Если ТипТребования.Выбран()=1 Тогда
		ТипТр= ТипТребования;
	КонецЕсли;
 
	Рег1.УстановитьФильтр(Пр,,,,ТипТр);
  
	Рег1.ВыбратьДвижения(ДатаНач,ДатаКон);
	Пока Рег1.ПолучитьДвижение() > 0 Цикл
		Т.ВывестиСекцию("Секция_2");
		Пр=Пр+Рег1.Сумма;
	КонецЦикла;

	Т.ТолькоПросмотр(1);
	Т.ВывестиСекцию("Секция_3");
	Т.Показать()

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

Теперь мы можем проводить фильтрацию с очень сложным условиям.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 02.10.2002