|
Значение не является значением объектного типа | ☑ | ||
---|---|---|---|---|
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) оказалось верным, отчет заработал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |