Имя: Пароль:
1C
1С v8
Значение не является значением объектного типа
,
0 Александр056
 
14.05.14
09:52
Доброго времени суток! Столкнулся с ситуацией, есть отчет, который собирает инфу по прибыли, объему продаж и пр... При выборе в диалоге, на форме периода (месяц,неделя,квартал что угодно кроме одного дня) все ок, как только выбран 1 день, выскакивает ошибка

{Форма.ФормаОтчета.Форма(122)}: Значение не является значением объектного типа (Свернуть)
        ТЗРезультат.Свернуть("Номенклатура,НоменклатураНаименование","Количество,СуммаПокупки,СуммаПродажи");

Не пойму при чем тут период, почему сворачивает при любом периоде кроме 1 дня? подскажите куда копать
1 barrgand
 
14.05.14
09:54
(0) При одном дне ТЗРезультат не является таблицей, это ж очевидно
2 Godofsin
 
14.05.14
09:57
(0) ну показывайЮ откуда ТЗРезультат формируется
3 kosts
 
14.05.14
09:57
(0) Странно конечно, может результат в дерево превращается
4 barrgand
 
14.05.14
10:00
(0) Думаю где-то надо поставить КонецДня(КонецПериода)
5 Godofsin
 
14.05.14
10:06
(4) +1
6 Godofsin
 
14.05.14
10:07
Скорей всего там запрос, который не возвращает результат на 1 день. И проверки на пустоту результата нет
7 Александр056
 
14.05.14
10:19
чет с датами не разберусь,я так понял вам лучше полностью запрос и ТЗРезультат показать..?
8 Wobland
 
14.05.14
10:21
(7) ТЗРезультат =
9 Александр056
 
14.05.14
10:22
(8) ТЗРезультат=Запрос.Выполнить().Выгрузить();
10 Wobland
 
14.05.14
10:23
где-то ты врёшь
11 Александр056
 
14.05.14
10:24
(10) куда больше всего подозрений? могу, не специально)
12 barrgand
 
14.05.14
10:24
(11) Давай код, не томи. Можно без текста запроса.
13 Александр056
 
14.05.14
10:24
ТЗСледРезультат=Запрос.Выполнить().Выгрузить();
                для каждого текущаястрока из ТЗСледРезультат Цикл
                    НоваяЗапись=ТЗРезультат.Добавить();
                    ЗаполнитьЗначенияСвойств(НоваяЗапись,текущаястрока);

ТЗРезультат.Свернуть("Номенклатура,НоменклатураНаименование","Количество,СуммаПокупки,СуммаПродажи");
        ТЗРезультат.Сортировать("НоменклатураНаименование");
14 _fvadim
 
14.05.14
10:25
Учу пользоваться отладчиком. Дорого.
15 Wobland
 
14.05.14
10:26
(13) и что это за огрызок?
16 Wobland
 
14.05.14
10:26
(13) оригинальная замена Скопировать(), конечно
17 barrgand
 
14.05.14
10:27
(13) Ты так и будешь код отрывками писать, а мы типа паззл собрать должны?
18 Ymryn
 
14.05.14
10:28
(15) возможно ТЗРезультат шире. Ибо тут она дополняется по результату ТЗСледРезультат. Т.е она может несколькими этими пачками  формироваться. (это я Вангую, так что может все и не так)
19 Александр056
 
14.05.14
10:28
Если Склад.Код="000000008" тогда
        ПеремДатаНачало=ДатаНачала;
        ПеремДатаОкончания=ДатаОкончания;
        ПервыйПрогон=Истина;
        
        пока ПеремДатаНачало<ДатаОкончания Цикл
        
        
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    Продажи.Номенклатура,
                       |    Продажи.Номенклатура.НоменклатурнаяГруппаЗатрат КАК НоменклатурнаяГруппа,
                       |    Продажи.КоличествоОборот КАК Количество,
                       |    Продажи.Выручка КАК СуммаПродажи,
                       |    Продажи.Номенклатура.Родитель,
                       |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)  * Продажи.КоличествоОборот КАК СуммаПокупки,
                       |    Продажи.Номенклатура.Наименование
                       |ИЗ
                       |    (ВЫБРАТЬ
                       |        ПродажиОбороты.Номенклатура КАК Номенклатура,
                       |        СУММА(ПродажиОбороты.СтоимостьОборот) КАК Выручка,
                       |        СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
                       |    ИЗ
                       |        РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура.НоменклатурнаяГруппа = &Товар) КАК ПродажиОбороты
                       |    ГДЕ
                       |        ПродажиОбороты.Контрагент <> &ИПТельнов
                       |        И ПродажиОбороты.Регистратор.Склад = &Склад
                       |    
                       |    СГРУППИРОВАТЬ ПО
                       |        ПродажиОбороты.Номенклатура) КАК Продажи
                       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаНачала, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
                       |        ПО Продажи.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                       |
                       |УПОРЯДОЧИТЬ ПО
                       |    Продажи.Номенклатура.Наименование";
        
        
        Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ПеремДатаНачало));
        Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(ПеремДатаНачало));
        Запрос.УстановитьПараметр("ИПТельнов",Справочники.Контрагенты.НайтиПоКоду("05108"));
        Запрос.УстановитьПараметр("ТипЦен",Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001"));
        Запрос.УстановитьПараметр("Склад",Справочники.Склады.НайтиПоКоду("000000008"));
        Запрос.УстановитьПараметр("Товар",Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000003"));
        
        Если ПервыйПрогон тогда
                ТЗРезультат=Запрос.Выполнить().Выгрузить();
                ПервыйПрогон=Ложь;
            Иначе
                ТЗСледРезультат=Запрос.Выполнить().Выгрузить();
                для каждого текущаястрока из ТЗСледРезультат Цикл
                    НоваяЗапись=ТЗРезультат.Добавить();
                    ЗаполнитьЗначенияСвойств(НоваяЗапись,текущаястрока);
                КонецЦикла;    
            КонецЕсли;
            ПеремДатаНачало=ДобавитьМесяц(ПеремДатаНачало,1);
            
        КонецЦикла;
        ТЗРезультат.Свернуть("Номенклатура,НоменклатураНаименование","Количество,СуммаПокупки,СуммаПродажи");
        ТЗРезультат.Сортировать("НоменклатураНаименование");

        
    ИначеЕсли Склад.Код="000000004" тогда  
        ПеремДатаНачало=ДатаНачала;
        ПеремДатаОкончания=ДатаОкончания;
        ПервыйПрогон=Истина;
        
        пока ПеремДатаНачало<ДатаОкончания Цикл
            
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
                           |    Продажи.Номенклатура
                           |ПОМЕСТИТЬ ТЗТовары
                           |ИЗ
                           |    (ВЫБРАТЬ
                           |        ПродажиОбороты.Номенклатура КАК Номенклатура,
                           |        СУММА(ПродажиОбороты.СтоимостьОборот) КАК Выручка,
                           |        СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
                           |    ИЗ
                           |        РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура.НоменклатурнаяГруппа = &Товар) КАК ПродажиОбороты
                           |    ГДЕ
                           |        ПродажиОбороты.Контрагент <> &ИПТельнов
                           |    
                           |    СГРУППИРОВАТЬ ПО
                           |        ПродажиОбороты.Номенклатура) КАК Продажи
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    Продажи.Номенклатура,
                           |    Продажи.Номенклатура.НоменклатурнаяГруппаЗатрат КАК НоменклатурнаяГруппа,
                           |    Продажи.КоличествоОборот КАК Количество,
                           |    ВЫБОР
                           |        КОГДА Продажи.КоличествоОборот = 0
                           |            ТОГДА 0
                           |        ИНАЧЕ Продажи.Выручка / Продажи.КоличествоОборот
                           |    КОНЕЦ КАК ЦенаПродажи,
                           |    Продажи.Выручка КАК СуммаПродажи,
                           |    Продажи.Номенклатура.Родитель,
                           |    Продажи.Номенклатура.БазоваяЕдиницаИзмерения,
                           |    ВЫБОР
                           |        КОГДА Продажи.Номенклатура.БазоваяЕдиницаИзмерения.Код = ""055""
                           |            ТОГДА Продажи.КоличествоОборот * 4.03 / 1000
                           |        ИНАЧЕ 0
                           |    КОНЕЦ КАК ВесВТоннах
                           |ПОМЕСТИТЬ ТЗПродажи
                           |ИЗ
                           |    (ВЫБРАТЬ
                           |        ПродажиОбороты.Номенклатура КАК Номенклатура,
                           |        СУММА(ПродажиОбороты.СтоимостьОборот) КАК Выручка,
                           |        СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
                           |    ИЗ
                           |        РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура.НоменклатурнаяГруппа = &Товар) КАК ПродажиОбороты
                           |    ГДЕ
                           |        ПродажиОбороты.Контрагент <> &ИПТельнов
                           |    
                           |    СГРУППИРОВАТЬ ПО
                           |        ПродажиОбороты.Номенклатура) КАК Продажи
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    ТЗТовары.Номенклатура,
                           |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
                           |    СпецификацииНоменклатурыВыходныеИзделия.ЕдиницаИзмерения,
                           |    ЕСТЬNULL(СпецификацииНоменклатурыВыходныеИзделия.Количество, 0) КАК КоличествоВых,
                           |    СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения КАК ЕдиницаИзмерения1,
                           |    ЕСТЬNULL(СпецификацииНоменклатурыИсходныеКомплектующие.Количество, 0) КАК КоличествоВх,
                           |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
                           |    ВЫБОР
                           |        КОГДА ЕСТЬNULL(СпецификацииНоменклатурыИсходныеКомплектующие.Количество, 0) <> 0
                           |            ТОГДА ЕСТЬNULL(СпецификацииНоменклатурыВыходныеИзделия.Количество, 0) / ЕСТЬNULL(СпецификацииНоменклатурыИсходныеКомплектующие.Количество, 0)
                           |        ИНАЧЕ 0
                           |    КОНЕЦ КАК коэффициент,
                           |    ВЫБОР
                           |        КОГДА ЕСТЬNULL(СпецификацииНоменклатурыИсходныеКомплектующие.Количество, 0) <> 0
                           |            ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ВЫБОР
                           |                    КОГДА ЕСТЬNULL(СпецификацииНоменклатурыИсходныеКомплектующие.Количество, 0) <> 0
                           |                        ТОГДА ЕСТЬNULL(СпецификацииНоменклатурыВыходныеИзделия.Количество, 0) / ЕСТЬNULL(СпецификацииНоменклатурыИсходныеКомплектующие.Количество, 0)
                           |                КОНЕЦ
                           |        ИНАЧЕ 0
                           |    КОНЕЦ КАК ЦенаЗа1квм
                           |ПОМЕСТИТЬ ТЗСебестоимость
                           |ИЗ
                           |    ТЗТовары КАК ТЗТовары
                           |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия
                           |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
                           |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОкончания, ) КАК ЦеныНоменклатурыСрезПоследних
                           |                ПО СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                           |                    И (&ТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен)
                           |            ПО СпецификацииНоменклатурыВыходныеИзделия.Ссылка = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
                           |        ПО ТЗТовары.Номенклатура = СпецификацииНоменклатурыВыходныеИзделия.Номенклатура
                           |            И (СпецификацииНоменклатурыВыходныеИзделия.Ссылка.Активная)
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    ТЗПродажи.Номенклатура,
                           |    ТЗПродажи.НоменклатурнаяГруппа,
                           |    ТЗПродажи.Количество,
                           |    ТЗПродажи.ЦенаПродажи,
                           |    ТЗПродажи.СуммаПродажи,
                           |    ТЗПродажи.НоменклатураРодитель,
                           |    ТЗПродажи.НоменклатураБазоваяЕдиницаИзмерения,
                           |    ТЗПродажи.ВесВТоннах,
                           |    ТЗСебестоимость.Номенклатура КАК Номенклатура1,
                           |    ТЗСебестоимость.Материал,
                           |    ТЗСебестоимость.ЕдиницаИзмерения,
                           |    ТЗСебестоимость.КоличествоВых,
                           |    ТЗСебестоимость.ЕдиницаИзмерения1,
                           |    ТЗСебестоимость.КоличествоВх,
                           |    ТЗСебестоимость.Цена,
                           |    ТЗСебестоимость.коэффициент,
                           |    ТЗСебестоимость.ЦенаЗа1квм,
                           |    ТЗСебестоимость.ЦенаЗа1квм * ТЗПродажи.Количество КАК СуммаПокупки,
                           |    ТЗПродажи.Номенклатура.Наименование
                           |ИЗ
                           |    ТЗПродажи КАК ТЗПродажи
                           |        ЛЕВОЕ СОЕДИНЕНИЕ ТЗСебестоимость КАК ТЗСебестоимость
                           |        ПО ТЗПродажи.Номенклатура = ТЗСебестоимость.Номенклатура";
            
            Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ПеремДатаНачало));
            Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(ПеремДатаНачало));
            Запрос.УстановитьПараметр("ИПТельнов",Справочники.Контрагенты.НайтиПоКоду("05108"));
            Запрос.УстановитьПараметр("ТипЦен",Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001"));
            Запрос.УстановитьПараметр("Товар",Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000002"));
            Запрос.УстановитьПараметр("организация",Справочники.Организации.НайтиПоКоду("000000001"));
            
            Если ПервыйПрогон тогда
                ТЗРезультат=Запрос.Выполнить().Выгрузить();
                ПервыйПрогон=Ложь;
            Иначе
                ТЗСледРезультат=Запрос.Выполнить().Выгрузить();
                для каждого текущаястрока из ТЗСледРезультат Цикл
                    НоваяЗапись=ТЗРезультат.Добавить();
                    ЗаполнитьЗначенияСвойств(НоваяЗапись,текущаястрока);
                КонецЦикла;    
            КонецЕсли;
            ПеремДатаНачало=ДобавитьМесяц(ПеремДатаНачало,1);
            
        КонецЦикла;
        ТЗРезультат.Свернуть("Номенклатура,НоменклатураНаименование","Количество,СуммаПокупки,СуммаПродажи");
        ТЗРезультат.Сортировать("НоменклатураНаименование");
        
    КонецЕсли;
20 Александр056
 
14.05.14
10:29
просто писал не сам, вникаю, стесняюсь)
21 Wobland
 
14.05.14
10:31
ба! да это запрос в цикле! расстрелять
22 Ymryn
 
14.05.14
10:32
Запрос в цикле... как мило.  У тебя
пока ПеремДатаНачало<ДатаОкончания Цикл при выбранных условиях не выполняется. Т.е запрос даже не создается. А ты считаешь, что таблица у тебя все равно железно есть. Проверь, что у тебя в этих переменых. Есть шанс, что замена на НачалоДня(ПеремДатаНачало)<КонецДня(ДатаОкончания) решит проблему.
23 Ymryn
 
14.05.14
10:35
(22) а еще лучше вот тут
        ПеремДатаНачало=ДатаНачала;
        ПеремДатаОкончания=ДатаОкончания;
поправь это дело по аналогии с тем, что я указал выше.
24 Александр056
 
14.05.14
11:58
спасибо, сейчас посмотрю
25 Александр056
 
14.05.14
12:07
про запрос в цикле согласен, да странно) а может просто мне непонятно) но факт того что высказывание (23) оказалось верным, отчет заработал.