Итератор для значения не определен ошибка при тестировании внешней печатной формы

Версия для печатиPDF-версия

Платформа:

Добрый день. Дорабатываю Внешнюю печатную форму Расходная накладная. Задача стоит добавить колонку МассаБрутто и выводить вес товара. Но при тестовании печатной формы выходит ошибка :"Итератор для значения не определен ошибка" . 

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

Похоже ошибка в строке:

Для Каждого ВыборкаСтрок Из ТекстЗапросаТовары Цикл

Тип значения переменной ТекстЗапросаТовары - Строка. А для Строки не предусмотрено использование цикла "Для Каждого".

Да и вообще непонятен смысл этого цикла. Вы же значение МассаБрутто в запросе получаете.

Чуть переделала модуль. теперь выходит ошибка "Поле объекта не обнаружено (МассаБрутто)" как программе сказать что массаБрутто это количество* вес. в запросе указала но данные не выходят в табличной части. Когда я Пишу 

ОбластьДанных.Параметр.МассаБрутто= МассаБрутто. программа не понимает что такое МассаБрутто.

Попробуйте закомментировать эту строку. МассаБрутто будет заполняться?

Печатная форма формируется но без МассыБрутто

У единиц измерения вес заполнен?

да заполнен

Разобралась была Ошибка в запросе. :)

Можно еще вопрос. Массу Брутто вывела . Итого МассаБрутто тоже вивела. но когда добавляею еще одну номенклатру Итого массаБрутто считает  но только последню строку, как сделать чтобы по всем Строкам считалось

  

А как у Вас происходит подсчёт общей массы брутто?