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 21 08.11.18 10:46 Сейчас в теме
Остальные ответы
Избранное Подписка Сортировка: Древо
4. Denis_CFO 21 08.11.18 10:46 Сейчас в теме
5. user973528 08.11.18 10:50 Сейчас в теме
(4) Спасибо большое получилось, а можете пояснить почему была ошибка? По запросу искало получается NULL(Ничего) а сумма не может быть пустой?
7. Denis_CFO 21 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 Сейчас в теме
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 21 08.11.18 11:13 Сейчас в теме
похоже в накладной попался товар, у которого нет родителя.
14. user973528 08.11.18 11:13 Сейчас в теме
(13)
похоже в накладной попался товар, у которого нет родителя.


Даже не могу сказать откуда ошибка вылезает, печатаю остальные документы, ошибки нету
15. Denis_CFO 21 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 21 08.11.18 11:57 Сейчас в теме
(17) параметр.Сумма в табДокументе существует в этом месте, где он должен заполнится? просто на строку выше он закомментирован.
19. user973528 08.11.18 11:59 Сейчас в теме
(18) Я сделал аналогично как сверху в НДС в сумме, закомментил, стало работать, суммы считает корректно
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)

Ведущий программист 1С
Сочи
зарплата от 80 000 руб. до 100 000 руб.
Полный день