Имя: Пароль:
1C
1С v8
Зависает отчет на СКД
0 deathogre
 
24.10.15
15:15
В консоли запросов выполняется, в СКД этот же запрос начинает думать и винда перестает отвечать на любые движения. Похоже как будто забивается вся оперативка. Где порылась собака?
1 Armando
 
24.10.15
22:23
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки());
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл("c:\Temp\МакетКомпоновки.xml");
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, МакетКомпоновки);
    ЗаписьXML.Закрыть();
КонецПроцедуры

сделай так и выложи полученный файл
2 PR третий
 
24.10.15
22:25
(0) Выводи программно и смотри, где виснет
3 Armando
 
24.10.15
22:37
Если это "простейший" отчет, то пока у меня 2 варианта:
1. Табличный документ получается такой большой, что 1С не может его обработать.
2. В отчете есть группировки, и в группировку попадает огромное количество детальных записей, которое 1С так же не может обработать.
4 Пеппи
 
24.10.15
22:43
(0) упрощай запрос и проверяй
похоже дело в самом запросе
5 GenV
 
24.10.15
22:53
(0) Есть хороший инструмент "Мобильная подсистема "Инструменты разработчика" (портативная версия) http://devtool1c.ucoz.ru/?l7ysVU
В них есть консоль СКД из которой можно открыть консоль запросов и получить конечный запрос с наложенными отборами и выбранными полями. СКД иногда (при неправильно построенной схеме) накладывает неожиданные отборы или не включает нужные поля.
ЗЫ То же можно сделать и в коде при программном выводе как в (1)
6 deathogre
 
25.10.15
12:09
спс, попробую
7 deathogre
 
25.10.15
12:10
но вроде разобрался, простое использование ЕСТЬNULL помогло, правда не знаю почему :)
8 Armando
 
25.10.15
14:49
(7) покажи что было и что стало
9 deathogre
 
25.10.15
16:35
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТоварыОрганизаций.Номенклатура КАК Номенклатура,
    ТоварыОрганизаций.Характеристика КАК Характеристика,
    ТоварыОрганизаций.Склад,
    ТоварыОрганизаций.Организация,
    зтПриходОтПоставщиков.КоличествоПриходОтПоставщиков КАК КоличествоПриходОтПоставщиков,
    зтПриходОтПоставщиков.СуммаСебестоимостьПриходОтПоставщиков КАК СуммаСебестоимостьПриходОтПоставщиков,
    зтПриходОтПоставщиков.СуммаРозничнаяПриходОтПоставщиков КАК СуммаРозничнаяПриходОтПоставщиков,
    тоРасходТолькоСОсновногоСклада.КоличествоПеремещениеТолькоСОсновногоСклада КАК КоличествоПеремещениеТолькоСОсновногоСклада,
    тоРасходТолькоСОсновногоСклада.СуммаСебестоимостьПеремещениеТолькоСОсновногоСклада КАК СуммаСебестоимостьПеремещениеТолькоСОсновногоСклада,
    тоРасходТолькоСОсновногоСклада.СуммаРозничнаяПеремещениеТолькоСОсновногоСклада КАК СуммаРозничнаяПеремещениеТолькоСОсновногоСклада,
    тоПриходНаВсеСклады.КоличествоПриходНаВсеСклады - тоРасходТолькоСОсновногоСклада.КоличествоПеремещениеТолькоСОсновногоСклада КАК КоличествоПриходНаВсеСкладыМинусОсновной,
    тоПриходНаВсеСклады.СуммаСебестоимостьПриходНаВсеСклады - тоРасходТолькоСОсновногоСклада.СуммаСебестоимостьПеремещениеТолькоСОсновногоСклада КАК СуммаСебестоимостьПриходНаВсеСкладыМинусОсновной,
    тоПриходНаВсеСклады.СуммаРозничнаяПриходНаВсеСклады - тоПриходНаВсеСклады.СуммаРозничнаяПриходНаВсеСклады КАК СуммаРозничнаяПриходНаВсеСкладыМинусОсновной,
    тоРасходНаВсеСклады.КоличествоРасходНаВсеСклады,
    тоРасходНаВсеСклады.СуммаСебестоимостьРасходНаВсеСклады,
    тоРасходНаВсеСклады.СуммаРозничнаяРасходНаВсеСклады
ИЗ
    РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Авто, , ) КАК ТоварыОрганизаций
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗакупкиТоваровОбороты.Номенклатура КАК Номенклатура,
            ЗакупкиТоваровОбороты.Характеристика КАК Характеристика,
            ЗакупкиТоваровОбороты.Магазин.СкладПоступления КАК Склад,
            СУММА(ЕСТЬNULL(ЗакупкиТоваровОбороты.КоличествоОборот, 0)) КАК КоличествоПриходОтПоставщиков,
            СУММА(ЕСТЬNULL(ЗакупкиТоваровОбороты.СуммаОборот, 0)) КАК СуммаСебестоимостьПриходОтПоставщиков,
            СУММА(ЕСТЬNULL(ЗакупкиТоваровОбороты.СуммаРозничнаяОборот, 0)) КАК СуммаРозничнаяПриходОтПоставщиков
        ИЗ
            РегистрНакопления.ЗакупкиТоваров.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, , ) КАК ЗакупкиТоваровОбороты
        
        СГРУППИРОВАТЬ ПО
            ЗакупкиТоваровОбороты.Магазин.СкладПоступления,
            ЗакупкиТоваровОбороты.Номенклатура,
            ЗакупкиТоваровОбороты.Характеристика) КАК зтПриходОтПоставщиков
        ПО ТоварыОрганизаций.Номенклатура = зтПриходОтПоставщиков.Номенклатура
            И ТоварыОрганизаций.Характеристика = зтПриходОтПоставщиков.Характеристика
            И ТоварыОрганизаций.Склад = зтПриходОтПоставщиков.Склад
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ОрдерНаПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
            ОрдерНаПеремещениеТоваровТовары.Характеристика КАК Характеристика,
            ОрдерНаПеремещениеТоваровТовары.Ссылка.СкладПолучатель КАК СкладПолучатель,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.Количество, 0)) КАК КоличествоПеремещениеТолькоСОсновногоСклада,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.СебестоимостьСумма, 0)) КАК СуммаСебестоимостьПеремещениеТолькоСОсновногоСклада,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.Сумма, 0)) КАК СуммаРозничнаяПеремещениеТолькоСОсновногоСклада
        ИЗ
            РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Регистратор, , ) КАК ТоварыОрганизацийОстаткиИОбороты
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОрдерНаПеремещениеТоваров.Товары КАК ОрдерНаПеремещениеТоваровТовары
                ПО ((ВЫРАЗИТЬ(ТоварыОрганизацийОстаткиИОбороты.Регистратор КАК Документ.ОрдерНаПеремещениеТоваров)) = ОрдерНаПеремещениеТоваровТовары.Ссылка)
        ГДЕ
            ТоварыОрганизацийОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОрдерНаПеремещениеТоваров
            И ТоварыОрганизацийОстаткиИОбороты.Регистратор.СкладОтправитель.Наименование = "1Основной склад"
        
        СГРУППИРОВАТЬ ПО
            ОрдерНаПеремещениеТоваровТовары.Номенклатура,
            ОрдерНаПеремещениеТоваровТовары.Характеристика,
            ОрдерНаПеремещениеТоваровТовары.Ссылка.СкладПолучатель
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            ПеремещениеТоваровТовары.Номенклатура,
            ПеремещениеТоваровТовары.Характеристика,
            ПеремещениеТоваровТовары.Ссылка.СкладПолучатель,
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.Количество, 0)),
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.СебестоимостьСумма, 0)),
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.Сумма, 0))
        ИЗ
            РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Регистратор, , ) КАК ТоварыОрганизацийОстаткиИОбороты
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
                ПО ((ВЫРАЗИТЬ(ТоварыОрганизацийОстаткиИОбороты.Регистратор КАК Документ.ПеремещениеТоваров)) = ПеремещениеТоваровТовары.Ссылка)
        ГДЕ
            ТоварыОрганизацийОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
            И ТоварыОрганизацийОстаткиИОбороты.Регистратор.СкладОтправитель.Наименование = "1Основной склад"
        
        СГРУППИРОВАТЬ ПО
            ПеремещениеТоваровТовары.Номенклатура,
            ПеремещениеТоваровТовары.Характеристика,
            ПеремещениеТоваровТовары.Ссылка.СкладПолучатель) КАК тоРасходТолькоСОсновногоСклада
        ПО ТоварыОрганизаций.Номенклатура = тоРасходТолькоСОсновногоСклада.Номенклатура
            И ТоварыОрганизаций.Характеристика = тоРасходТолькоСОсновногоСклада.Характеристика
            И ТоварыОрганизаций.Склад = тоРасходТолькоСОсновногоСклада.СкладПолучатель
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ОрдерНаПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
            ОрдерНаПеремещениеТоваровТовары.Характеристика КАК Характеристика,
            ОрдерНаПеремещениеТоваровТовары.Ссылка.СкладПолучатель КАК СкладПолучатель,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.Количество, 0)) КАК КоличествоПриходНаВсеСклады,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.СебестоимостьСумма, 0)) КАК СуммаСебестоимостьПриходНаВсеСклады,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.Сумма, 0)) КАК СуммаРозничнаяПриходНаВсеСклады
        ИЗ
            РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Регистратор, , ) КАК ТоварыОрганизацийОстаткиИОбороты
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОрдерНаПеремещениеТоваров.Товары КАК ОрдерНаПеремещениеТоваровТовары
                ПО ((ВЫРАЗИТЬ(ТоварыОрганизацийОстаткиИОбороты.Регистратор КАК Документ.ОрдерНаПеремещениеТоваров)) = ОрдерНаПеремещениеТоваровТовары.Ссылка)
        ГДЕ
            ТоварыОрганизацийОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОрдерНаПеремещениеТоваров
        
        СГРУППИРОВАТЬ ПО
            ОрдерНаПеремещениеТоваровТовары.Номенклатура,
            ОрдерНаПеремещениеТоваровТовары.Характеристика,
            ОрдерНаПеремещениеТоваровТовары.Ссылка.СкладПолучатель
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            ПеремещениеТоваровТовары.Номенклатура,
            ПеремещениеТоваровТовары.Характеристика,
            ПеремещениеТоваровТовары.Ссылка.СкладПолучатель,
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.Количество, 0)),
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.СебестоимостьСумма, 0)),
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.Сумма, 0))
        ИЗ
            РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Регистратор, , ) КАК ТоварыОрганизацийОстаткиИОбороты
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
                ПО ((ВЫРАЗИТЬ(ТоварыОрганизацийОстаткиИОбороты.Регистратор КАК Документ.ПеремещениеТоваров)) = ПеремещениеТоваровТовары.Ссылка)
        ГДЕ
            ТоварыОрганизацийОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
        
        СГРУППИРОВАТЬ ПО
            ПеремещениеТоваровТовары.Номенклатура,
            ПеремещениеТоваровТовары.Характеристика,
            ПеремещениеТоваровТовары.Ссылка.СкладПолучатель) КАК тоПриходНаВсеСклады
        ПО ТоварыОрганизаций.Номенклатура = тоПриходНаВсеСклады.Номенклатура
            И ТоварыОрганизаций.Характеристика = тоПриходНаВсеСклады.Характеристика
            И ТоварыОрганизаций.Склад = тоПриходНаВсеСклады.СкладПолучатель
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ОрдерНаПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
            ОрдерНаПеремещениеТоваровТовары.Характеристика КАК Характеристика,
            ОрдерНаПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК СкладОтправитель,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.Количество, 0)) КАК КоличествоРасходНаВсеСклады,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.СебестоимостьСумма, 0)) КАК СуммаСебестоимостьРасходНаВсеСклады,
            СУММА(ЕСТЬNULL(ОрдерНаПеремещениеТоваровТовары.Сумма, 0)) КАК СуммаРозничнаяРасходНаВсеСклады
        ИЗ
            РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Регистратор, , ) КАК ТоварыОрганизацийОстаткиИОбороты
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОрдерНаПеремещениеТоваров.Товары КАК ОрдерНаПеремещениеТоваровТовары
                ПО ((ВЫРАЗИТЬ(ТоварыОрганизацийОстаткиИОбороты.Регистратор КАК Документ.ОрдерНаПеремещениеТоваров)) = ОрдерНаПеремещениеТоваровТовары.Ссылка)
        ГДЕ
            ТоварыОрганизацийОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОрдерНаПеремещениеТоваров
        
        СГРУППИРОВАТЬ ПО
            ОрдерНаПеремещениеТоваровТовары.Номенклатура,
            ОрдерНаПеремещениеТоваровТовары.Характеристика,
            ОрдерНаПеремещениеТоваровТовары.Ссылка.СкладОтправитель
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            ПеремещениеТоваровТовары.Номенклатура,
            ПеремещениеТоваровТовары.Характеристика,
            ПеремещениеТоваровТовары.Ссылка.СкладОтправитель,
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.Количество, 0)),
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.СебестоимостьСумма, 0)),
            СУММА(ЕСТЬNULL(ПеремещениеТоваровТовары.Сумма, 0))
        ИЗ
            РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Регистратор, , ) КАК ТоварыОрганизацийОстаткиИОбороты
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
                ПО ((ВЫРАЗИТЬ(ТоварыОрганизацийОстаткиИОбороты.Регистратор КАК Документ.ПеремещениеТоваров)) = ПеремещениеТоваровТовары.Ссылка)
        ГДЕ
            ТоварыОрганизацийОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
        
        СГРУППИРОВАТЬ ПО
            ПеремещениеТоваровТовары.Номенклатура,
            ПеремещениеТоваровТовары.Характеристика,
            ПеремещениеТоваровТовары.Ссылка.СкладОтправитель) КАК тоРасходНаВсеСклады
        ПО ТоварыОрганизаций.Номенклатура = тоРасходНаВсеСклады.Номенклатура
            И ТоварыОрганизаций.Характеристика = тоРасходНаВсеСклады.Характеристика
            И ТоварыОрганизаций.Склад = тоРасходНаВсеСклады.СкладОтправитель
10 deathogre
 
25.10.15
16:36
[code]
[/code]
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший