Сравнение разных типов

1. _Enot_ 10 25.12.18 12:26 Сейчас в теме
Ребят подскажите. Имееться обработка которая выводит товар с минимальным остатком в ТЧ документа. Подскажите, как задать условие если количество товара меньше минимального остатка, чтобы этот товара(где меньше остаток) вывелся в тч

Для Каждого ЭлементОбъектНазначения Из ОбъектыНазначения Цикл
			ОбъектНазначения = ЭлементОбъектНазначения.ПолучитьОбъект();
			Если ИдентификаторКоманды = Команда_ЗаполнениеЗаказа Тогда
			ОбъектНазначения.Товары.Очистить();
			КонецЕсли;
			
			Запрос = Новый Запрос;
			Запрос.Текст = "ВЫБРАТЬ
			               |	ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Номенклатура,
			               |	СУММА(ВЫРАЗИТЬ(НоменклатураДополнительныеРеквизиты.Значение КАК ЧИСЛО)) КАК МинОстаток,
			               |	ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
			               |	ТоварыНаСкладахОстатки.Номенклатура.СтавкаНДС КАК НоменклатураСтавкаНДС,
			               |	ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
			               |ИЗ
			               |	РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
			               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
			               |			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
			               |			ПО ТоварыНаСкладахОстатки.Характеристика = НоменклатураДополнительныеРеквизиты.Значение
			               |		ПО НоменклатураПоставщиков.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
			               |ГДЕ
			               |	НоменклатураПоставщиков.Поставщик = &Поставщик
			               |
			               |СГРУППИРОВАТЬ ПО
			               |	ТоварыНаСкладахОстатки.Номенклатура.Ссылка,
			               |	ТоварыНаСкладахОстатки.Характеристика,
			               |	ТоварыНаСкладахОстатки.Номенклатура.СтавкаНДС,
			               |	ТоварыНаСкладахОстатки.КоличествоОстаток";
			
			Запрос.УстановитьПараметр("Поставщик", ОбъектНазначения.Контрагент);
			
			
			выборка = Запрос.Выполнить().Выбрать();
			Строка = ОбъектНазначения.Товары.Добавить();

			Пока выборка.Следующий() Цикл 
				Если выборка.МинОстаток > выборка.КоличествоОстаток Тогда
				
				Строка.Номенклатура = Выборка.Номенклатура;
				Строка.Характеристика = выборка.Характеристика;
				Строка.КоличествоУпаковок = Выборка.Количество;
				Строка.Количество = Выборка.Количество;
				Строка.СтавкаНДС = Выборка.НоменклатураСтавкаНДС;
			
			КонецЕсли;
		КонецЦикла;
		КонецЦикла;

			
			
			ОбъектНазначения.Записать();
			

			
			
		
	
	
	КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dandykry 10 25.12.18 12:32 Сейчас в теме
(1)

выборка = Запрос.Выполнить().Выбрать(); 


Пока выборка.Следующий() Цикл 
Если выборка.МинОстаток > выборка.КоличествоОстаток Тогда 
Строка = ОбъектНазначения.Товары.Добавить(); 
Строка.Номенклатура = Выборка.Номенклатура; 
Строка.Характеристика = выборка.Характеристика; 
Строка.КоличествоУпаковок = Выборка.Количество; 
Строка.Количество = Выборка.Количество; 
Строка.СтавкаНДС = Выборка.НоменклатураСтавкаНДС; 

КонецЕсли; 
КонецЦикла; 
КонецЦикла; 
Показать


Так правильнее.

А вообще в чем трудность?

НоменклатураДополнительныеРеквизиты.Значение тут что лежит?
4. _Enot_ 10 25.12.18 12:39 Сейчас в теме
(2)Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)

Такая ошибка при сравнении Если выборка.МинОстаток > выборка.КоличествоОстаток Тогда

НоменклатураДополнительныеРеквизиты.Значение тут что лежит? Здесь минималостаток как число
5. dandykry 10 25.12.18 12:45 Сейчас в теме
(4)
КоличествоОстаток


Значит тут null
19. user700035_6550355 29 28.12.18 07:40 Сейчас в теме
(1) Сразу в запросе поставьте условие чтобы выводились только соответствующие Вашему условию, так же ставьте условие ЕСТЬNULL(значение,0)
3. YannikAlx 43 25.12.18 12:34 Сейчас в теме
Я вообще не понял КАКИЕ разные типы вы сравнивать хотите?
6. YannikAlx 43 25.12.18 12:46 Сейчас в теме
Ясно где ваша проблема....
ВЫРАЗИТЬ(НоменклатураДополнительныеРеквизиты.Значение КАК ЧИСЛО

Вы пытаетесь зеленое представить в виде числа...
Если вы не уверены, что НоменклатураДополнительныеРеквизиты.Значение - число , то как ни выражай оно числом не станет
Ибо Скажем как выразить в виде числа текст "Зеленая"


Да прав и предыдущий пост КоличествоОстаток также может быть NULL.
7. dandykry 10 25.12.18 12:48 Сейчас в теме
(6) и где в ВЫРАЗИТЬ(НоменклатураДополнительныеРеквизиты.Значение КАК ЧИСЛО операция сравнения?

Сравнение только тут

Если выборка.МинОстаток > выборка.КоличествоОстаток Тогда
9. YannikAlx 43 25.12.18 12:57 Сейчас в теме
(7) А как вам вот этот бред нравится?
,,,,,,,,,,
НоменклатураДополнительныеРеквизиты.Значение КАК ЧИСЛО
,,,,,,,,,,,,,,,,,,,,
ПО ТоварыНаСкладахОстатки.Характеристика = НоменклатураДополнительныеРеквизиты.Значение
10. dandykry 10 25.12.18 12:58 Сейчас в теме
(9)
Я согласен, что запрос через 1 место


))))
8. dandykry 10 25.12.18 12:50 Сейчас в теме
(6) Я согласен, что запрос через 1 место, но ругается система сейчас, когда число сравнивает с null, потому что нет остатка по номенклатуре.

Это строка возвращает null

| ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
11. YannikAlx 43 25.12.18 13:00 Сейчас в теме
Запрос в принципе неверный и требует радикальной переделки...
Кроме того задача изначально смутная, неясная, требующая пояснений.
Даже в какой конфе все это происходит - нет информации
13. dandykry 10 25.12.18 13:09 Сейчас в теме
(11) автор уже вышел, расходимся
12. Alex_E 2354 25.12.18 13:03 Сейчас в теме
|	ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
не предлагать?
14. Skill 25.12.18 14:49 Сейчас в теме
(12) Что за богохульство! Как так можно! :)
15. Alex_E 2354 25.12.18 14:50 Сейчас в теме
(14)Свят, свят свят....больше не буду....
16. killitch 30 26.12.18 09:29 Сейчас в теме
А за запрос в цикле уже нормой стало для разработчиков?
ben19791010; +1 Ответить
18. Tangram 158 26.12.18 14:58 Сейчас в теме
17. Tangram 158 26.12.18 14:54 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот