![]() |
|
При выполнении запроса. Недопустимый тип данных в записи. | ☑ | ||
---|---|---|---|---|
0
xipypg2012
21.06.16
✎
10:57
|
Запрос:
Подскажите в чем может быть дело. Вылетает на выполнение по группировкам такого запроса: ВЫБРАТЬ | Результат.Номенклатура КАК Номенклатура, | Результат.ДнейПродажи КАК ДнейПродажи, | Результат.НоменклатураПредставление КАК НоменклатураПредставление, | Результат.Остаток КАК Остаток, | Результат.П_Out_of_stock КАК П_Out_of_stock, | Результат.П_Stock КАК П_Stock, | Результат.Продано КАК Продано, | Результат.Склад КАК Склад, | Результат.СкладПредставление КАК СкладПредставление, | Результат.СредняяПродажаЗаДень КАК СредняяПродажаЗаДень |ПОМЕСТИТЬ ВР_ТЗ |ИЗ | &Результат КАК Результат |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ВР_ТЗ.Номенклатура КАК Номенклатура, | ВР_ТЗ.ДнейПродажи КАК ДнейПродажи, | Выразить(ВЫБОР | КОГДА &ЕдХрОст | ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) | ИНАЧЕ ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) / ЕСТЬNULL(ВР_ТЗ.Номенклатура.ЕдиницаДляОтчетов.Коэффициент,1) | КОНЕЦ как Число(10,2)) КАК КоличествоКонечныйОстатокОптовый, | Выразить(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) как число(10,2)) КАК КоличествоКонечныйОстатокОптовыйСумма, | Выразить(ВЫБОР | КОГДА &ЕдХрОст | ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) | ИНАЧЕ ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) / ЕСТЬNULL(ВР_ТЗ.Номенклатура.ЕдиницаДляОтчетов.Коэффициент,1) | КОНЕЦ как число(10,2)) КАК КоличествоНачальныйОстатокОптовый, | Выразить(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) как число(10,2)) КАК КоличествоНачальныйОстатокОптовыйСумма, | Выразить(ВЫБОР | КОГДА &ЕдХрОст | ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход, 0) | ИНАЧЕ ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход, 0) / ЕСТЬNULL(ВР_ТЗ.Номенклатура.ЕдиницаДляОтчетов.Коэффициент,1) | КОНЕЦ как число(10,2)) КАК КоличествоПриходОптовый, | Выразить(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) как число(10,2)) КАК КоличествоПриходОптовыйСумма, | Выразить(ВЫБОР | КОГДА &ЕдХрОст | ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход, 0) | ИНАЧЕ ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход, 0) /ЕСТЬNULL(ВР_ТЗ.Номенклатура.ЕдиницаДляОтчетов.Коэффициент,1) | КОНЕЦ как число(10,2)) КАК КоличествоРасходОптовый, | Выразить(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) как число(10,2)) КАК КоличествоРасходОптовыйСумма, | ПРЕДСТАВЛЕНИЕ(ВР_ТЗ.Номенклатура) КАК НоменклатураПредставление, | ВР_ТЗ.Остаток КАК Остаток, | ВР_ТЗ.П_Out_of_stock КАК П_Out_of_stock, | ВР_ТЗ.П_Stock КАК П_Stock, | ВР_ТЗ.Продано КАК Продано, | ВР_ТЗ.Склад КАК Склад, | ПРЕДСТАВЛЕНИЕ(ВР_ТЗ.Склад) КАК СкладПредставление, | ВР_ТЗ.СредняяПродажаЗаДень КАК СредняяПродажаЗаДень, | Выразить(ВЫБОР | КОГДА &ЕдХрОст | ТОГДА ВР_ТЗ.П_Out_of_stock * ВР_ТЗ.СредняяПродажаЗаДень | ИНАЧЕ ВР_ТЗ.П_Out_of_stock * ВР_ТЗ.СредняяПродажаЗаДень / ЕСТЬNULL(ВР_ТЗ.Номенклатура.ЕдиницаДляОтчетов.Коэффициент,1) | КОНЕЦ как число(10,2)) КАК ПотериКолво, | Выразить(ВР_ТЗ.П_Out_of_stock * ВР_ТЗ.СредняяПродажаЗаДень * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) как число(10,2)) КАК ПотериСумма, | Выразить(ВЫБОР | КОГДА ВР_ТЗ.СредняяПродажаЗаДень = 0 | ТОГДА 0 | ИНАЧЕ ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) / ЕСТЬNULL(ВР_ТЗ.СредняяПродажаЗаДень,1) | КОНЕЦ как число(10,2)) КАК ОстатокВДнях |ИЗ | ВР_ТЗ КАК ВР_ТЗ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДН, &ДК, , , ) КАК ТоварыНаСкладахОстаткиИОбороты | ПО ВР_ТЗ.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура | И ВР_ТЗ.Склад = ТоварыНаСкладахОстаткиИОбороты.Склад | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ВР_ТЗ.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | |УПОРЯДОЧИТЬ ПО | Склад, | Номенклатура | |ИТОГИ | МАКСИМУМ(ДнейПродажи), | СУММА(КоличествоКонечныйОстатокОптовый), | СУММА(КоличествоКонечныйОстатокОптовыйСумма), | СУММА(КоличествоНачальныйОстатокОптовый), | СУММА(КоличествоНачальныйОстатокОптовыйСумма), | СУММА(КоличествоПриходОптовый), | СУММА(КоличествоПриходОптовыйСумма), | СУММА(КоличествоРасходОптовый), | СУММА(КоличествоРасходОптовыйСумма), | СУММА(Остаток), | СУММА(П_Out_of_stock), | СУММА(П_Stock), | СУММА(Продано), | СУММА(СредняяПродажаЗаДень), | СУММА(ПотериКолво), | СУММА(ПотериСумма), | СУММА(ОстатокВДнях) |ПО | ОБЩИЕ, | Склад, | Номенклатура ИЕРАРХИЯ |АВТОУПОРЯДОЧИВАНИЕ |
|||
1
xipypg2012
21.06.16
✎
10:57
|
и вылетает тут :
ВыборкаОбщийИтог = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); |
|||
2
Ёпрст
гуру
21.06.16
✎
11:01
|
(0) &Результат - передаешь , надеюсь, типизированную ТЗ ?
|
|||
3
sash-ml
21.06.16
✎
11:01
|
в параметре из которого ты читаешь данные должны быть типизированные колонки
"&Результат КАК Результат" |
|||
4
xipypg2012
21.06.16
✎
11:18
|
Да это выборка другого запроса :
ПостроительЗапросаОстаток = Новый ПостроительЗапроса; ПостроительЗапросаОстаток.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | &ДатаКон, | Склад = &Склад | И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки"; Результат.Колонки.Добавить("Продано", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("ДнейПродажи", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("СредняяПродажаЗаДень", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("Остаток", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("НеобходимыйОбъемЗакупки", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("ПланируемыйОбъемПродаж", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("П_Stock", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("П_Out_of_stock", Новый ОписаниеТипов("Число")); Stock = 0; Out_of_stock = 0; ВыборкаСклад = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаСклад.Следующий() Цикл ВыборкаНоменклатура = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНоменклатура.Следующий() Цикл ПроданоВсего = ВыборкаНоменклатура.Продано; КоличествоДнейПродажи = 0; ТекущийОстаток = ВыборкаНоменклатура.КоличествоНачальныйОстаток; ТекущаяДата = ДатаНачПродаж; ТекущаяДатаУчтена = 0; //Выборка по периодам продажи товара, для расчета дней продаж ВыборкаПериод = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПериод.Следующий() Цикл ТекущийОстаток = ВыборкаПериод.КоличествоНачальныйОстаток; Если ВыборкаПериод.Период <> Неопределено И НачалоДня(ТекущаяДата) <> НачалоДня(ВыборкаПериод.Период) Тогда Если ВыборкаПериод.Продано > 0 Тогда КоличествоДнейПродажи = КоличествоДнейПродажи + 1; КонецЕсли; ТекущаяДатаУчтена = 0; ТекущаяДата = НачалоДня(ВыборкаПериод.Период); КонецЕсли; ТекущийОстаток = ВыборкаПериод.КоличествоКонечныйОстаток; КонецЦикла; Stock = 0; Out_of_stock = 0; //Расчет Кол-во дней в периоде, когда товар присутствовал на складе, на конец дня, ДатаНачПер = ДатаНачПродаж; Пока ДатаНачПер <= ДатаКонПродаж Цикл ПостроительЗапросаОстаток.Параметры.Вставить("Номенклатура",ВыборкаНоменклатура.Номенклатура); ПостроительЗапросаОстаток.Параметры.Вставить("Склад",ВыборкаСклад.Склад); ПостроительЗапросаОстаток.Параметры.Вставить("ДатаКон",КонецДня(ДатаНачПер)); ПостроительЗапросаОстаток.Выполнить(); Рез = ПостроительЗапросаОстаток.Результат.Выбрать(); Если рез.Следующий() И рез.КоличествоОстаток > 0 Тогда Stock = Stock + 1; Иначе Out_of_stock = Out_of_stock + 1; КонецЕсли; ДатаНачПер = ДатаНачПер + 86400; КонецЦикла; //Если ТекущийОстаток > 0 Тогда // // КоличествоДнейПродажи = КоличествоДнейПродажи + ЧислоРабочихДнейМежду(ТекущаяДата + ТекущаяДатаУчтена, ДатаКонПродаж); // //КонецЕсли; СредняяСкорость = ?(КоличествоДнейПродажи = 0, 0, ПроданоВсего / КоличествоДнейПродажи); //ОстатокКНачалуЗакупок = ВыборкаНоменклатура.ОстатокНаДатуНачалаЗакупок; //ДнейЗакупок = ЧислоРабочихДнейМежду(ДатаНачЗакупок, ДатаКонЗакупок); //ПланПродаж = Макс(0, ДнейЗакупок * СредняяСкорость); //ОбъемЗакупок = Макс(0, ПланПродаж - ОстатокКНачалуЗакупок); //ПланПродаж = Округлить(ПланПродаж, , Истина); //ОбъемЗакупок = Округлить(ОбъемЗакупок, ПорядокОкругления, Истина); //СредняяСкорость = (СредняяСкорость,РежимОкругления.Окр15как20,Истина); НоваяСтрока = Результат.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаНоменклатура); НоваяСтрока.ДнейПродажи = КоличествоДнейПродажи; НоваяСтрока.СредняяПродажаЗаДень = СредняяСкорость; //НоваяСтрока.Остаток = ОстатокКНачалуЗакупок; //НоваяСтрока.НеобходимыйОбъемЗакупки = ОбъемЗакупок; //НоваяСтрока.ПланируемыйОбъемПродаж = ПланПродаж; НоваяСтрока.П_Stock = Stock; НоваяСтрока.П_Out_of_stock = Out_of_stock; ОбработкаПрерыванияПользователя(); КонецЦикла; КонецЦикла; Просто он вылетает на большом периоде, если этот же период взять и прогнать более маленькими то все отличн. |
|||
5
Ёпрст
гуру
21.06.16
✎
11:23
|
(4) как бэ, запрос в цикле не есть гуд.
|
|||
6
xipypg2012
21.06.16
✎
11:26
|
запрос идт не в цикле, тот запрос на котором вылетает идет за циклом после него , это я скинул как пример откуда берется таблица результат
|
|||
7
Ёпрст
гуру
21.06.16
✎
11:33
|
>>>Просто он вылетает на большом периоде
Это который вылетает ? |
|||
8
Ёпрст
гуру
21.06.16
✎
11:34
|
и.. в (0) выразить как число, нужно выкинуть, везде, это лишнее
|
|||
9
Ёпрст
гуру
21.06.16
✎
11:37
|
писать ЕСТЬNULL(ВР_ТЗ.СредняяПродажаЗаДень,1) и аналогичные конструкции с ЕСТЬNULL к ВР_ТЗ не имеет смысла - там нулл значений никогда не будет.
|
|||
10
Ёпрст
гуру
21.06.16
✎
11:37
|
там надо делать проверку на 0, при делении
|
|||
11
xipypg2012
21.06.16
✎
11:45
|
ну я вобще запросом пробежался там нулей нету ,а выразить добавил потому что аналогичная ошибка могла быть если слишком много символов
|
|||
12
xipypg2012
21.06.16
✎
11:45
|
вобщем поэтому я остался в сметение и не знаю что еще придумать можно . вылетает при выполнение запроса в первом сообщение
|
|||
13
aleks_default
21.06.16
✎
11:47
|
Типизированы должны быть ВСЕ колонки таблицы "Результат".
|
|||
14
aleks_default
21.06.16
✎
11:50
|
(6) Вот это что?
Пока ДатаНачПер <= ДатаКонПродаж Цикл ПостроительЗапросаОстаток.Параметры.Вставить("Номенклатура",ВыборкаНоменклатура.Номенклатура); ПостроительЗапросаОстаток.Параметры.Вставить("Склад",ВыборкаСклад.Склад); ПостроительЗапросаОстаток.Параметры.Вставить("ДатаКон",КонецДня(ДатаНачПер)); ПостроительЗапросаОстаток.Выполнить(); |
|||
15
xipypg2012
21.06.16
✎
11:52
|
Выполнение запроса остатков и проверка на отрезания лишнего
|
|||
16
aleks_default
21.06.16
✎
11:57
|
это запрос в цикле
|
|||
17
xipypg2012
21.06.16
✎
12:02
|
сори )) да есть такое дело)
|
|||
18
ptiz
21.06.16
✎
12:20
|
(0) Заменяй строки
| Результат.Остаток КАК Остаток, на | 0 КАК Остаток, и так выйдешь на проблемную строку |
|||
19
xipypg2012
21.06.16
✎
12:24
|
(18) от спасибо за идею)) щас попробуем))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |