Добрый день. Дорабатываю Внешнюю печатную форму Расходная накладная. Задача стоит добавить колонку МассаБрутто и выводить вес товара. Но при тестовании печатной формы выходит ошибка :"Итератор для значения не определен ошибка" .
Функция Печать() Экспорт
ЕдиницаИзмеренияВеса = Константы.ЕдиницаИзмеренияВеса.Получить();
мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
"ВЫБРАТЬ
ТекстЗапросаШапка =
| РеализацияТоваровУслуг.Номер,
| РеализацияТоваровУслуг.Дата,
| РеализацияТоваровУслуг.ДоговорКонтрагента,
| РеализацияТоваровУслуг.Контрагент КАК Получатель,
| РеализацияТоваровУслуг.Организация,
| РеализацияТоваровУслуг.Организация КАК Поставщик,
| РеализацияТоваровУслуг.СуммаДокумента,
| РеализацияТоваровУслуг.ВалютаДокумента,
| РеализацияТоваровУслуг.УчитыватьНДС,
| РеализацияТоваровУслуг.СуммаВключаетНДС,
| РеализацияТоваровУслуг.ОтпускПроизвел,
| РеализацияТоваровУслуг.КурсВзаиморасчетов,
| РеализацияТоваровУслуг.КратностьВзаиморасчетов,
| РеализацияТоваровУслуг.Ответственный
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("РеализацияТоваровУслуг");
ТекстЗапросаТовары =
"ВЫБРАТЬ
| ВложенныйЗапросПоТоварам.Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(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;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
Функция ПредставлениеСерий(Выборка) Экспорт
Результат = "(";
Если ЗначениеЗаполнено(Выборка.Характеристика) Тогда
Результат = Результат + Выборка.Характеристика;
Результат = СтрЗаменить(Результат, "<>", "");
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Серия) Тогда
Результат = ?(Результат = "(", Результат, Результат + "; ");
Результат = Результат + Выборка.Серия;
Результат = СтрЗаменить(Результат, "(<>", "(");
Результат = СтрЗаменить(Результат, "; <>", "");
КонецЕсли;
Результат = Результат + ")";
Возврат ?(Результат = "()", "", " " + Результат);
КонецФункции // ПредставлениеСерий()
печатную форму так же прилагаю.
В связи с чем может возникнуть данная ошибка?
guru
вт, 20/08/2019 - 22:34
Похоже ошибка в строке:
Тип значения переменной ТекстЗапросаТовары - Строка. А для Строки не предусмотрено использование цикла "Для Каждого".
Да и вообще непонятен смысл этого цикла. Вы же значение МассаБрутто в запросе получаете.
Лиана0988
ср, 21/08/2019 - 13:06
Чуть переделала модуль. теперь выходит ошибка "Поле объекта не обнаружено (МассаБрутто)" как программе сказать что массаБрутто это количество* вес. в запросе указала но данные не выходят в табличной части. Когда я Пишу
ОбластьДанных.Параметр.МассаБрутто= МассаБрутто. программа не понимает что такое МассаБрутто.
guru
ср, 21/08/2019 - 13:19
Попробуйте закомментировать эту строку. МассаБрутто будет заполняться?
Лиана0988
ср, 21/08/2019 - 13:37
Печатная форма формируется но без МассыБрутто
guru
ср, 21/08/2019 - 15:07
У единиц измерения вес заполнен?
Лиана0988
ср, 21/08/2019 - 15:44
да заполнен
Лиана0988
ср, 21/08/2019 - 17:32
Разобралась была Ошибка в запросе. :)
Лиана0988
пт, 23/08/2019 - 10:54
Можно еще вопрос. Массу Брутто вывела . Итого МассаБрутто тоже вивела. но когда добавляею еще одну номенклатру Итого массаБрутто считает но только последню строку, как сделать чтобы по всем Строкам считалось
guru
вт, 27/08/2019 - 11:24
А как у Вас происходит подсчёт общей массы брутто?