v8: Не работает отбор по периоду в отчете на СКД
Есть отчет по разовым ремонтным работам на СКД.
Проблема в том, что не работает отбор по периоду, например, выбираешь сегодняшний день, а он все равно выводит документы за все время. Подскажите, пожалуйста, что делать?
Вот текст запроса:
ВЫБРАТЬ
пг_ИспользованиеМатериаловТовары.Ссылка.Подразделение КАК Подразделение,
пг_ИспользованиеМатериаловТовары.Ссылка.Склад КАК Склад,
пг_ИспользованиеМатериаловТовары.Ссылка.Контрагент КАК Контрагент_,
пг_ИспользованиеМатериаловТовары.Ссылка.ДоговорКонтрагента КАК Договор,
пг_ИспользованиеМатериаловТовары.Ссылка.ДокументОснование.Ссылка КАК ЗаказПокупателя,
пг_ИспользованиеМатериаловТовары.Номенклатура КАК НаименованиеМатериала,
пг_ИспользованиеМатериаловТовары.ЕдиницаИзмерения КАК ЕдИзм,
пг_ИспользованиеМатериаловТовары.Количество КАК Количество,
ВЫРАЗИТЬ(пг_ИспользованиеМатериаловТовары.Ссылка.ДокументОснование.АдресДоставки КАК СТРОКА(100)) КАК АдресДоставки,
пг_ИспользованиеМатериаловТовары.Ссылка КАК ДокументСписания
ИЗ
Документ.пг_ИспользованиеМатериалов.Товары КАК пг_ИспользованиеМатериаловТовары
ГДЕ
пг_ИспользованиеМатериаловТовары.Ссылка.Проведен = ИСТИНА
И пг_ИспользованиеМатериаловТовары.Количество > 0
СГРУППИРОВАТЬ ПО
пг_ИспользованиеМатериаловТовары.Ссылка.Подразделение,
пг_ИспользованиеМатериаловТовары.Ссылка.Склад,
пг_ИспользованиеМатериаловТовары.Ссылка.Контрагент,
пг_ИспользованиеМатериаловТовары.Ссылка.ДоговорКонтрагента,
пг_ИспользованиеМатериаловТовары.Ссылка.ДокументОснование.Ссылка,
пг_ИспользованиеМатериаловТовары.Номенклатура,
пг_ИспользованиеМатериаловТовары.ЕдиницаИзмерения,
пг_ИспользованиеМатериаловТовары.Количество,
ВЫРАЗИТЬ(пг_ИспользованиеМатериаловТовары.Ссылка.ДокументОснование.АдресДоставки КАК СТРОКА(100)),
пг_ИспользованиеМатериаловТовары.Ссылка
Источник
Не работает отбор в СКД
(15) в качестве теста добавьте вычисляемое поле МенеджерПоле
и укажите выражение Менеджер.
если отбор на МенеджерПоле сработает, значит ваше предположение верно. Тогда в выбранных полях заменить Менеджер на МенеджерПоле и т.д.
(19) по этому фрагменту коду понятно, что стандартная компоновка отключена.
Значит есть вероятность, что в программной компоновке стандартное поведение отбора отключили.
Я бы еще в настройке компоновки создал в качестве теста новый вариант с нуля чтобы флажки Авто стали на свои места и проверил формирование с отборами
Посмотрите модуль объекта для отчета.
Там может быть процедура вроде этой:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Если ее заремить, то отчет будет вести себя стандартно.
Ха-Ха! я тоже наткнулся на подобную проблему.
Было: отчет на СКД с кучей временных таблиц и разнообразными джойнами.
Отбор по контрагенту работал выборочно. по каким-то КА работает, по другим не работает. без отбора выводит всех .
Корень зла крылся в том, что при формировании одной из промежуточных временных таблиц был юнион одной таблицы с джойном пары других таблиц. В результате джойна могли появляться NULL значения.
Заменил левый джойн на полный, для того чтобы не получалось NULL значений в ссылочных колонках и isnull( ХЗ, 0) в числовых колонках.
В итоге, по всей цепочке временных таблиц и в итоговой выборке NULL пропали и отбор СКД заработал адекватно.
По логике моего отчета Контрагент должен быть заполнен какой-либо вменяемой ссылкой, не пустым значением.
Если по вашей логике допустимы пустые значения — то их можно заполнить через isNull( HZ , Значение(Справочник.какойто.пустаяссылка))
Мораль — СКД не любит NULL в колонках , по которым выполняется отбор.
Источник
СКД не работают отборы
Добрый день
Есть отчет на СКД. Все работало. Сделал, чтобы в шапке и в подвале отчета выводились собственные макеты. И они выводятся. Но не работают отборы и т.д. Что они есть, что их нет. Т.е. формируется полностью отчет со стандартными настройками. Даже даты периодов стандартные.
Когда делал, я так понимаю, что-то намутил с Процессором компоновки данных. Надо же было сделать, чтобы сначала вывелась моя шапка, потом весь отчет, потом мой подвал. Я сделал это в Модуле отчета. Вот код, подскажите:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Пользователь = ПользователиКлиентСервер.ТекущийПользователь();
Организация = уатОбщегоНазначенияПовтИсп.ПолучитьЗначениеПоУмолчаниюПользователя(Пользователь,»ОсновнаяОрганизация»);
НаДату = этотобъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(«ДатаКон»).Значение.Дата;
Руководители = уатОбщегоНазначенияТиповые.уатОтветственныеЛицаОрганизаций(Организация, НаДату);
ГлИнженер = Руководители.ГлавныйИнженер;
Настройки = КомпоновщикНастроек.Настройки;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
// Инициализируем процессор СКД
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
//ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
Макет = ПолучитьОбщийМакет(«ШапкаИПодвалОтчетов»);
ОбластьШапка = Макет.ПолучитьОбласть(«ШапкаУтверждаю»);
ОбластьШапка.Параметры.Организация = Организация.НаименованиеСокращенное;
ОбластьШапка.Параметры.ГлИнженер = ГлИнженер;
ОбластьПодвал = Макет.ПолучитьОбласть(«ПодвалТехник»);
ДокументРезультат.Вывести(ОбластьШапка);
// Инициализируем процессор вывода
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДокументРезультат.АвтоМасштаб = Истина;
КонецПроцедуры
Источник
Не работает отбор в системе компоновки данных
Делаю отчет на СКД. Источник данных — запрос:
ВЫБРАТЬ
ибсВыданныеТалоныОстаткиИОбороты.Контрагент КАК Контрагент,
ибсВыданныеТалоныОстаткиИОбороты.ДоговорКонтрагента КАК Договор,
ибсВыданныеТалоныОстаткиИОбороты.Талон КАК Талон,
ибсРеквизитыДоговоровСрезПоследних.ибсРайон КАК Район,
ибсРеквизитыДоговоровСрезПоследних.ибсТипДоговора КАК ТипДоговора,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоПриход КАК Выдано,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоРасход КАК Использовано,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток
ИЗ
РегистрНакопления.ибсВыданныеТалоны.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ибсВыданныеТалоныОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ибсРеквизитыДоговоров.СрезПоследних(&КонецПериода, ) КАК ибсРеквизитыДоговоровСрезПоследних
ПО ибсВыданныеТалоныОстаткиИОбороты.ДоговорКонтрагента = ибсРеквизитыДоговоровСрезПоследних.ДоговорКонтрагента
УПОРЯДОЧИТЬ ПО
Контрагент, Договор
В компоновке указываю ресурсы НачальныйОстаток, Выдано, Использовано, КонечныйОстаток. Создаю единственную группировку Контрагент, Договор, Талон, Договор, ТипДоговора и на закладке выбранные поля добавляю все 4 ресурса. Отчет формируется правильно, но при включении отбора по полям Район или ТипДоговора получаю пустой отчет. Что я делаю не так? Почему поля взяты из таблицы прикрепленной Левым соединением нельзя использовать в отборе?
Источник
Не работает отбор даты в отчёте по Документу?
В параметрах не заполнял ничего, но тоже безрезультатно, пробовал через параметры.
Текст модуля внешней обработки:
Процедура ТипДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если (Объект.НачальнаяДата = Дата(1,1,1,0,0,0)) И (Объект.КонечнаяДата = Дата(1,1,1,0,0,0)) Тогда
ОтветПользователя = Вопрос(«Не выбран период! Установить Даты?»,РежимДиалогаВопрос.ОКОтмена);
Иначе
ОтображениеВыпадающегоСписка();
КонецЕсли;
Если ОтветПользователя <> КодВозвратаДиалога.ОК Тогда
ОтветПользователя = Неопределено;
ОтображениеВыпадающегоСписка();
КонецЕсли;
КонецПроцедуры
Если ВидыДокументовИзБазы.Количество()=0 Тогда
Предупреждение(«Документов в базе не обнаружено»);
ЭтаФорма.Закрыть();
Иначе
ВыборВидаДокумента=ВыбратьИзСписка(ВидыДокументовИзБазы,Элементы.ТипДокумента);
СписокВыбраныхДокументов = ВыборДокументов(Строка(ВыборВидаДокумента));
Если СписокВыбраныхДокументов.Количество()=0 Тогда
Предупреждение(«Документов «+ВыборВидаДокумента.Значение+» в базе не обнаружено»);
Иначе
ЗаполнениеТаблици1НаСервере(СписокВыбраныхДокументов);
КонецЕсли;
КонецЕсли
КонецПроцедуры
// ОтображениеВыпадающегоСписка()
&НаСервере
Функция ВыборДокументовИмя()
СписокИменДокуменов = Новый СписокЗначений;
Для Каждого ИмяДокумента Из Метаданные.Документы Цикл
СписокИменДокуменов.Добавить(ИмяДокумента.Имя);
КонецЦикла;
Возврат СписокИменДокуменов;
КонецФункции
// ВыборДокументов()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| «+ИмяДокумента+».Ссылка
|ИЗ
| Документ.»+ИмяДокумента+» КАК «+ИмяДокумента+»
|ГДЕ
| (НЕ «+ИмяДокумента+».ПометкаУдаления)»;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СписокДокументов.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
Возврат СписокДокументов;
КонецФункции
// ВыборДокуменов()
&НаСервере
Процедура ЗаполнениеТаблици1НаСервере(СписокДокументов)
ТаблицаВыбраныхДокументов1 = Новый ТаблицаЗначений;
ТаблицаВыбраныхДокументов1.Колонки.Добавить(«Отбор»);
ТаблицаВыбраныхДокументов1.Колонки.Добавить(«Реквизит»);
ТаблицаВыбраныхДокументов1.Колонки.Добавить(«Значение»);
ТаблицаВыбраныхДокументов1.Колонки.Добавить(«Дата»);
ТаблицаВыбраныхДокументов1.Колонки.Добавить(«Сумма»);
Для Каждого Документ Из СписокДокументов Цикл
СтрокаТаблици = ТаблицаВыбраныхДокументов1.Добавить();
СтрокаТаблици.Отбор = Документ.Пометка;
СтрокаТаблици.Реквизит = Документ.Значение.Ссылка;
СтрокаТаблици.Значение = Документ.Значение.Контрагент;
СтрокаТаблици.Дата = Документ.Значение.Дата;
СтрокаТаблици.Сумма = Документ.Значение.СуммаДокумента;
КонецЦикла;
ЗначениеВДанныеФормы(ТаблицаВыбраныхДокументов1,Таблица1);
КонецПроцедуры
// ЗаполнениеТаблици1НаСервере()
&НаКлиенте
Процедура Отчет(Команда)
&НаСервере
Процедура ЗаполнениеТаблици2НаСервере(Данные)
Источник