Имя: Пароль:
1C
1С v8
Компоновка - не корректно работают отборы
0 ОператорПК
 
18.11.11
12:23
Здравствуйте.

Проблема в следующем:
Пытаюсь по средствам компоновки получить Таблицу продаж Номенклатура/Сумма.
Собственно определяю период и фильтр по номенклатуре в итоге компоновка виснет (в результате отработает но может через 30 минут может через 10).... Если устанавливать период без фильтра по номенклатуре то работает быстро (несколько секунд) если устанавливать фильтр но номенклатуре без переода то тоже отрабатывает быстро (несколько секунд), кто сталкивался есть идеи?  

Запрос компоновки:
ВЫБРАТЬ
   ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
   ПродажиОбороты.Номенклатура КАК Номенклатура
{ВЫБРАТЬ
   СтоимостьОборот,
   Номенклатура.*}
ИЗ
   РегистрНакопления.Продажи.Обороты(&Д1, &Д2, , {(Номенклатура).* КАК Номенклатура}) КАК ПродажиОбороты

Текст процедуры обработки:

//Функция возвращает Талилицу значений Номенклатура+Сумма
Функция РасчетФакта1()
   СхемаНаша=ПолучитьМакет("Компоновка2");
   Компоновщик1.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаНаша));//  ЭтотОбъект.СхемаКомпоновкиДанных
   Компоновщик1.ЗагрузитьНастройки(СхемаНаша.НастройкиПоУмолчанию);
   //передаем фильтры по номенклатуре из одного компоновщика в другой
   Для каждого у из ЭтотОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
       Если Строка(у.ЛевоеЗначение)="Номенклатура" и у.Использование Тогда
           Нашли=Ложь;
           Для каждого ф из Компоновщик1.Настройки.Отбор.Элементы Цикл
               Если Строка(ф.ЛевоеЗначение)="Номенклатура" Тогда
                   Нашли=Истина;
                   ф.ПравоеЗначение=у.ПравоеЗначение;
                   ф.ВидСравнения=у.ВидСравнения;
               КонецЕсли;
           КонецЦикла;
           Если не Нашли Тогда
               НовыйЭл=Компоновщик1.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
               ЗаполнитьЗначенияСвойств(НовыйЭл, у);
           Конецесли;
       КонецЕсли;
   КонецЦикла;
   СхемаНаша.Параметры.Д1.Значение=Новый Граница(НачалоМесяца(мДатаКонцаПериодаОтчета), ВидГраницы.Включая);
   СхемаНаша.Параметры.Д2.Значение=Новый Граница(КонецМесяца(мДатаКонцаПериодаОтчета), ВидГраницы.Включая);
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаНаша, //ЭтотОбъект.СхемаКомпоновкиДанных
   Компоновщик1.Настройки, , ,
   Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   Тззз = Новый ТаблицаЗначений;
   ПроцессорВывода.УстановитьОбъект(Тззз);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
       
   Возврат Тззз;
КонецФункции
1 ОператорПК
 
18.11.11
13:09
есть идеи?
2 ОператорПК
 
18.11.11
13:38
пятница?
3 НЕА123
 
18.11.11
14:10
а запрос итоговый какой получается?
4 ОператорПК
 
18.11.11
14:13
это не то?
ВЫБРАТЬ
   ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
   ПродажиОбороты.Номенклатура КАК Номенклатура
{ВЫБРАТЬ
   СтоимостьОборот,
   Номенклатура.*}
ИЗ
   РегистрНакопления.Продажи.Обороты(&Д1, &Д2, , {(Номенклатура).* КАК Номенклатура}) КАК ПродажиОбороты
5 ОператорПК
 
18.11.11
14:16
вопрос снимается... работает вот так (почему так х.з.):

ВЫБРАТЬ
   ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
   ПродажиОбороты.Номенклатура КАК Номенклатура
{ВЫБРАТЬ
   СтоимостьОборот,
   Номенклатура.*}
ИЗ
   РегистрНакопления.Продажи.Обороты(&Д1, &Д2, , ) КАК ПродажиОбороты
{ГДЕ
   ПродажиОбороты.Номенклатура.*}