Преобразование значения к типу число не может быть выполнено при выполнении деления

1. TheOldGuard 10 11.02.22 12:24 Сейчас в теме
Всем привет, прошу помощи, выполняю запрос с созданием временной таблицы, также 2 запрос с использованием этой таблицы, позже выполняю его.
Так как значения могут быть NULL, перевожу их в 0.
Далее делю полученные значения в случае, если значение не 0 и записываю в переменную СтоимостьМатериала, на этом моменте мне выдается ошибка "Преобразование значения к типу число не может быть выполнено".

Процедура ОбработкаПроведения(Отказ, Режим)
		
	Движения.ОстаткиМатериалов.Записывать = Истина;
	Движения.СтоимостьМатериалов.Записывать = Истина;
	Движения.Продажи.Записывать = Истина;
	
	//Создать менеджер врменных таблиц
	МенеджерВТ = Новый МенеджерВременныхТаблиц;
		
	Запрос = Новый Запрос;  
	
	//Укажем, какой менеджер временных таблиц использует запрос
	Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
	
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОказаниеУслугиПереченьНоменклатуры.Номенклатура КАК Номенклатура,
		|	ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
		|	СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
		|	СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
		|ПОМЕСТИТЬ НоменклатураДокумента
		|ИЗ
		|	Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
		|ГДЕ
		|	ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
		|
		|СГРУППИРОВАТЬ ПО
		|	ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
		|	ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры";
	
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Запрос2 = Новый Запрос;
	Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
	Запрос2.Текст = "ВЫБРАТЬ
	                |	НоменклатураДокумента.Номенклатура КАК Номенклатура,
	                |	НоменклатураДокумента.ВидНоменклатуры КАК ВидНоменклатуры,
	                |	НоменклатураДокумента.КоличествоВДокументе КАК КоличествоВДокументе,
	                |	НоменклатураДокумента.СуммаВДокументе КАК СуммаВДокументе,
	                |	ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
	                |	ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
	                |ИЗ
	                |	НоменклатураДокумента КАК НоменклатураДокумента
	                |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
	                |				,
	                |				МАТЕРИАЛ В
	                |					(ВЫБРАТЬ
	                |						НоменклатураДокумента.Номенклатура
	                |					ИЗ
	                |						НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
	                |		ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
	                |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
	                |				,
	                |				МАТЕРИАЛ В
	                |					(ВЫБРАТЬ
	                |						НоменклатураДокумента.Номенклатура
	                |					ИЗ
	                |						НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
	                |		ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал";
	
	//Запишем пустые наборы записей, чтобы прочитать остатки без учета данных в документе
	Движения.СтоимостьМатериалов.Записать();
	Движения.ОстаткиМатериалов.Записать();
	
	РезультатЗапроса = Запрос2.Выполнить();
	
	//ТЗ = РезультатЗапроса.Выгрузить(); 
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Если ВыборкаДетальныеЗаписи.Количество() = 0 Тогда
		СтоимостьМатериала = 0;
	Иначе
		СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
	КонецЕсли;
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если ВыборкаДетальныеЗаписи.ВидНоменклатуры =
										Перечисления.ВидыНоменклатуры.Материал Тогда							
			// регистр ОстаткиМатериалов Расход							
			Движение = Движения.ОстаткиМатериалов.Добавить();
			Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
			Движение.Период = Дата;
			Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
			Движение.Склад = Склад;
			Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
			
			//регистр СтоимостьМатериалов Расход
			Движение = Движения.СтоимостьМатериалов.Добавить();
			Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
			Движение.Период = Дата;
			Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
			Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;			
		КонецЕсли;
		//регистр Продажи
				Движение = Движения.Продажи.Добавить();
				Движение.Период = Дата;
				Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
				Движение.Клиент = Клиент;
				Движение.Мастер = Мастер;
				Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
				Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
				Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;
	КонецЦикла;
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
2. user870855 11.02.22 12:41 Сейчас в теме
В цикл перенесите СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
TheOldGuard; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user870855 11.02.22 12:41 Сейчас в теме
В цикл перенесите СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
TheOldGuard; +1 Ответить
3. TheOldGuard 10 11.02.22 12:44 Сейчас в теме
(2)
Спасибо огромное! Вы мне очень помогли!
Прикрепленные файлы:
Оставьте свое сообщение

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