|
Отбор по типу документа в запросе | ☑ | ||
---|---|---|---|---|
0
Morozov Roman
08.11.22
✎
07:42
|
Здравствуйте! Кто может подсказать, нужен отчет по документам (не по регистру), в нем 6 документов должна быть возможность у пользователя делать отбор по типу документа, если отбор не указан тогда выводить результат по всем документам в запросе, платформа 8.2, пытаюсь сделать на СКД,
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка, РеализацияТоваровУслуг.Дата КАК Дата, РеализацияТоваровУслуг.СуммаДокумента, РеализацияТоваровУслуг.Контрагент КАК Контрагент ПОМЕСТИТЬ ВТ_Документы ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Проведен = ИСТИНА И РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ И РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ОплатаОтПокупателяПлатежнойКартой.Ссылка, ОплатаОтПокупателяПлатежнойКартой.Дата, ОплатаОтПокупателяПлатежнойКартой.СуммаДокумента, ОплатаОтПокупателяПлатежнойКартой.Контрагент ИЗ Документ.ОплатаОтПокупателяПлатежнойКартой КАК ОплатаОтПокупателяПлатежнойКартой ГДЕ ОплатаОтПокупателяПлатежнойКартой.ПометкаУдаления = ЛОЖЬ И ОплатаОтПокупателяПлатежнойКартой.Проведен = ИСТИНА И ОплатаОтПокупателяПлатежнойКартой.Дата МЕЖДУ &Дата1 И &Дата2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПриходныйКассовыйОрдер.Ссылка, ПриходныйКассовыйОрдер.Дата, ПриходныйКассовыйОрдер.СуммаДокумента, ПриходныйКассовыйОрдер.Контрагент ИЗ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер ГДЕ ПриходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ И ПриходныйКассовыйОрдер.Проведен = ИСТИНА И ПриходныйКассовыйОрдер.Дата МЕЖДУ &Дата1 И &Дата2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РасходныйКассовыйОрдер.Ссылка, РасходныйКассовыйОрдер.Дата, РасходныйКассовыйОрдер.СуммаДокумента, РасходныйКассовыйОрдер.Контрагент ИЗ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер ГДЕ РасходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ И РасходныйКассовыйОрдер.Проведен = ИСТИНА И РасходныйКассовыйОрдер.Дата МЕЖДУ &Дата1 И &Дата2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПлатежноеПоручениеВходящее.Ссылка, ПлатежноеПоручениеВходящее.Дата, ПлатежноеПоручениеВходящее.СуммаДокумента, ПлатежноеПоручениеВходящее.Контрагент ИЗ Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее ГДЕ ПлатежноеПоручениеВходящее.ПометкаУдаления = ЛОЖЬ И ПлатежноеПоручениеВходящее.Проведен = ИСТИНА И ПлатежноеПоручениеВходящее.Дата МЕЖДУ &Дата1 И &Дата2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВозвратТоваровОтПокупателя.Ссылка, ВозвратТоваровОтПокупателя.Дата, ВозвратТоваровОтПокупателя.СуммаДокумента, ВозвратТоваровОтПокупателя.Контрагент ИЗ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя ГДЕ ВозвратТоваровОтПокупателя.Проведен = ИСТИНА И ВозвратТоваровОтПокупателя.ПометкаУдаления = ЛОЖЬ И ВозвратТоваровОтПокупателя.Дата МЕЖДУ &Дата1 И &Дата2 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Документы.Ссылка, ВТ_Документы.Дата, ВТ_Документы.Контрагент, ВТ_Документы.СуммаДокумента ИЗ ВТ_Документы КАК ВТ_Документы ГДЕ ВТ_Документы.Ссылка = &Ссылка |
|||
1
SleepyHead
гуру
08.11.22
✎
07:45
|
Где ТипЗначения(ВТ_Документы.Ссылка)=Тип(Документ.хххх)
|
|||
2
Morozov Roman
08.11.22
✎
07:52
|
(1) Пробовал, в результат попадают только документы реализации, ну или того документа, который указываешь в = ТИП(Документ.xxxx)
|
|||
3
Morozov Roman
08.11.22
✎
07:53
|
(1) Возможности выбора нет
|
|||
4
DrZombi
гуру
08.11.22
✎
08:03
|
(3) Пример, как быть... до конца писать самому :)
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РасходныйКассовыйОрдер.Ссылка, РасходныйКассовыйОрдер.Дата, РасходныйКассовыйОрдер.СуммаДокумента, РасходныйКассовыйОрдер.Контрагент ИЗ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер ГДЕ РасходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ И РасходныйКассовыйОрдер.Проведен = ИСТИНА И РасходныйКассовыйОрдер.Дата МЕЖДУ &Дата1 И &Дата2 И &ОтборДокумента_РКО = Истина ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПлатежноеПоручениеВходящее.Ссылка, ПлатежноеПоручениеВходящее.Дата, ПлатежноеПоручениеВходящее.СуммаДокумента, ПлатежноеПоручениеВходящее.Контрагент ИЗ Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее ГДЕ ПлатежноеПоручениеВходящее.ПометкаУдаления = ЛОЖЬ И ПлатежноеПоручениеВходящее.Проведен = ИСТИНА И ПлатежноеПоручениеВходящее.Дата МЕЖДУ &Дата1 И &Дата2 И &ОтборДокумента_ППВ = Истина |
|||
5
Ryzeman
08.11.22
✎
08:04
|
(3) Ну, сам мог догадаться как переделать. Выводи в запросе ТипЗначения(ВТ_Документы.Ссылка) КАК ВидДокумента отдельным полем в СКД,
затем включай в пользовательский отбор ВидДокумента |
|||
6
DrZombi
гуру
08.11.22
✎
08:05
|
+(4) (0) в отчете, перед тем как выполнить запрос:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) //привилегированный режим... //УстановитьОтключениеБезопасногоРежима(Истина); //УстановитьПривилегированныйРежим(Истина); СтандартнаяОбработка=Ложь; //Поменяем текст запроса, на правильный... //СхемаКомпоновкиДанных.НаборыДанных.ОсновнойНабор.Запрос = ПолучитьТекстЗапроса_ОсновнойНабор(); //Параметры. ПользМодиф = Ложь; //Если нужно... Настройки = КомпоновщикНастроек.ПолучитьНастройки(); //Тут установка ваших параметров по условию, который вы выведите пользователю в диалоге... КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Если ПользМодиф = Истина Тогда ЗаполнитьПользовательскиеНастройки(Настройки, КомпоновщикНастроек.ПользовательскиеНастройки); //КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки); //КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПользовательскиеНастройкиМодифицированы",Истина); КонецЕсли; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки,,); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина); Результат = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ДокументРезультат.Вывести(Результат); //ПарамВкл = Неопределено; //ФиксацияСверху = ПолучитьЗначениеПараметра(Настройки,"ФиксацияСверху",0, ПарамВкл); // //Если ПарамВкл <> Неопределено и ПарамВкл = Истина и ФиксацияСверху > 0 Тогда // ДокументРезультат.ФиксацияСверху = ФиксацияСверху; //КонецЕсли; КонецПроцедуры |
|||
7
DrZombi
гуру
08.11.22
✎
08:06
|
+(6) (0) ЗаполнитьПользовательскиеНастройки....
Процедура ЗаполнитьПользовательскиеНастройки(НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Для Каждого СледПараметр Из НовыеНастройкиКД.ПараметрыДанных.Элементы Цикл Если Не ПустаяСтрока(СледПараметр.ИдентификаторПользовательскойНастройки) Тогда ПользовательскийПараметр = НовыеПользовательскиеНастройкиКД.Элементы.Найти(СледПараметр.ИдентификаторПользовательскойНастройки); Если ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда ПользовательскийПараметр.Значение = СледПараметр.Значение; ПользовательскийПараметр.Использование = СледПараметр.Использование; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
8
Ryzeman
08.11.22
✎
08:06
|
(4) если по красоте делать, тогда уж через язык расширения СКД
{Где ТипЗначения(ВТ_Документы.Ссылка)=Тип(Документ.хххх)} А ПриКомпоновкеДанных уже проверять указали или нет этот обор |
|||
9
Ryzeman
08.11.22
✎
08:06
|
(8) {Где ТипЗначения(ВТ_Документы.Ссылка)=&ВыбранныйТипДокумента}
|
|||
10
DrZombi
гуру
08.11.22
✎
08:09
|
(0) Держи еще наработки процедурок для отчетов на СКД :)
Функция ПолучитьЗначениеПараметра(Настройки_Основные,ИмяПараметра,ЗначениПоУмолчанию,ПараметрВключен=Ложь) РезФункц = ЗначениПоУмолчанию; НайденПараметр = Настройки_Основные.ПараметрыДанных.Элементы.Найти(ИмяПараметра); Если НайденПараметр <> Неопределено Тогда РезФункц = НайденПараметр.Значение; ПараметрВключен = НайденПараметр.Использование; КонецЕсли; Возврат РезФункц; КонецФункции Процедура УстановитьПараметр(Настройки_Основные,ИмяПараметра,Знач ЗначениеПоУмолчанию, Знач УстановитьНовоеЗначение=Ложь, пПользовательскиеНастройкиМодифицированы=Ложь, ВозвращаемоеЗначениеПараметра=Неопределено) НайденПараметр = Настройки_Основные.ПараметрыДанных.Элементы.Найти(ИмяПараметра); Если НайденПараметр = Неопределено Тогда ВозвращаемоеЗначениеПараметра = ЗначениеПоУмолчанию; //Не нашли, но вернем его... Возврат; КонецЕсли; пЗначение = НайденПараметр.Значение; Если УстановитьНовоеЗначение = Истина или Не ЗначениеЗаполнено(пЗначение) Тогда НайденПараметр.Значение = ЗначениеПоУмолчанию; пЗначение = ЗначениеПоУмолчанию; КонецЕсли; ВозвращаемоеЗначениеПараметра = пЗначение; НайденПараметр.Использование = Истина; //Для пользовательского интерфейса... ПользовательскийПараметр = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(НайденПараметр.ИдентификаторПользовательскойНастройки); Если ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда ПользовательскийПараметр.Значение = пЗначение; ПользовательскийПараметр.Использование = Истина; пПользовательскиеНастройкиМодифицированы = Истина; КонецЕсли; КонецПроцедуры |
|||
11
DrZombi
гуру
08.11.22
✎
08:09
|
(8) Да как то ему еще пользователю надо интерфейс организовать, ваш вариант не то что бы не то, но ему нужен список с галочками :)
|
|||
12
DrZombi
гуру
08.11.22
✎
08:11
|
+(10) (0) Пример, как пользоваться :)
ПользМодиф = Ложь; //Если нужно... Настройки = НовыеНастройкиКД; //КомпоновщикНастроек.ПолучитьНастройки(); ПараметрВключен = Неопределено; //Если вернет логику, то значит параметр есть и найден... Диспетчер = ПолучитьЗначениеПараметра(Настройки,"Диспетчер",Справочники.Диспетчеры.ПустаяСсылка(),ПараметрВключен); Если Не ЗначениеЗаполнено(Диспетчер) Тогда Диспетчер = ПараметрыСеанса.ТекущийДиспетчер; КонецЕсли; ЗначениеПараметра = Диспетчер; УстановитьПараметр(НовыеНастройкиКД,"Диспетчер",ЗначениеПараметра,Истина,ПользМодиф); |
|||
13
Фрэнки
08.11.22
✎
08:15
|
Выше дали рекомендации, как переделать вручную, т.е. кодом.
А в топике сказано на СКД, что видимо означает решить задачу только конструктором. неудобно тут рассказывать и показывать :-) Вот есть ссылка (нагуглил, не моя) https://helpf.pro/faq/view/743.htm Там в конструкторе запроса на СКД есть вкладочка еще одна. пункт 8. Компоновка данных. Если этой закадкой пользоваться с вкладками Поля и Условия. То в результате построения запроса будет конструкция с такими скобками {...} Ну а если так не получится, то тогда программно, как выше примеров накидали. |
|||
14
Morozov Roman
10.11.22
✎
07:27
|
(13) (12) (8) (1) Всем спасибо за подсказку!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |