Имя: Пароль:
1C
 
СКД программно формируется в разы дольше, чем из Предприятия
0 DTXyupyup
 
03.09.15
15:33
Параметры те же. Почему? Куда копать?
1 DTXyupyup
 
03.09.15
15:34
Вывод происходит в таблицу значений
2 vis_tmp
 
03.09.15
15:38
Ну и ник ты себе выбрал...
3 DTXyupyup
 
03.09.15
15:40
(2) Что тут поделаешь, если банят на пустом месте
4 DTXyupyup
 
03.09.15
15:42
Запрос на обозрение:
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад КАК Склад,
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТоварыВРозницеОстатки.Склад,
    ТоварыВРозницеОстатки.Номенклатура,
    ТоварыВРозницеОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(&Период, ) КАК ТоварыВРозницеОстатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТоварыКПолучениюНаСкладыОстатки.Склад,
    ТоварыКПолучениюНаСкладыОстатки.Номенклатура,
    -ТоварыКПолучениюНаСкладыОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыКПолучениюНаСклады.Остатки(&Период, ) КАК ТоварыКПолучениюНаСкладыОстатки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Номенклатура,
    СУММА(ВТ.КоличествоОстаток) КАК КоличествоОстаток,
    ВТ.Склад
ПОМЕСТИТЬ УпрКолНомСкл
ИЗ
    ВТ КАК ВТ

СГРУППИРОВАТЬ ПО
    ВТ.Номенклатура,
    ВТ.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(УчетЗатратОстатки.КоличествоОстаток) КАК КоличествоВсего,
    АУЗ.Затрата КАК Номенклатура,
    СУММА(УчетЗатратОстатки.СтоимостьОстаток) КАК СтоимостьВсего
ПОМЕСТИТЬ МПЗКолНом
ИЗ
    РегистрНакопления.УчетЗатрат.Остатки(&Период, ) КАК УчетЗатратОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаВидаУчета КАК АВУ
        ПО УчетЗатратОстатки.АналитикаВидаУчета = АВУ.Ссылка
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаЗатрат КАК АУЗ
        ПО УчетЗатратОстатки.АналитикаУчетаЗатрат = АУЗ.Ссылка
ГДЕ
    АВУ.РазделУчета = &РазделУчета

СГРУППИРОВАТЬ ПО
    АУЗ.Затрата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЕСТЬNULL(МПЗКолНом.Номенклатура, УпрКолНомСкл.Номенклатура) КАК Номенклатура,
    УпрКолНомСкл.Склад КАК Склад2,
    ВЫБОР
        КОГДА ЕСТЬNULL(МПЗКолНом.КоличествоВсего, 0) = 0
            ТОГДА 0
        ИНАЧЕ ЕСТЬNULL(УпрКолНомСкл.КоличествоОстаток, 0) * ЕСТЬNULL(МПЗКолНом.СтоимостьВсего, 0) / ЕСТЬNULL(МПЗКолНом.КоличествоВсего, 0)
    КОНЕЦ КАК Стоимость,
    ЕСТЬNULL(УпрКолНомСкл.КоличествоОстаток, 0) КАК Количество
ПОМЕСТИТЬ МПЗ
ИЗ
    МПЗКолНом КАК МПЗКолНом
        ПОЛНОЕ СОЕДИНЕНИЕ УпрКолНомСкл КАК УпрКолНомСкл
        ПО МПЗКолНом.Номенклатура = УпрКолНомСкл.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(УчетЗатратОстатки.КоличествоОстаток) КАК КоличествоВсего,
    "___Товары отгруженные" КАК Склад,                        
    &Счет14725 КАК СчетУчета,
    СУММА(УчетЗатратОстатки.СтоимостьОстаток) КАК СтоимостьВсего,
    АУЗ.Затрата,
    АУП.Комиссионер,
    &C340CIS КАК Подразделение
ПОМЕСТИТЬ ТУ
ИЗ
    РегистрНакопления.УчетЗатрат.Остатки(&Период, ) КАК УчетЗатратОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаВидаУчета КАК АВУ
        ПО УчетЗатратОстатки.АналитикаВидаУчета = АВУ.Ссылка
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаЗатрат КАК АУЗ
        ПО УчетЗатратОстатки.АналитикаУчетаЗатрат = АУЗ.Ссылка
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПартий КАК АУП
        ПО УчетЗатратОстатки.АналитикаУчетаПартий = АУП.Ссылка
ГДЕ
    АВУ.РазделУчета = &РазделУчета2

СГРУППИРОВАТЬ ПО
    АУЗ.Затрата,
    АУП.Комиссионер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МПЗ.Номенклатура,
    МПЗ.Склад2,
    МПЗ.Стоимость,
    МПЗ.Количество,
    NULL КАК Комиссионер,
    МПЗ.Номенклатура.НоменклатурнаяГруппа.СчетУчетаУпр Как СчетУчета,
    МПЗ.Склад2.Подразделение КАК Подразделение
ИЗ
    МПЗ КАК МПЗ
ГДЕ (НЕ &Только14000 ИЛИ МПЗ.Номенклатура.НоменклатурнаяГруппа.СчетУчетаУпр В ИЕРАРХИИ (&Счет14000))

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТУ.Затрата,
    ТУ.Склад,
    ТУ.СтоимостьВсего,
    ТУ.КоличествоВсего,
    ТУ.Комиссионер,
    ТУ.СчетУчета,
    ТУ.Подразделение
ИЗ
    ТУ КАК ТУ
5 LordCMEPTb
 
03.09.15
15:57
Как вариант, могут различаться настройки выводимых группировок, отборы. Тут бы лучше всего сравнить оптимизированные запросы программного и интерактивного формирования. Текст исходного запроса мало поможет.
6 LordCMEPTb
 
03.09.15
15:59
Ну и да, оптимизированные тексты запросов можно сравнивать либо через консоль отчетов, либо выдирать программно на этапе:

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Попытка // Попробуем сформировать макет
        МакетКомпоновки = КомпоновщикМакета.Выполнить(ИсходнаяСхема, НастройкиОтчета);
    Исключение // Что-то не так
        СообщитьПользователю("Не удалось скомпоновать макет!" + Символы.ПС + ОписаниеОшибки(), "ИмяСхемыДляАнализа");
    КонецПопытки;
        
    // Найдем набор в макете
    НужныйНабор = МакетКомпоновки.НаборыДанных.Найти(ИмяНабораДанных);
    Если НужныйНабор = Неопределено Тогда
        СообщитьПользователю("Не удалось найти нужный набор в скомпонованном макете!", ИмяСхемыДляАнализа);
        Возврат СтруктураРезультат;
    Иначе // Возьмем текст запроса из макета
        ТекстЗапроса = НужныйНабор.Запрос;
    КонецЕсли;
7 Гёдза
 
03.09.15
15:59
Отключить автозаполнение и вообще забыть эту опцию
8 LordCMEPTb
 
03.09.15
17:23
и вообще забыть про СКД, вручную выводить данные из запроса в табличный документ или таблицу значений...
9 DTXyupyup
 
08.09.15
16:12
Оказалось, проблема сохраняется только при включенной отладке. Всё равно странно.