Записки программиста 1с

Необязательный параметр в запросе СКД

Необязательный параметр в запросе 1с на СКД позволяют унифицировать отчет на СКД.

Рассмотрим пример создания отчетов на СКД на примере регистра остатков “ОстаткиНаСкладах”.

Необязательный параметр в запросе СКД
Схема регистра накопления

В начале настроим движение в документе “Приходная накладная” при помощи конструктора движений:

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

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

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

Необязательный параметр в запросе СКД
Таблицы и поля отчета в конструкторе запросов.

Во-вторых установим условия в конструкторе запросов.

Необязательный параметр в запросе СКД
Условия в конструкторе запросов

В-третьих настроим “Параметры” в Системе компоновки данных 1с.

Параметры в СКД
Параметры в СКД

Далее в настройках укажем все поля запроса. Для параметров Склад, Сотрудник и Номенклатура выставим галочку “Включить в пользовательские настройки”.

параметр в запросе СКД
параметр в запросе СКД

В результате в конструкторе запросов получим следующий код:

ВЫБРАТЬ
	ОстаткиНаСкладахОстатки.СуммаОстаток КАК СуммаОстаток,
	ОстаткиНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
	ОстаткиНаСкладахОстатки.Номенклатура КАК Номенклатура,
	ОстаткиНаСкладахОстатки.Склад КАК Склад,
	ОстаткиНаСкладахОстатки.Сотрудник КАК Сотрудник
ИЗ
	РегистрНакопления.ОстаткиНаСкладах.Остатки КАК ОстаткиНаСкладахОстатки
ГДЕ
	ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура
	И ОстаткиНаСкладахОстатки.Склад = &Склад
	И ОстаткиНаСкладахОстатки.Сотрудник = &Сотрудник

Необязательный параметр в запросе СКД при помощи фигурных скобок.

Необязательный параметр в запросе при помощи фигурных скобок. Приведем пример использования 1 необязательного параметра.

ВЫБРАТЬ
	ОстаткиНаСкладахОстатки.СуммаОстаток КАК СуммаОстаток,
	ОстаткиНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
	ОстаткиНаСкладахОстатки.Номенклатура КАК Номенклатура,
	ОстаткиНаСкладахОстатки.Склад КАК Склад,
	ОстаткиНаСкладахОстатки.Сотрудник КАК Сотрудник
ИЗ
	РегистрНакопления.ОстаткиНаСкладах.Остатки КАК ОстаткиНаСкладахОстатки
ГДЕ
	ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура
	И ОстаткиНаСкладахОстатки.Склад = &Склад
{ГДЕ
	(ОстаткиНаСкладахОстатки.Сотрудник = &Сотрудник)}

Ниже приведен пример, когда все 3 параметра необязательные.

{ГДЕ
	(ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура),
	(ОстаткиНаСкладахОстатки.Склад = &Склад),
	(ОстаткиНаСкладахОстатки.Сотрудник = &Сотрудник

Результат работы отчета на СКД с тремя необязательными параметрами:

запрос 1с
Результат работы отчета

Также необязательный параметр можно задавать при помощи ключевого слова “ЗНАЧЕНИЕ” и пустой ссылки на объект Справочник.ИмяСправочника.ПустаяСсылка.

ГДЕ
	(&Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка)
			ИЛИ ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура)
	И ОстаткиНаСкладахОстатки.Склад = &Склад
	И ОстаткиНаСкладахОстатки.Сотрудник = &Сотрудник

При использовании данного варианта с несколькими необязательными параметрами необходимо учитывать порядок использования логических функций “И” и “ИЛИ”.

Пример для двух необязательных параметров может выглядеть так:

ГДЕ
	(&Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка)
	И &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяССылка)
ИЛИ ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура
    И &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяССылка)
ИЛИ &Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка)
    И ОстаткиНаСкладахОстатки.Склад = &Склад
ИЛИ ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура
    И ОстаткиНаСкладахОстатки.Склад = &Склад)

В результате нами созданы несколько отчетом на СКД содержащие необязательные параметры.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *