|
Отборы в СКД набор данных объект | ☑ | ||
---|---|---|---|---|
0
Zakella86
02.08.16
✎
17:17
|
Добрый день. Есть вопрос к уважаемым ветеранам.
Сделал отчет СКД через набор данных объект. Обработал ТЗ и выгрузил в отчет. Все работает хорошо. Одна проблемка, это отбор. Отбор не работает. Именно с набором данных объект. Помогите пожалуйста . Вот код запроса. Есть подозрение что нужно еще что то в компоновщик прописать. Но что не могу понять. Т.е к примеру у меня в быстром отборе есть номенклатура, но отбора в таблице не делает. Спасибо Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; НачалоПериода=КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("86c867de-73bc-4b8e-992a-77744461e8a7"); КонецПериода=КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти("8b3b2d35-7494-4ebc-8d80-a50e2f35c6b5"); Филиал=КомпоновщикНастроек.ФиксированныеНастройки.ПараметрыДанных.Элементы.найти("Филиал"); тзСписокРегистраторов=Новый ТаблицаЗначений; //тзСписокРегистраторов.Колонки.Добавить("Регистратор"); тзСписокРегистраторов.Колонки.Добавить("СуммаСебестоимости",Новый ОписаниеТипов("Число")); тзСписокРегистраторов.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число")); тзСписокРегистраторов.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); тзСписокРегистраторов.Колонки.Добавить("Склад",Новый ОписаниеТипов("СправочникСсылка.Склады")); //тзМатериалы=Новый ТаблицаЗначений; //тзМатериалы.Колонки.Добавить("Материал"); //тзМатериалы.Колонки.Добавить("Продукция"); //тзМатериалы.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число")); //тзМатериалы.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число")); ПолучитьТЗРасчетнуюЦену(НачалоПериода.Значение,КонецПериода.Значение,Филиал.Значение,тзСписокРегистраторов); ТаблицаПродаж=ПолучитьПродажи(НачалоПериода.Значение,КонецПериода.Значение,Филиал.Значение); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗПродажи.Количество, | ТЗПродажи.Номенклатура, | ТЗПродажи.СуммаПродажи |ПОМЕСТИТЬ Продажи |ИЗ | &ТЗПродажи КАК ТЗПродажи |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Себестомости.Номенклатура, | Себестомости.СуммаСебестоимости, | Себестомости.Склад |ПОМЕСТИТЬ Себестоимость |ИЗ | &Себестомости КАК Себестомости |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Продажи.Количество, | Продажи.Номенклатура, | Продажи.СуммаПродажи, | Себестоимость.СуммаСебестоимости, | Себестоимость.Склад |ИЗ | Продажи КАК Продажи | ЛЕВОЕ СОЕДИНЕНИЕ Себестоимость КАК Себестоимость | ПО Продажи.Номенклатура = Себестоимость.Номенклатура"; Запрос.УстановитьПараметр("ТЗПродажи",ТаблицаПродаж); Запрос.УстановитьПараметр("Себестомости",тзСписокРегистраторов); тзИтоговая = Запрос.Выполнить().Выгрузить(); МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ВнешнийНаборДанных = Новый Структура("тзИтоговая", тзИтоговая); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры |
|||
1
ИсчадиеADO
02.08.16
✎
17:29
|
1. да все там должно работать. а) посмотри в отладке Настройки.Отбор.Элементы. Причем у них "использование" должно быть в истину
2. ты сначала формируешь все-все, а потом отбираешь только, а это не правильно. Нужно попытаться все в 1 пакетный запрос запихать в СКД. Если с ценами проблема, то гугли темы "Срез последних на каждую дату" |
|||
2
Zakella86
02.08.16
✎
17:32
|
да ты прав
в Настройки.Отбор.Элементы отбор по номенклатуре стоит ложь, но в быстром отборе я поставил галочку и указал отбор. Как сделать что бы он стоял в положении истина? |
|||
3
ИсчадиеADO
02.08.16
✎
17:35
|
(2) нужно уже реализацию смотреть
|
|||
4
Zakella86
02.08.16
✎
17:38
|
не, он в самом начале до загрузки ТЗ не дает Использование =истина. Но когда ставлю галочку Использование не в быстром отборе а в настройках СКД , тогда стоит Использование истина
|
|||
5
Zakella86
03.08.16
✎
16:20
|
есть у кого то еще идеи?
|
|||
6
Nuobu
03.08.16
✎
16:22
|
(4) Быстрый отбор это не Настройки.Отбор...., это - ПользовательскиеНастройки.Отбор. Глянь там.
|
|||
7
Zakella86
03.08.16
✎
16:31
|
КомпоновщикНастроек.ПользовательскиеНастройки там только параметры, но отбора нет. или я не там ищу?
|
|||
8
Zakella86
03.08.16
✎
16:38
|
мне кажется дело в этой строке
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); в настройках отбор по Номенклатура стоит ЛОЖЬ, хотя на форме быстрого отбора стоит галочка |
|||
9
Zakella86
03.08.16
✎
17:01
|
в общем нашел тут кое что
настройки быстрого отбора находятся в КомпоновщикНастроек.ПользовательскиеНастройки.Элементы. Там стоит отбор. Но тип у них ПользовательскиеНастройкиКомпоновкиДанных. когда выполняется строка КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); дает ошибку, на второй параметр. Так как работает там только НастройкиКомпоновкиДанных . Т.е когда я захожу изменить вариант и ставлю отбор то может работаеть, с быстрого отбора не работает. Что еще можно сделать? |
|||
10
Zakella86
03.08.16
✎
17:36
|
все решил , пользовательские настройки получаются через код
Настройки=КомпоновщикНастроек.ПолучитьНастройки(); тема закрыта . спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |