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