Коллеги, помогите пожалуйста. Вываливается ошибка при попытке распечатать печатную форму
Создал внешнюю печатную форму КС-2 из реализации товаров и услуг. Если вид документа "Товары и услуги" и табличная часть "Услуги" заполнена то при попытке распечатать выдаёт ошибку
Почему так выходит понять никак не могу
Вот собственно запрос и заполнение макета
{ВнешняяОбработка.КС2.МодульОбъекта(223)}: Преобразование значения к типу Число не может быть выполнено
ОбластьСтроки.Параметры.Сумма = ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
Почему так выходит понять никак не могу
Вот собственно запрос и заполнение макета
Функция ЗапросПоДокументам(МассивОбъектов)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Документ,
| РеализацияТоваровУслуг.Организация КАК Организация,
| РеализацияТоваровУслуг.Контрагент КАК Контрагент,
| РеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента,
| РеализацияТоваровУслуг.Руководитель КАК Руководитель,
| РеализацияТоваровУслуг.НомерПриложенияКС КАК НомерПриложенияКС,
| РеализацияТоваровУслуг.СуммаВключаетНДС КАК СуммаВключаетНДС
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Ссылка,
| РеализацияТоваровУслуг.Организация,
| РеализацияТоваровУслуг.Контрагент,
| РеализацияТоваровУслуг.ДоговорКонтрагента,
| РеализацияТоваровУслуг.Руководитель,
| РеализацияТоваровУслуг.НомерПриложенияКС
|ИТОГИ ПО
| Документ
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Документ,
| ВложенныйЗапрос.НоменклатураРодитель КАК Родитель,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| СУММА(ВложенныйЗапрос.Количество) КАК Количество,
| ВложенныйЗапрос.Цена КАК Цена,
| СУММА(ВложенныйЗапрос.Сумма + ВложенныйЗапрос.СуммаНДС) КАК Сумма,
| СУММА(ВложенныйЗапрос.СуммаНДС) КАК СуммаНДС
|ИЗ
| (ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
| РеализацияТоваровУслугТовары.Номенклатура.Родитель КАК НоменклатураРодитель,
| РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
| РеализацияТоваровУслугТовары.Количество КАК Количество,
| РеализацияТоваровУслугТовары.Цена КАК Цена,
| СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма,
| СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК СуммаНДС
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ГДЕ
| РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
|
| СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслугТовары.Ссылка,
| РеализацияТоваровУслугТовары.Номенклатура.Родитель,
| РеализацияТоваровУслугТовары.Номенклатура,
| РеализацияТоваровУслугТовары.Цена,
| РеализацияТоваровУслугТовары.Количество
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РеализацияТоваровУслугУслуги.Ссылка,
| РеализацияТоваровУслугУслуги.Номенклатура.Родитель,
| РеализацияТоваровУслугУслуги.Номенклатура,
| СУММА(РеализацияТоваровУслугУслуги.Количество),
| РеализацияТоваровУслугУслуги.Цена,
| СУММА(РеализацияТоваровУслугУслуги.Сумма),
| NULL
| ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
| ГДЕ
| РеализацияТоваровУслугУслуги.Ссылка В(&МассивОбъектов)
|
| СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслугУслуги.Ссылка,
| РеализацияТоваровУслугУслуги.Номенклатура.Родитель,
| РеализацияТоваровУслугУслуги.Номенклатура,
| РеализацияТоваровУслугУслуги.Цена) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка,
| ВложенныйЗапрос.НоменклатураРодитель,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Цена
|
|УПОРЯДОЧИТЬ ПО
| Документ,
| Родитель
|ИТОГИ
| СУММА(Сумма),
| СУММА(СуммаНДС)
|ПО
| Документ,
| Родитель
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Возврат Запрос.ВыполнитьПакет();
КонецФункции
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати)
МассивРезультатов = ЗапросПоДокументам(МассивОбъектов);
ВыборкаШапка = МассивРезультатов[0].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Документ");
МакетОбработки = ПолучитьМакет("Макет");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КС2";
Пока ВыборкаШапка.Следующий() Цикл
Отбор = Новый Структура("Документ");
Отбор.Документ = ВыборкаШапка.Документ;
НДСВСумме = ВыборкаШапка.СуммаВключаетНДС;
//заполняем шапку
ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Контрагент = ВыборкаШапка.Контрагент.НаименованиеПолное;
Попытка
ОбластьШапка.Параметры.АдресКонтрагент = УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(ВыборкаШапка.Контрагент, Перечисления.ТипыКонтактнойИнформации.Адрес)[0].Значение;
Исключение
ОбластьШапка.Параметры.АдресКонтрагент = "<Не указан адрес контрагента>";
КонецПопытки;
ОбластьШапка.Параметры.Организация = ВыборкаШапка.Организация.НаименованиеСокращенное;
ОбластьШапка.Параметры.АдресОрганизации = УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(ВыборкаШапка.Организация, Перечисления.ТипыКонтактнойИнформации.Адрес)[0].Значение;
Попытка
ОбластьШапка.Параметры.АдресОрганизации = УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(ВыборкаШапка.Организация, Перечисления.ТипыКонтактнойИнформации.Адрес)[0].Значение
Исключение
ОбластьШапка.Параметры.АдресОрганизации = "<Не указан адрес организации>";
КонецПопытки;
ОбластьШапка.Параметры.НомерДоговора = ВыборкаШапка.ДоговорКонтрагента.Номер;
ОбластьШапка.Параметры.Объект = ВыборкаШапка.Документ.Объект;
ОбластьШапка.Параметры.Стройка = ВыборкаШапка.Документ.Стройка;
ОбластьШапка.Параметры.ДоговорДень = Формат(ВыборкаШапка.ДоговорКонтрагента.Дата,"ДФ=""дд""");
ОбластьШапка.Параметры.ДоговорМесяц = Формат(ВыборкаШапка.ДоговорКонтрагента.Дата,"ДФ=""ММММ""");
ОбластьШапка.Параметры.Год = Формат(ВыборкаШапка.ДоговорКонтрагента.Дата,"ДФ=""гггг""");
ОбластьШапка.Параметры.НомерДокумента = ВыборкаШапка.Документ.НомерКС2;
ОбластьШапка.Параметры.ДатаДокумента = Формат(ВыборкаШапка.Документ.Дата,"ДЛФ=Д");
ОбластьШапка.Параметры.ОтчетныйПериодС = Формат(ВыборкаШапка.Документ.ОтчетныйПериодС, "ДЛФ=Д");
ОбластьШапка.Параметры.ОтчетныйПериодПо = Формат(ВыборкаШапка.Документ.ОтчетныйПериодПо, "ДЛФ=Д");
ОбластьШапка.Параметры.Договор = ВыборкаШапка.ДоговорКонтрагента.Наименование;
ОбластьШапка.Параметры.НомерПриложенияКС = ВыборкаШапка.НомерПриложенияКС;
ОбластьШапка.Параметры.ОбщаяСуммаКС = Формат(ВыборкаШапка.Документ.ОбщаяСуммаКС, "ЧДЦ=2");
//выводим шапку в табличный документ
ТабличныйДокумент.Вывести(ОбластьШапка);
НомерГрупп = 1;
Ном = 1;
СуммаУслуги = 0;
СуммаТовары = 0;
ВыборкаСтрокиДокумент = МассивРезультатов[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Документ");
Пока ВыборкаСтрокиДокумент.Следующий() Цикл
ВыборкаСтрокиРодитель = ВыборкаСтрокиДокумент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Родитель");
Пока ВыборкаСтрокиРодитель.Следующий() Цикл
ОбластьШапкаГруппы = МакетОбработки.ПолучитьОбласть("ШапкаГруппа");
ОбластьШапкаГруппы.Параметры.Родитель = ВыборкаСтрокиРодитель.Родитель;
//выводим шапку в табличный документ
ТабличныйДокумент.Вывести(ОбластьШапкаГруппы);
НомерСтроки = 1;
ВыборкаСтроки = ВыборкаСтрокиРодитель.Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
ОбластьСтроки = МакетОбработки.ПолучитьОбласть("Строка");
ОбластьСтроки.Параметры.Ном = Ном;
ОбластьСтроки.Параметры.НомерСтроки = Строка(НомерГрупп)+"."+Строка(НомерСтроки);
ОбластьСтроки.Параметры.Номенклатура = ВыборкаСтроки.Номенклатура.НаименованиеПолное;
ОбластьСтроки.Параметры.ЕдиницаИзмерения = ВыборкаСтроки.Номенклатура.ЕдиницаИзмерения;
ОбластьСтроки.Параметры.Количество = ВыборкаСтроки.Количество;
ОбластьСтроки.Параметры.Цена = ВыборкаСтроки.Цена;
Если НДСВСумме Тогда
ОбластьСтроки.Параметры.Сумма = ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
Иначе
ОбластьСтроки.Параметры.Сумма = ВыборкаСтроки.Сумма;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьСтроки);
НомерСтроки = НомерСтроки+1;
Ном = Ном + 1;
Если НомерГрупп = 1 Тогда
Если НДСВСумме Тогда
СуммаУслуги = СуммаУслуги + ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
Иначе
СуммаУслуги = СуммаУслуги + ВыборкаСтроки.Сумма;
КонецЕсли;
ИначеЕсли НомерГрупп = 2 Тогда
Если НДСВСумме Тогда
СуммаТовары = СуммаТовары + ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
Иначе
СуммаТовары = СуммаТовары + ВыборкаСтроки.Сумма;
КонецЕсли;
КонецЕСли;
КонецЦикла;
НомерГрупп = НомерГрупп+1;
ОбластьИтогиГруппа = МакетОбработки.ПолучитьОбласть("ИтогоГруппа");
ОбластьИтогиГруппа.Параметры.Раздел = ВыборкаСтрокиРодитель.Родитель;
Если НДСВСумме Тогда
ОбластьИтогиГруппа.Параметры.СуммаБезНДС = ВыборкаСтрокиРодитель.Сумма - ВыборкаСтрокиРодитель.СуммаНДС;
//ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма - ВыборкаСтрокиРодитель.СуммаНДС;
Иначе
ОбластьИтогиГруппа.Параметры.СуммаБезНДС = ВыборкаСтрокиРодитель.Сумма;
ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьИтогиГруппа);
КонецЦикла;
ОбластьИтогоВсего = МакетОбработки.ПолучитьОбласть("Итого");
Если НДСВСумме Тогда
ОбластьИтогоВсего.Параметры.НДС = "с";
Иначе
ОбластьИтогоВсего.Параметры.НДС = "без";
КонецЕсли;
//ОбластьИтогоВсего.Параметры.СуммаУслуги = СуммаУслуги;
//ОбластьИтогоВсего.Параметры.СуммаТовары = СуммаТовары;
ОбластьИтогоВсего.Параметры.НДСПОАкту = ВыборкаСтрокиДокумент.СуммаНДС;
Если НДСВСумме Тогда
ОбластьИтогоВсего.Параметры.Сумма = ВыборкаСтрокиДокумент.Сумма - ВыборкаСтрокиДокумент.СуммаНДС;
Иначе
ОбластьИтогоВсего.Параметры.Сумма = ВыборкаСтрокиДокумент.Сумма;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьИтогоВсего);
ОбластьПодписи = МакетОбработки.ПолучитьОбласть("Подписи");
ОбластьПодписи.Параметры.Контрагент = ВыборкаШапка.Контрагент.НаименованиеПолное;
ОбластьПодписи.Параметры.РуководительЗаказчик = ВыборкаШапка.Документ.РуководительЗаказчика;
ОбластьПодписи.Параметры.Организация = ВыборкаШапка.Организация.НаименованиеСокращенное;
ОбластьПодписи.Параметры.РуководительОрганизация = ВыборкаШапка.Руководитель;
ТабличныйДокумент.Вывести(ОбластьПодписи);
КонецЦикла;
КонецЦикла;
ТабличныйДокумент.ОтображатьСетку = Ложь;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
ПоказатьНайденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7) Да, там работает, только теперь ошибка при попытке печати если тип документа "Товары",
Опять с суммой
{ВнешняяОбработка.КС2.МодульОбъекта(253)}: Поле объекта не обнаружено (Сумма)
ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма;
Опять с суммой
(10) Вот выше написал
Да, там работает, только теперь ошибка при попытке печати если тип документа "Товары",
{ВнешняяОбработка.КС2.МодульОбъекта(253)}: Поле объекта не обнаружено (Сумма)
ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма;
Опять с суммой
Да, там работает, только теперь ошибка при попытке печати если тип документа "Товары",
{ВнешняяОбработка.КС2.МодульОбъекта(253)}: Поле объекта не обнаружено (Сумма)
ОбластьИтогиГруппа.Параметры.Сумма = ВыборкаСтрокиРодитель.Сумма;
Опять с суммой
А если печатаю из вида документа "Товары" то ошибки не происходит, т.к. табличной части Услуги там нет и если в "Товары и услуги" не заполняю табличную часть услуги, ошибки не выходит
В этом выражении: ОбластьСтроки.Параметры.Сумма = ВыборкаСтроки.Сумма - ВыборкаСтроки.СуммаНДС;
ВыборкаСтроки.Сумма - это 100% число, так как в запросе явно видно, что берется числовое значение.
ВыборкаСтроки.СуммаНДС - в случае с таблицей "Товары", у вас число, а с таблицей "Услуги" - NULL.
Система не может преобразовать автоматически тип NULL к числу, поэтому такая ошибка и возникает
ВыборкаСтроки.Сумма - это 100% число, так как в запросе явно видно, что берется числовое значение.
ВыборкаСтроки.СуммаНДС - в случае с таблицей "Товары", у вас число, а с таблицей "Услуги" - NULL.
Система не может преобразовать автоматически тип NULL к числу, поэтому такая ошибка и возникает
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот