|
Ошибка сравнения типов | ☑ | ||
---|---|---|---|---|
0
malex18
04.09.17
✎
11:40
|
{Документ.Расходная.МодульОбъекта(51)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
Если Выборка.Количество > Выборка.КоличествоОстаток Тогда Почему при сравнении "Выборка.количествоОстаток" это неопределенный тип?Если в запросе указал,что естьнулл = 0????? Процедура ОбработкаПроведения(Отказ, Режим) Движения.ОстаткиТоваров.Записывать = Истина; Движения.ОстаткиТоваров.Записывать = Истина; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура, | СУММА(Количество) КАК Количество, | МИНИМУМ(НомерСтроки) КАК НомерСтроки |ПОМЕСТИТЬ ДокТЧ |ИЗ | Документ.Расходная.Товары |ГДЕ | Ссылка = &Ссылка И НЕ Номенклатура.Услуга |СГРУППИРОВАТЬ ПО Номенклатура |; |ВЫБРАТЬ | Остатки.Партия, | ДокТЧ.НомерСтроки, | ДокТЧ.Номенклатура, | ДокТЧ.Количество, | ЕСТЬNULL(Остатки.КоличествоОстаток,0) КАК КоличествоОстаток, | ЕСТЬNULL(Остатки.СтоимостьОстаток,0) КАК СтоимостьОстаток, | ЕСТЬNULL(ОстаткиСКЛ.КоличествоОстаток,0) КАК ОстатокНаСкладе |ИЗ | ДокТЧ КАК ДокТЧ | | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, Номенклатура В(ВЫБРАТЬ Номенклатура ИЗ ДокТЧ КАК ДокТЧ)) КАК Остатки | ПО ДокТЧ.Номенклатура = Остатки.Номенклатура | | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрНакопления.ОстаткиПоСкладам.Остатки(&МоментВремени, Склад = &Склад | И Номенклатура В(ВЫБРАТЬ Номенклатура ИЗ ДокТЧ КАК ДокТЧ) ) КАК ОстаткиСКЛ | ПО ДокТЧ.Номенклатура = ОстаткиСКЛ.Номенклатура |ИТОГИ МИНИМУМ(Количество), МИНИМУМ(ОстатокНаСкладе), МИНИМУМ(НомерСтроки) |ПО ДокТЧ.Номенклатура"; Запрос.УстановитьПараметр("МоментВремени", МоментВремени() ); Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Склад", Склад); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Количество > Выборка.КоличествоОстаток Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не хватает товара """ + Выборка.Номенклатура + """, из необходимых " + Выборка.Количество + " в наличии осталось только " + Выборка.КоличествоОстаток; Сообщение.Поле = "Товары[" + (Выборка.НомерСтроки-1) + "].Количество"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; Движения.ОстаткиТоваров.Записывать = Ложь; Движения.ОстаткиПоСкладам.Записывать = Ложь; КонецЕсли; КонецЦикла; Если Отказ Тогда Возврат; КонецЕсли; Выборка.Сбросить(); Пока Выборка.Следующий() Цикл ОсталосьСписать = Выборка.Количество; ВыборкаПартии = Выборка.Выбрать(); Пока ВыборкаПартии.Следующий() И ОсталосьСписать <> 0 Цикл Списать = Мин(ОсталосьСписать, ВыборкаПартии.КоличествоОстаток); Себестоимость = Списать / ВыборкаПартии.КоличествоОстаток * Выборка.Партии.СтоимостьОстаток; Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Списать; Движение.Стоимость = Себестоимость; Движение.Партия = ВыборкаПартии.Партия; ОсталосьСписать = ОсталосьСписать - Списать; КонецЦикла; Движение = Движения.ОстаткиПоСкладам.ДобавитьРасход(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Выборка.Количество; Движение.Склад = Склад; КонецЦикла; КонецПроцедуры |
|||
1
1dvd
04.09.17
✎
11:42
|
NULL <> Неопределено
|
|||
2
Господин ПЖ
04.09.17
✎
11:43
|
>Почему при сравнении "Выборка.количествоОстаток" это неопределенный тип?
у кого-то в union поля перепутаны |
|||
3
Альбатрос
04.09.17
✎
11:43
|
Даже для поля .количество?
|
|||
4
dezss
04.09.17
✎
11:43
|
Уверен что ругается на Выборка.количествоОстаток, а не на ДокТЧ.Количество?
|
|||
5
malex18
04.09.17
✎
11:47
|
С помощью точки останова смотрю содержимое сравниваемых значений, "выборка.количество" показывает, а "выборка.количествоОстаток" пишет "переменная не определена (КоличествоОстато)
|
|||
6
dezss
04.09.17
✎
11:50
|
(5) Проверь имя переменной. Что-то с ним не так.
|
|||
7
malex18
04.09.17
✎
11:50
|
имя такое же как в запросе. непонятно что-то
|
|||
8
1dvd
04.09.17
✎
11:50
|
(5) букву к украли вражеские программисты
|
|||
9
dezss
04.09.17
✎
11:51
|
(7) скопируй его из запроса.
|
|||
10
malex18
04.09.17
✎
11:51
|
пробовал)
|
|||
11
dezss
04.09.17
✎
11:52
|
(10) Ну посмотри что есть в выборка.
|
|||
12
malex18
04.09.17
✎
11:53
|
в выборке пишет,что количестоОстаток ЕСТЬNUll
|
|||
13
dezss
04.09.17
✎
11:54
|
(12) покажи скрином что хранится в "Выборка" внутри цикла.
|
|||
14
1dvd
04.09.17
✎
11:54
|
ошибка вот здесь:
|ИТОГИ МИНИМУМ(Количество), МИНИМУМ(ОстатокНаСкладе), МИНИМУМ(НомерСтроки) |
|||
15
malex18
04.09.17
✎
11:56
|
и что здесь не так?
|
|||
16
1dvd
04.09.17
✎
11:57
|
(15)
1. нафига тебе вообще итоги, если ты за один проход всё смотришь? 2. Раз уж ты собрался их использовать, то включи в них все переменные, которые хочешь брать |
|||
17
dezss
04.09.17
✎
12:01
|
(14) Блин, точно...не обратил внимания сразу...
|
|||
18
Serginio1
04.09.17
✎
16:50
|
Например сравнение на неустановленность значения в поле с множественными типами
|ТИПЗНАЧЕНИЯ(СчетФактура) <> &Тип"; Запрос.УстановитьПараметр("Тип",Тип("NULL")); |
|||
19
Serginio1
04.09.17
✎
16:51
|
||||
20
Хрыч
04.09.17
✎
20:40
|
Потому что первая строка в выборке у тебя итоговая, а в ней вычисляются только Количество, ОстатокНаСкладе и НомерСтроки. Поле КоличествоОстаток в итогах значения не имеет. Либо откажись от итогов, либо добавь в них это поле. А скорее всего, ты хотел использовать две выборки: одна с обходом по группировке для фиксации итоговых значений и внутри нее выборка детальных записей, где уже возможно сравнение. Но не вышел из Данилы каменный цветок.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |