Коллеги, помогите пожалуйста. Вываливается ошибка при попытке распечатать печатную форму

1. user973528 08.11.18 10:42 Сейчас в теме
Создал внешнюю печатную форму КС-2 из реализации товаров и услуг. Если вид документа "Товары и услуги" и табличная часть "Услуги" заполнена то при попытке распечатать выдаёт ошибку
{ВнешняяОбработка.КС2.МодульОбъекта(223)}: Преобразование значения к типу Число не может быть выполнено
						ОбластьСтроки.Параметры.Сумма = ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;


Почему так выходит понять никак не могу

Вот собственно запрос и заполнение макета
Функция ЗапросПоДокументам(МассивОбъектов)
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	РеализацияТоваровУслуг.Ссылка КАК Документ,
	|	РеализацияТоваровУслуг.Организация КАК Организация,
	|	РеализацияТоваровУслуг.Контрагент КАК Контрагент,
	|	РеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента,
	|	РеализацияТоваровУслуг.Руководитель КАК Руководитель,
	|	РеализацияТоваровУслуг.НомерПриложенияКС КАК НомерПриложенияКС,
	|	РеализацияТоваровУслуг.СуммаВключаетНДС КАК СуммаВключаетНДС
	|ИЗ
	|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
	|ГДЕ
	|	РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
	|
	|СГРУППИРОВАТЬ ПО
	|	РеализацияТоваровУслуг.Ссылка,
	|	РеализацияТоваровУслуг.Организация,
	|	РеализацияТоваровУслуг.Контрагент,
	|	РеализацияТоваровУслуг.ДоговорКонтрагента,
	|	РеализацияТоваровУслуг.Руководитель,
	|	РеализацияТоваровУслуг.НомерПриложенияКС
	|ИТОГИ ПО
	|	Документ
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ВложенныйЗапрос.Ссылка КАК Документ,
	|	ВложенныйЗапрос.НоменклатураРодитель КАК Родитель,
	|	ВложенныйЗапрос.Номенклатура КАК Номенклатура,
	|	СУММА(ВложенныйЗапрос.Количество) КАК Количество,
	|	ВложенныйЗапрос.Цена КАК Цена,
	|	СУММА(ВложенныйЗапрос.Сумма + ВложенныйЗапрос.СуммаНДС) КАК Сумма,
	|	СУММА(ВложенныйЗапрос.СуммаНДС) КАК СуммаНДС
	|ИЗ
	|	(ВЫБРАТЬ
	|		РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
	|		РеализацияТоваровУслугТовары.Номенклатура.Родитель КАК НоменклатураРодитель,
	|		РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
	|		РеализацияТоваровУслугТовары.Количество КАК Количество,
	|		РеализацияТоваровУслугТовары.Цена КАК Цена,
	|		СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма,
	|		СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК СуммаНДС
	|	ИЗ
	|		Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
	|	ГДЕ
	|		РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
	|	
	|	СГРУППИРОВАТЬ ПО
	|		РеализацияТоваровУслугТовары.Ссылка,
	|		РеализацияТоваровУслугТовары.Номенклатура.Родитель,
	|		РеализацияТоваровУслугТовары.Номенклатура,
	|		РеализацияТоваровУслугТовары.Цена,
	|		РеализацияТоваровУслугТовары.Количество
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		РеализацияТоваровУслугУслуги.Ссылка,
	|		РеализацияТоваровУслугУслуги.Номенклатура.Родитель,
	|		РеализацияТоваровУслугУслуги.Номенклатура,
	|		СУММА(РеализацияТоваровУслугУслуги.Количество),
	|		РеализацияТоваровУслугУслуги.Цена,
	|		СУММА(РеализацияТоваровУслугУслуги.Сумма),
	|		NULL
	|	ИЗ
	|		Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
	|	ГДЕ
	|		РеализацияТоваровУслугУслуги.Ссылка В(&МассивОбъектов)
	|	
	|	СГРУППИРОВАТЬ ПО
	|		РеализацияТоваровУслугУслуги.Ссылка,
	|		РеализацияТоваровУслугУслуги.Номенклатура.Родитель,
	|		РеализацияТоваровУслугУслуги.Номенклатура,
	|		РеализацияТоваровУслугУслуги.Цена) КАК ВложенныйЗапрос
	|
	|СГРУППИРОВАТЬ ПО
	|	ВложенныйЗапрос.Ссылка,
	|	ВложенныйЗапрос.НоменклатураРодитель,
	|	ВложенныйЗапрос.Номенклатура,
	|	ВложенныйЗапрос.Цена
	|
	|УПОРЯДОЧИТЬ ПО
	|	Документ,
	|	Родитель
	|ИТОГИ
	|	СУММА(Сумма),
	|	СУММА(СуммаНДС)
	|ПО
	|	Документ,
	|	Родитель
	|АВТОУПОРЯДОЧИВАНИЕ";
	
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	Возврат Запрос.ВыполнитьПакет(); 
КонецФункции

Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати)
	
	МассивРезультатов = ЗапросПоДокументам(МассивОбъектов);
	
	ВыборкаШапка  = МассивРезультатов[0].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Документ");
	
	МакетОбработки = ПолучитьМакет("Макет");
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КС2";
	
	Пока ВыборкаШапка.Следующий() Цикл
		Отбор = Новый Структура("Документ");
		Отбор.Документ = ВыборкаШапка.Документ;

		НДСВСумме = ВыборкаШапка.СуммаВключаетНДС;
		
		//заполняем шапку
		ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
		ОбластьШапка.Параметры.Контрагент = ВыборкаШапка.Контрагент.НаименованиеПолное;
		Попытка
			ОбластьШапка.Параметры.АдресКонтрагент = УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(ВыборкаШапка.Контрагент, Перечисления.ТипыКонтактнойИнформации.Адрес)[0].Значение;
		Исключение
			ОбластьШапка.Параметры.АдресКонтрагент = "<Не указан адрес контрагента>";
		КонецПопытки;	
		ОбластьШапка.Параметры.Организация = ВыборкаШапка.Организация.НаименованиеСокращенное;
		ОбластьШапка.Параметры.АдресОрганизации = УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(ВыборкаШапка.Организация, Перечисления.ТипыКонтактнойИнформации.Адрес)[0].Значение;
		Попытка
			ОбластьШапка.Параметры.АдресОрганизации = УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(ВыборкаШапка.Организация, Перечисления.ТипыКонтактнойИнформации.Адрес)[0].Значение
		Исключение
			ОбластьШапка.Параметры.АдресОрганизации = "<Не указан адрес организации>";
		КонецПопытки;
		ОбластьШапка.Параметры.НомерДоговора = ВыборкаШапка.ДоговорКонтрагента.Номер;
		ОбластьШапка.Параметры.Объект = ВыборкаШапка.Документ.Объект;
		ОбластьШапка.Параметры.Стройка = ВыборкаШапка.Документ.Стройка;
		ОбластьШапка.Параметры.ДоговорДень = Формат(ВыборкаШапка.ДоговорКонтрагента.Дата,"ДФ=""дд""");
		ОбластьШапка.Параметры.ДоговорМесяц = Формат(ВыборкаШапка.ДоговорКонтрагента.Дата,"ДФ=""ММММ""");
		ОбластьШапка.Параметры.Год = Формат(ВыборкаШапка.ДоговорКонтрагента.Дата,"ДФ=""гггг""");
		ОбластьШапка.Параметры.НомерДокумента = ВыборкаШапка.Документ.НомерКС2;
		ОбластьШапка.Параметры.ДатаДокумента = Формат(ВыборкаШапка.Документ.Дата,"ДЛФ=Д");
		ОбластьШапка.Параметры.ОтчетныйПериодС = Формат(ВыборкаШапка.Документ.ОтчетныйПериодС, "ДЛФ=Д");
		ОбластьШапка.Параметры.ОтчетныйПериодПо = Формат(ВыборкаШапка.Документ.ОтчетныйПериодПо, "ДЛФ=Д");
		ОбластьШапка.Параметры.Договор = ВыборкаШапка.ДоговорКонтрагента.Наименование;
		ОбластьШапка.Параметры.НомерПриложенияКС = ВыборкаШапка.НомерПриложенияКС;
		ОбластьШапка.Параметры.ОбщаяСуммаКС = Формат(ВыборкаШапка.Документ.ОбщаяСуммаКС, "ЧДЦ=2");
		
		//выводим шапку в табличный документ
		ТабличныйДокумент.Вывести(ОбластьШапка);
		
		НомерГрупп = 1;
		Ном = 1;
		СуммаУслуги = 0;
		СуммаТовары = 0;
		
		ВыборкаСтрокиДокумент = МассивРезультатов[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Документ");
		Пока ВыборкаСтрокиДокумент.Следующий() Цикл
			ВыборкаСтрокиРодитель = ВыборкаСтрокиДокумент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Родитель");
			Пока ВыборкаСтрокиРодитель.Следующий() Цикл
				ОбластьШапкаГруппы = МакетОбработки.ПолучитьОбласть("ШапкаГруппа");
				ОбластьШапкаГруппы.Параметры.Родитель = ВыборкаСтрокиРодитель.Родитель;
				//выводим шапку в табличный документ
				ТабличныйДокумент.Вывести(ОбластьШапкаГруппы);
				НомерСтроки = 1;
				ВыборкаСтроки = ВыборкаСтрокиРодитель.Выбрать();
				Пока ВыборкаСтроки.Следующий() Цикл
					ОбластьСтроки = МакетОбработки.ПолучитьОбласть("Строка");
					ОбластьСтроки.Параметры.Ном = Ном;
					ОбластьСтроки.Параметры.НомерСтроки = Строка(НомерГрупп)+"."+Строка(НомерСтроки);
					ОбластьСтроки.Параметры.Номенклатура = ВыборкаСтроки.Номенклатура.НаименованиеПолное;
					ОбластьСтроки.Параметры.ЕдиницаИзмерения = ВыборкаСтроки.Номенклатура.ЕдиницаИзмерения;
					ОбластьСтроки.Параметры.Количество = ВыборкаСтроки.Количество;
					ОбластьСтроки.Параметры.Цена = ВыборкаСтроки.Цена;
					Если НДСВСумме Тогда
						ОбластьСтроки.Параметры.Сумма = ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
					Иначе
						ОбластьСтроки.Параметры.Сумма = ВыборкаСтроки.Сумма;
					КонецЕсли;
					ТабличныйДокумент.Вывести(ОбластьСтроки);
					НомерСтроки = НомерСтроки+1;
					Ном = Ном + 1;
					Если НомерГрупп = 1 Тогда
						Если НДСВСумме Тогда
							СуммаУслуги = СуммаУслуги + ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
						Иначе
							СуммаУслуги = СуммаУслуги + ВыборкаСтроки.Сумма;
						КонецЕсли;
					ИначеЕсли НомерГрупп = 2 Тогда
						Если НДСВСумме Тогда
							СуммаТовары = СуммаТовары + ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
						Иначе
							СуммаТовары = СуммаТовары + ВыборкаСтроки.Сумма;
						КонецЕсли;
					КонецЕСли;
				КонецЦикла;
				НомерГрупп = НомерГрупп+1;
				
				ОбластьИтогиГруппа = МакетОбработки.ПолучитьОбласть("ИтогоГруппа");
				ОбластьИтогиГруппа.Параметры.Раздел = ВыборкаСтрокиРодитель.Родитель;
				Если НДСВСумме Тогда
					ОбластьИтогиГруппа.Параметры.СуммаБезНДС = ВыборкаСтрокиРодитель.Сумма - ВыборкаСтрокиРодитель.СуммаНДС;
					//ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма  - ВыборкаСтрокиРодитель.СуммаНДС;
				Иначе
					ОбластьИтогиГруппа.Параметры.СуммаБезНДС = ВыборкаСтрокиРодитель.Сумма;
					ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма;
				КонецЕсли;
				ТабличныйДокумент.Вывести(ОбластьИтогиГруппа);
			КонецЦикла;
			ОбластьИтогоВсего = МакетОбработки.ПолучитьОбласть("Итого");
			Если НДСВСумме Тогда
				ОбластьИтогоВсего.Параметры.НДС = "с";
			Иначе
				ОбластьИтогоВсего.Параметры.НДС = "без";
			КонецЕсли;
			//ОбластьИтогоВсего.Параметры.СуммаУслуги = СуммаУслуги;
			//ОбластьИтогоВсего.Параметры.СуммаТовары = СуммаТовары;
			ОбластьИтогоВсего.Параметры.НДСПОАкту = ВыборкаСтрокиДокумент.СуммаНДС;
			Если НДСВСумме Тогда
				ОбластьИтогоВсего.Параметры.Сумма = ВыборкаСтрокиДокумент.Сумма - ВыборкаСтрокиДокумент.СуммаНДС;
			Иначе
				ОбластьИтогоВсего.Параметры.Сумма = ВыборкаСтрокиДокумент.Сумма;
			КонецЕсли;
			ТабличныйДокумент.Вывести(ОбластьИтогоВсего);
			
			ОбластьПодписи = МакетОбработки.ПолучитьОбласть("Подписи");
			ОбластьПодписи.Параметры.Контрагент = ВыборкаШапка.Контрагент.НаименованиеПолное;
			ОбластьПодписи.Параметры.РуководительЗаказчик = ВыборкаШапка.Документ.РуководительЗаказчика;
			ОбластьПодписи.Параметры.Организация = ВыборкаШапка.Организация.НаименованиеСокращенное;
			ОбластьПодписи.Параметры.РуководительОрганизация = ВыборкаШапка.Руководитель;
			ТабличныйДокумент.Вывести(ОбластьПодписи);
			
		КонецЦикла;
	КонецЦикла;		
	ТабличныйДокумент.ОтображатьСетку = Ложь;
	ТабличныйДокумент.АвтоМасштаб = Истина;

	Возврат ТабличныйДокумент;

КонецФункции
Показать
Найденные решения
3. Pavel Rodinchenko 08.11.18 10:46 Сейчас в теме
(2)СУММА(РеализацияТоваровУслугУслуги.Сумма),
| NULL - вместо NULL напишите 0
alex-l19041; user973528; Denis_CFO; +3 Ответить
4. Denis_CFO 48 08.11.18 10:46 Сейчас в теме
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. Denis_CFO 48 08.11.18 10:46 Сейчас в теме
5. user973528 08.11.18 10:50 Сейчас в теме
(4) Спасибо большое получилось, а можете пояснить почему была ошибка? По запросу искало получается NULL(Ничего) а сумма не может быть пустой?
7. Denis_CFO 48 08.11.18 10:54 Сейчас в теме
(5) потому что NULL – отсутствующие значения, поэтому NULL + Сумма (и не только сумма, любой тип, даже null), всегда будет NULL, а не суммой. Ваш КЭП :)
9. user973528 08.11.18 11:00 Сейчас в теме
(7) Да, там работает, только теперь ошибка при попытке печати если тип документа "Товары",
{ВнешняяОбработка.КС2.МодульОбъекта(253)}: Поле объекта не обнаружено (Сумма)
					ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма;


Опять с суммой
10. Pavel Rodinchenko 08.11.18 11:01 Сейчас в теме
(9)А какого рода ошибка?
11. user973528 08.11.18 11:03 Сейчас в теме
(10) Вот выше написал

Да, там работает, только теперь ошибка при попытке печати если тип документа "Товары",
{ВнешняяОбработка.КС2.МодульОбъекта(253)}: Поле объекта не обнаружено (Сумма)
ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма;



Опять с суммой
12. Pavel Rodinchenko 08.11.18 11:05 Сейчас в теме
(11)А в отладчике "ОбластьИтогиГруппа.Параметры.Сумма" что показывает?
2. user973528 08.11.18 10:43 Сейчас в теме
А если печатаю из вида документа "Товары" то ошибки не происходит, т.к. табличной части Услуги там нет и если в "Товары и услуги" не заполняю табличную часть услуги, ошибки не выходит
3. Pavel Rodinchenko 08.11.18 10:46 Сейчас в теме
(2)СУММА(РеализацияТоваровУслугУслуги.Сумма),
| NULL - вместо NULL напишите 0
alex-l19041; user973528; Denis_CFO; +3 Ответить
6. Pavel Rodinchenko 08.11.18 10:52 Сейчас в теме
В этом выражении: ОбластьСтроки.Параметры.Сумма = ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
ВыборкаСтроки.Сумма - это 100% число, так как в запросе явно видно, что берется числовое значение.
ВыборкаСтроки.СуммаНДС - в случае с таблицей "Товары", у вас число, а с таблицей "Услуги" - NULL.
Система не может преобразовать автоматически тип NULL к числу, поэтому такая ошибка и возникает
8. user973528 08.11.18 10:55 Сейчас в теме
Спасибо, теперь понял. Видимо проглядел
13. Denis_CFO 48 08.11.18 11:13 Сейчас в теме
похоже в накладной попался товар, у которого нет родителя.
14. user973528 08.11.18 11:13 Сейчас в теме
(13)
похоже в накладной попался товар, у которого нет родителя.


Даже не могу сказать откуда ошибка вылезает, печатаю остальные документы, ошибки нету
15. Denis_CFO 48 08.11.18 11:17 Сейчас в теме
(14) так а по (12) ответ то какой?
16. user973528 08.11.18 11:17 Сейчас в теме
(15)
ВыборкаСтрокиРодитель.Сумма Неопределено
17. user973528 08.11.18 11:40 Сейчас в теме
(15) Ошибка в том, что когда в документе стоит "НДС Сверху" то вываливается эта ошибка с суммой, а если стоит "НДС в сумме" то работает
18. Denis_CFO 48 08.11.18 11:57 Сейчас в теме
(17) параметр.Сумма в табДокументе существует в этом месте, где он должен заполнится? просто на строку выше он закомментирован.
19. user973528 08.11.18 11:59 Сейчас в теме
(18) Я сделал аналогично как сверху в НДС в сумме, закомментил, стало работать, суммы считает корректно
Оставьте свое сообщение

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