Доброго времени суток.
Подскажите пожалуйста как добавить сумму колонки количество, общее количество позиций в форму печать. В обработке печать общих форм.
И нужно создать строку Весом из карточки номенклатуры.
Помогите пож. с запросами, сам не разберусь.
мне кажется єто сложнее
seregapplk @ Сегодня, 14:44
,
мне кажется нет. Я согласен с denis84 насчет того, что вам надо сделать свою печатную форму (внутреннюю или внешнюю). В общую форму печати вроде ж передается уже сформированная печатная форма. Для любителей экзотики можно конечно там с ней что-то сделать, но для тех, кто не поклонник садомазо - отдельная печатная форма верный путь.
Вес пропустим, как сделать количество итого ?
вот функция заполнения печатной формы
тыцФункция ЗаполнитьТабличныйДокументРасходнаяНакладная(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, КомплектыПечати, ПараметрыПечати, ПараметрыВывода)
Перем КомплектПечатиПоСсылке;
КодЯзыкаПечать = ПараметрыВывода.КодЯзыкаДляМногоязычныхПечатныхФорм;
ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать();
ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;
КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
ИспользоватьРучныеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
ПоказыватьНДС = Константы.ВыводитьДопКолонкиНДС.Получить();
ПервыйДокумент = Истина;
Пока ДанныеПечати.Следующий() Цикл
//Для печати комплектов
Отказ = Ложь;
ПодготовкаДляПечатиКомплектов(ДанныеПечати, КомплектыПечати, КомплектПечатиПоСсылке, Отказ);
Если Отказ Тогда
Продолжить;
КонецЕсли;
// Найдем в выборке товары по текущему документу
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
НайденСледующий = ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
// В одном вызове этой функции обрабатываются документы одного типа
Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов")
ИЛИ ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ВыкупВозвратнойТарыКлиентом")
ИЛИ ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ПередачаТоваровМеждуОрганизациями") Тогда
ИспользоватьРучныеСкидки = Ложь;
ИспользоватьАвтоматическиеСкидки = Ложь;
КонецЕсли;
Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
ВыводитьКоды = Ложь;
КонецЕсли;
// Если в накладной только услуги - перейдем к следующему документу
Если НайденСледующий Тогда
ВыборкаПоТоварам = ВыборкаПоДокументам.Выбрать();
ЗаголовокСкидки = ФормированиеПечатныхФорм.НужноВыводитьСкидки(ВыборкаПоТоварам, ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки, КодЯзыкаПечать);
ЕстьСкидки = ЗаголовокСкидки.ЕстьСкидки;
ЕстьНДС = ДанныеПечати.УчитыватьНДС;
ВыборкаПоТоварам.Сбросить();
Иначе
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='В документе %1 отсутствуют товары. Печать накладной не требуется';uk='У документі %1 відсутні товари. Друк накладної не потрібний'"),
ДанныеПечати.Ссылка
);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ДанныеПечати.Ссылка
);
Продолжить;
КонецЕсли;
// Макет необходимо получать для каждого документа, т.к. размеры колонок изменяются динамически
Макет = УправлениеПечатью.ПолучитьМакет("Обработка.ПечатьОбщихФорм.ПФ_MXL_РасходнаяНакладная", КодЯзыкаПечать);
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);
ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати, НСтр("ru='Расходная накладная';uk='Видаткова накладна'",КодЯзыкаПечать), КодЯзыкаПечать);
СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("ТекстЗаголовка", ТекстЗаголовка);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ТабличныйДокумент.Вывести(ОбластьМакета);
СведенияОПоставщике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата,,ДанныеПечати.БанковскийСчетОрганизации);
СведенияОПокупателе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Получатель, ДанныеПечати.Дата,,ДанныеПечати.БанковскийСчетКонтрагента);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование",,КодЯзыкаПечать);
РеквизитыПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "НомерСчета,Банк,МФО,/,ЮридическийАдрес,Телефоны,/,КодПоЕДРПОУ,КодПоДРФО,ИНН,НомерСвидетельства,/,ИнформацияОСтатусеПлательщикаНалогов,",,КодЯзыкаПечать);
СтруктураДанныхПоставщик = Новый Структура;
СтруктураДанныхПоставщик.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
СтруктураДанныхПоставщик.Вставить("Поставщик", ДанныеПечати.Организация);
СтруктураДанныхПоставщик.Вставить("РеквизитыПоставщика", РеквизитыПоставщика);
СтруктураДанныхПоставщик.Вставить("Склад", ДанныеПечати.Ссылка.Склад);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование",,КодЯзыкаПечать);
РеквизитыПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ФактическийАдрес,Телефоны,",,КодЯзыкаПечать);
Склад = ДанныеПечати.Ссылка.Склад;
СтруктураДанныхПокупатель = Новый Структура;
СтруктураДанныхПокупатель.Вставить("ПредставлениеПолучателя", ПредставлениеПолучателя);
СтруктураДанныхПокупатель.Вставить("Получатель", ДанныеПечати.Получатель);
СтруктураДанныхПокупатель.Вставить("РеквизитыПокупателя", РеквизитыПокупателя);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПокупатель);
Запрос2 = Новый Запрос(
"ВЫБРАТЬ
| РасчетыСКлиентамиОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
| РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
| РасчетыСКлиентамиОстаткиИОбороты.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(, , Регистратор, Движения, ) КАК РасчетыСКлиентамиОстаткиИОбороты
|ГДЕ
| РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам.Контрагент = &Контрагент
| И РасчетыСКлиентамиОстаткиИОбороты.Период = &Регистратор" );
Запрос2.УстановитьПараметр("Контрагент", ДанныеПечати.Получатель);
Запрос2.УстановитьПараметр("Регистратор", ДанныеПечати.Дата);
Результат2 = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи2 = Результат2.Выбрать();
Если ВыборкаДетальныеЗаписи2.Следующий() Тогда
КонечныйДолг = ВыборкаДетальныеЗаписи2.СуммаКонечныйОстаток;
Если КонечныйДолг < 0 Тогда
ОбластьМакета.Параметры.ДолгИнфа = "Передоплата контрагента з урахуванням цієї накладної становить " + (-1)*КонечныйДолг + " грн.";
Иначе
ОбластьМакета.Параметры.ДолгИнфа = "Заборгованість контрагента з урахуванням цієї накладної становить " + КонечныйДолг + " грн.";
КонецЕсли;
Иначе
ОбластьМакета.Параметры.ДолгИнфа = "";
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
// Выводим дополнительно информацию о договоре и заказе
СписокДополнительныхПараметров = "ДоговорНаименованиеДляПечати,";
Если ДанныеПечати.ПечататьЗаказ Тогда
// Реализацию и договор уже вывели
СписокДополнительныхПараметров = СписокДополнительныхПараметров + "Заказ,";
КонецЕсли;
СписокДополнительныхПараметров = СписокДополнительныхПараметров + "АдресДоставки,";
МассивСтруктурСтрок = ФормированиеПечатныхФорм.ДополнительнаяИнформация(ДанныеПечати, СписокДополнительныхПараметров, КодЯзыкаПечать);
ОбластьМакета = Макет.ПолучитьОбласть("ДопИнформация");
Для каждого СтруктураСтроки Из МассивСтруктурСтрок Цикл
ОбластьМакета.Параметры.Заполнить(СтруктураСтроки);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
// Выводим заголовок таблицы Товары
СуффиксОбластиСтроки = ?(ЕстьСкидки, "СоСкидкой", "") + ?(ЕстьНДС И ПоказыватьНДС, "СНДС", "");
СуффиксОбластиКолонки = ?(ЕстьСкидки И ЕстьНДС И ПоказыватьНДС, "СоСкидкойСНДС", ?(ЕстьСкидки Или (ЕстьНДС И ПоказыватьНДС), "СоСкидкойИлиСНДС", ""));
ОбластьКолонкаТовар = Макет.Область("ПерваяКолонкаТовара");
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
+ ?(ВыводитьКоды, 0, Макет.Область("КолонкаКодов").ШиринаКолонки)
;
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбластиСтроки + "|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбластиСтроки + "|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбластиСтроки + "|Товар" + СуффиксОбластиКолонки);
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбластиСтроки + "|Данные" + СуффиксОбластиКолонки);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов;
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ОбластьДанных.Параметры, ФормированиеПечатныхФорм.СформироватьЗаголовкиДляСуммовыхПоказателей(ДанныеПечати, КодЯзыкаПечать));
Если ЕстьСкидки Тогда
СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки",
ЗаголовокСкидки.Скидка,
ЗаголовокСкидки.СуммаСкидки);
ОбластьДанных.Параметры.Заполнить(СтруктураЗаголовокСкидки);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьНомераСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "|НомерСтроки");
ОбластьКодовСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "|КолонкаКодов");
ОбластьТоварСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "|Товар" + СуффиксОбластиКолонки);
ОбластьДанныхСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "|Данные" + СуффиксОбластиКолонки);
ИспользоватьНаборы = Ложь;
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоДокументам, "ЭтоНабор") Тогда
ИспользоватьНаборы = Истина;
ОбластьНомераСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Набор" + "|НомерСтроки");
ОбластьНомераСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Комплектующие" + "|НомерСтроки");
ОбластьКодовСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Набор" + "|КолонкаКодов");
ОбластьКодовСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Комплектующие" + "|КолонкаКодов");
ОбластьТоварСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Набор" + "|Товар" + СуффиксОбластиКолонки);
ОбластьТоварСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Комплектующие" + "|Товар" + СуффиксОбластиКолонки);
ОбластьДанныхСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Набор" + "|Данные" + СуффиксОбластиКолонки);
ОбластьДанныхСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Комплектующие" + "|Данные" + СуффиксОбластиКолонки);
КонецЕсли;
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
НомерСтроки = 0;
ВсегоБезСкидок = 0;
ПустыеДанные = НаборыСервер.ПустыеДанные();
// Выводим строки таблицы Товары
Пока ВыборкаПоТоварам.Следующий() Цикл
Если НаборыСервер.ИспользоватьОбластьНабор(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьКодовСтроки = ОбластьКодовСтрокиНабор;
ОбластьНомераСтроки = ОбластьНомераСтрокиНабор;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиНабор;
ОбластьТоварСтроки = ОбластьТоварСтрокиНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьКодовСтроки = ОбластьКодовСтрокиКомплектующие;
ОбластьНомераСтроки = ОбластьНомераСтрокиКомплектующие;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиКомплектующие;
ОбластьТоварСтроки = ОбластьТоварСтрокиКомплектующие;
Иначе
ОбластьКодовСтроки = ОбластьКодовСтрокиСтандарт;
ОбластьНомераСтроки = ОбластьНомераСтрокиСтандарт;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиСтандарт;
ОбластьТоварСтроки = ОбластьТоварСтрокиСтандарт;
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", Неопределено);
Иначе
НомерСтроки = НомерСтроки + 1;
УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", НомерСтроки);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьНомераСтроки);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("Артикул", ВыборкаПоТоварам[КолонкаКодов]);
ОбластьКодовСтроки.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодовСтроки);
КонецЕсли;
ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(ВыборкаПоТоварам, ИспользоватьНаборы);
ОбластьТоварСтроки.Параметры.Заполнить(ВыборкаПоТоварам);
Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
Товар = ВыборкаПоТоварам.Содержание;
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьТоварСтроки.Параметры.Заполнить(СтруктураДанныхТовар);
Иначе
Товар = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоТоварам.ТоварНаименованиеПолное,
ВыборкаПоТоварам.Характеристика,
,
,
,
ВыборкаПоТоварам.ЭтоВозвратнаяТара,
КодЯзыкаПечать) + ПрефиксИПостфикс.Постфикс;
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьТоварСтроки.Параметры.Заполнить(СтруктураДанныхТовар);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТоварСтроки);
Если ЗаголовокСкидки.ЕстьСкидки Тогда
СтруктураДанныхСуммаСкидки = Новый Структура("СуммаСкидки",
?(ЗаголовокСкидки.ТолькоНаценка,- ВыборкаПоТоварам.СуммаСкидки,ВыборкаПоТоварам.СуммаСкидки));
ОбластьДанныхСтроки.Параметры.Заполнить(СтруктураДанныхСуммаСкидки);
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьДанныхСтроки.Параметры.Заполнить(ПустыеДанные);
Иначе
ОбластьДанныхСтроки.Параметры.Заполнить(ВыборкаПоТоварам);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанныхСтроки);
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
Сумма = Сумма + ВыборкаПоТоварам.Сумма;
СуммаНДС = СуммаНДС + ВыборкаПоТоварам.СуммаНДС;
Если ЕстьСкидки Тогда
ВсегоСкидок = ВсегоСкидок + ВыборкаПоТоварам.СуммаСкидки;
ВсегоБезСкидок = ВсегоБезСкидок + ВыборкаПоТоварам.СуммаБезСкидки;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Выводим подвал
ОбластьНомера = Макет.ПолучитьОбласть("ПодвалТаблицы" + СуффиксОбластиСтроки + "|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ПодвалТаблицы" + СуффиксОбластиСтроки + "|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ПодвалТаблицы" + СуффиксОбластиСтроки + "|Товар" + СуффиксОбластиКолонки);
ОбластьДанных = Макет.ПолучитьОбласть("ПодвалТаблицы" + СуффиксОбластиСтроки + "|Данные" + СуффиксОбластиКолонки);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
СтруктураДанныхВсегоСкидки = Новый Структура;
Если ЕстьСкидки Тогда
СтруктураДанныхВсегоСкидки.Вставить("ВсегоСкидок", ?(ЗаголовокСкидки.ТолькоНаценка,-ВсегоСкидок, ВсегоСкидок));
СтруктураДанныхВсегоСкидки.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
КонецЕсли;
СтруктураДанныхВсегоСкидки.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьДанных.Параметры.Заполнить(СтруктураДанныхВсегоСкидки);
ТабличныйДокумент.Присоединить(ОбластьДанных);
// Выводим ИтогоНДС
Область = Макет.ПолучитьОбласть("ПодвалНДС");
СтруктураДанныхПодвалНДС = Новый Структура;
СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", СуммаНДС);
Если ЕстьНДС Тогда
СтруктураДанныхПодвалНДС.Вставить("НДС", ?(ДанныеПечати.ЦенаВключаетНДС, НСтр("ru='В том числе НДС:';uk='У тому числі ПДВ:'",КодЯзыкаПечать), НСтр("ru='Сумма НДС:';uk='Сума ПДВ:'",КодЯзыкаПечать)));
Если Не ДанныеПечати.ЦенаВключаетНДС Тогда
Область.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
ТабличныйДокумент.Вывести(Область);
СтруктураДанныхПодвалНДС = Новый Структура;
СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Всего с НДС:';uk='Всього із ПДВ:'",КодЯзыкаПечать));
СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", Сумма + СуммаНДС);
КонецЕсли;
Иначе
СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)';uk='Без податку (ПДВ)'",КодЯзыкаПечать));
КонецЕсли;
Область.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
ТабличныйДокумент.Присоединить(Область);
// Выводим Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС);
СтруктураДанныхСуммаПрописью = Новый Структура;
ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Всего наименований %1, на сумму %2';uk='Всього найменувань %1, на суму %2'",КодЯзыкаПечать),
ВыборкаПоТоварам.Количество(),
ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
СтруктураДанныхСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта, , КодЯзыкаПечать));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
ТабличныйДокумент.Вывести(ОбластьМакета);
Если ЗначениеЗаполнено(ДанныеПечати.МестоСоставленияДокумента) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("МестоСоставления");
СтруктураДанныхМестоСоставления = Новый Структура;
СтруктураДанныхМестоСоставления.Вставить("МестоСоставления", СокрЛП(ДанныеПечати.МестоСоставленияДокумента));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхМестоСоставления);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
// Выводим подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Заполнить(ФормированиеПечатныхФорм.СведенияОбОтветсвенныхЛицах(ДанныеПечати, КодЯзыкаПечать));
ТабличныйДокумент.Вывести(ОбластьМакета);
ЗавершениеДляПечатиКомплектов(КомплектыПечати, КомплектПечатиПоСсылке, ТабличныйДокумент, НомерСтрокиНачало);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
КонецФункции
#КонецОбласти
Простите за пост такой, думал код уйдет под спойлер,
seregapplk @ Сегодня, 11:08
,
ИМХО, посмотрите как считает Сумма и рядом считайте ОбщееКоличество
dravva @ Вчера, 12:12
,
похоже что так Параметр в форме <Всего>
Если ЕстьСкидки Тогда
СтруктураДанныхВсегоСкидки.Вставить("ВсегоСкидок", ?(ЗаголовокСкидки.ТолькоНаценка,-ВсегоСкидок, ВсегоСкидок));
СтруктураДанныхВсегоСкидки.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
КонецЕсли;
СтруктураДанныхВсегоСкидки.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьДанных.Параметры.Заполнить(СтруктураДанныхВсегоСкидки);
ТабличныйДокумент.Присоединить(ОбластьДанных);
seregapplk @ Сегодня, 9:38
,
Подскажите что не так
ох жесть какая
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
НомерСтроки = 0;
ВсегоБезСкидок = 0;
ИтогКоличество = 0;
ИтогВес = 0;
Пока ВыборкаПоТоварам.Следующий() Цикл
//Тут все тело цикла
ИтогКоличество = ИтогКоличество + ВыборкаПоТоварам.Количество;
ИтогВес = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес;
КонецЦикла;
ОбластьПодвалТаблицы.Параметры.ИтогВес = ИтогВес;
ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество;
ПустыеДанные = НаборыСервер.ПустыеДанные();
// Выводим строки таблицы Товары
для начала областьПодвал.... надо получить (ОбластьПодвалТаблицы = макет.ПолучитьОбласть("...
во-вторых - выводить ее надо по-частям -- через Присоединить().
У Вас в коде Подвал выводится - посмотрите после цикла по строкам
Пока ВыборкаПоТоварам.Следующий() Цикл
//Тут все тело цикла
ИтогКоличество = ИтогКоличество + ВыборкаПоТоварам.Количество;
ИтогВес = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес;
КонецЦикла;
ОбластьПодвалТаблицы = макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьПодвалТаблицы.Параметры.ИтогВес = ИтогВес;
ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество;
все считает, через сообщить выводит,
не могу вывести правильно в товар на форму
с этим кодом пусто в строке товары
КодСумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
НомерСтроки = 0;
ВсегоБезСкидок = 0;
ПустыеДанные = НаборыСервер.ПустыеДанные();
// вес
ИтогКоличество = 0;
ИтогВес = 0;
Пока ВыборкаПоТоварам.Следующий() Цикл
//Тут все тело цикла
ИтогКоличество = ИтогКоличество + ВыборкаПоТоварам.Количество;
ИтогВес = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес;
КонецЦикла;
Сообщить(ИтогКоличество);
Сообщить(ИтогВес);
// Выводим заголовок таблицы Товары
СуффиксОбластиСтроки = ?(ЕстьСкидки, "СоСкидкой", "") + ?(ЕстьНДС И ПоказыватьНДС, "СНДС", "");
СуффиксОбластиКолонки = ?(ЕстьСкидки И ЕстьНДС И ПоказыватьНДС, "СоСкидкойСНДС", ?(ЕстьСкидки Или (ЕстьНДС И ПоказыватьНДС), "СоСкидкойИлиСНДС", ""));
ОбластьКолонкаТовар = Макет.Область("ПерваяКолонкаТовара");
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
+ ?(ВыводитьКоды, 0, Макет.Область("КолонкаКодов").ШиринаКолонки)
;
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбластиСтроки + "|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбластиСтроки + "|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбластиСтроки + "|Товар" + СуффиксОбластиКолонки);
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбластиСтроки + "|Данные" + СуффиксОбластиКолонки);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов;
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ОбластьДанных.Параметры, ФормированиеПечатныхФорм.СформироватьЗаголовкиДляСуммовыхПоказателей(ДанныеПечати, КодЯзыкаПечать));
Если ЕстьСкидки Тогда
СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки",
ЗаголовокСкидки.Скидка,
ЗаголовокСкидки.СуммаСкидки);
ОбластьДанных.Параметры.Заполнить(СтруктураЗаголовокСкидки);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьНомераСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "|НомерСтроки");
ОбластьКодовСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "|КолонкаКодов");
ОбластьТоварСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "|Товар" + СуффиксОбластиКолонки);
ОбластьДанныхСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "|Данные" + СуффиксОбластиКолонки);
ИспользоватьНаборы = Ложь;
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоДокументам, "ЭтоНабор") Тогда
ИспользоватьНаборы = Истина;
ОбластьНомераСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Набор" + "|НомерСтроки");
ОбластьНомераСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Комплектующие" + "|НомерСтроки");
ОбластьКодовСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Набор" + "|КолонкаКодов");
ОбластьКодовСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Комплектующие" + "|КолонкаКодов");
ОбластьТоварСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Набор" + "|Товар" + СуффиксОбластиКолонки);
ОбластьТоварСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Комплектующие" + "|Товар" + СуффиксОбластиКолонки);
ОбластьДанныхСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Набор" + "|Данные" + СуффиксОбластиКолонки);
ОбластьДанныхСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбластиСтроки + "Комплектующие" + "|Данные" + СуффиксОбластиКолонки);
КонецЕсли;
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
НомерСтроки = 0;
ВсегоБезСкидок = 0;
ПустыеДанные = НаборыСервер.ПустыеДанные();
// вес
ИтогКоличество = 0;
ИтогВес = 0;
Пока ВыборкаПоТоварам.Следующий() Цикл
//Тут все тело цикла
ИтогКоличество = ИтогКоличество + ВыборкаПоТоварам.Количество;
ИтогВес = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес;
КонецЦикла;
Сообщить(ИтогКоличество);
Сообщить(ИтогВес);
// Выводим строки таблицы Товары
Пока ВыборкаПоТоварам.Следующий() Цикл
Если НаборыСервер.ИспользоватьОбластьНабор(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьКодовСтроки = ОбластьКодовСтрокиНабор;
ОбластьНомераСтроки = ОбластьНомераСтрокиНабор;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиНабор;
ОбластьТоварСтроки = ОбластьТоварСтрокиНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьКодовСтроки = ОбластьКодовСтрокиКомплектующие;
ОбластьНомераСтроки = ОбластьНомераСтрокиКомплектующие;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиКомплектующие;
ОбластьТоварСтроки = ОбластьТоварСтрокиКомплектующие;
Иначе
ОбластьКодовСтроки = ОбластьКодовСтрокиСтандарт;
ОбластьНомераСтроки = ОбластьНомераСтрокиСтандарт;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиСтандарт;
ОбластьТоварСтроки = ОбластьТоварСтрокиСтандарт;
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", Неопределено);
Иначе
НомерСтроки = НомерСтроки + 1;
УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", НомерСтроки);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьНомераСтроки);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("Артикул", ВыборкаПоТоварам[КолонкаКодов]);
ОбластьКодовСтроки.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодовСтроки);
КонецЕсли;
ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(ВыборкаПоТоварам, ИспользоватьНаборы);
ОбластьТоварСтроки.Параметры.Заполнить(ВыборкаПоТоварам);
Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
Товар = ВыборкаПоТоварам.Содержание;
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьТоварСтроки.Параметры.Заполнить(СтруктураДанныхТовар);
Иначе
Товар = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоТоварам.ТоварНаименованиеПолное,
ВыборкаПоТоварам.Характеристика,
,
,
,
ВыборкаПоТоварам.ЭтоВозвратнаяТара,
КодЯзыкаПечать) + ПрефиксИПостфикс.Постфикс;
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьТоварСтроки.Параметры.Заполнить(СтруктураДанныхТовар);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТоварСтроки);
Если ЗаголовокСкидки.ЕстьСкидки Тогда
СтруктураДанныхСуммаСкидки = Новый Структура("СуммаСкидки",
?(ЗаголовокСкидки.ТолькоНаценка,- ВыборкаПоТоварам.СуммаСкидки,ВыборкаПоТоварам.СуммаСкидки));
ОбластьДанныхСтроки.Параметры.Заполнить(СтруктураДанныхСуммаСкидки);
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьДанныхСтроки.Параметры.Заполнить(ПустыеДанные);
Иначе
ОбластьДанныхСтроки.Параметры.Заполнить(ВыборкаПоТоварам);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанныхСтроки);
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
Сумма = Сумма + ВыборкаПоТоварам.Сумма;
СуммаНДС = СуммаНДС + ВыборкаПоТоварам.СуммаНДС;
Если ЕстьСкидки Тогда
ВсегоСкидок = ВсегоСкидок + ВыборкаПоТоварам.СуммаСкидки;
ВсегоБезСкидок = ВсегоБезСкидок + ВыборкаПоТоварам.СуммаБезСкидки;
КонецЕсли;
КонецЕсли;
КонецЦикла;
seregapplk @ Сегодня, 10:29
,
все разобрался, я протупил)) Всем Спасибо огромное!
ИтогВес = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес;
получаем вес по количеству строк,
как получить вес по количеству номенклатуры?
Все получилось, спасибо
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua