Группа: Пользователи
Сообщений: 14
Спасибо сказали: 1 раз
Рейтинг: 0
Доброго времени суток. Подскажите пожалуйста как добавить сумму колонки количество, общее количество позиций в форму печать. В обработке печать общих форм. И нужно создать строку Весом из карточки номенклатуры. Помогите пож. с запросами, сам не разберусь.
Группа: Основатель
Сообщений: 13983
Из: Киев
Спасибо сказали: 4553 раз
Рейтинг: 3682.7
seregapplk @ Сегодня, 14:44
, мне кажется нет. Я согласен с denis84 насчет того, что вам надо сделать свою печатную форму (внутреннюю или внешнюю). В общую форму печати вроде ж передается уже сформированная печатная форма. Для любителей экзотики можно конечно там с ней что-то сделать, но для тех, кто не поклонник садомазо - отдельная печатная форма верный путь.
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки; Иначе ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить() <> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки); КонецЕсли;
ПодготовкаДляПечатиКомплектов(ДанныеПечати, КомплектыПечати, КомплектПечатиПоСсылке, Отказ); Если Отказ Тогда Продолжить; КонецЕсли;
// Найдем в выборке товары по текущему документу СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка); НайденСледующий = ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
// В одном вызове этой функции обрабатываются документы одного типа Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") ИЛИ ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ВыкупВозвратнойТарыКлиентом") ИЛИ ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ПередачаТоваровМеждуОрганизациями") Тогда ИспользоватьРучныеСкидки = Ложь; ИспользоватьАвтоматическиеСкидки = Ложь; КонецЕсли;
Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда ВыводитьКоды = Ложь; КонецЕсли;
// Если в накладной только услуги - перейдем к следующему документу Если НайденСледующий Тогда ВыборкаПоТоварам = ВыборкаПоДокументам.Выбрать(); ЗаголовокСкидки = ФормированиеПечатныхФорм.НужноВыводитьСкидки(ВыборкаПоТоварам, ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки, КодЯзыкаПечать); ЕстьСкидки = ЗаголовокСкидки.ЕстьСкидки; ЕстьНДС = ДанныеПечати.УчитыватьНДС; ВыборкаПоТоварам.Сбросить(); Иначе Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='В документе %1 отсутствуют товары. Печать накладной не требуется';uk='У документі %1 відсутні товари. Друк накладної не потрібний'"), ДанныеПечати.Ссылка );
// Макет необходимо получать для каждого документа, т.к. размеры колонок изменяются динамически Макет = УправлениеПечатью.ПолучитьМакет("Обработка.ПечатьОбщихФорм.ПФ_MXL_РасходнаяНакладная", КодЯзыкаПечать);
Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли;
Если ВыборкаДетальныеЗаписи2.Следующий() Тогда КонечныйДолг = ВыборкаДетальныеЗаписи2.СуммаКонечныйОстаток; Если КонечныйДолг < 0 Тогда ОбластьМакета.Параметры.ДолгИнфа = "Передоплата контрагента з урахуванням цієї накладної становить " + (-1)*КонечныйДолг + " грн."; Иначе ОбластьМакета.Параметры.ДолгИнфа = "Заборгованість контрагента з урахуванням цієї накладної становить " + КонечныйДолг + " грн.";
КонецЕсли; Иначе ОбластьМакета.Параметры.ДолгИнфа = ""; КонецЕсли; ТабличныйДокумент.Вывести(ОбластьМакета);
// Выводим дополнительно информацию о договоре и заказе СписокДополнительныхПараметров = "ДоговорНаименованиеДляПечати,"; Если ДанныеПечати.ПечататьЗаказ Тогда // Реализацию и договор уже вывели СписокДополнительныхПараметров = СписокДополнительныхПараметров + "Заказ,"; КонецЕсли; СписокДополнительныхПараметров = СписокДополнительныхПараметров + "АдресДоставки,";
МассивСтруктурСтрок = ФормированиеПечатныхФорм.ДополнительнаяИнформация(ДанныеПечати, СписокДополнительныхПараметров, КодЯзыкаПечать); ОбластьМакета = Макет.ПолучитьОбласть("ДопИнформация"); Для каждого СтруктураСтроки Из МассивСтруктурСтрок Цикл ОбластьМакета.Параметры.Заполнить(СтруктураСтроки); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла;
// Выводим заголовок таблицы Товары
СуффиксОбластиСтроки = ?(ЕстьСкидки, "СоСкидкой", "") + ?(ЕстьНДС И ПоказыватьНДС, "СНДС", ""); СуффиксОбластиКолонки = ?(ЕстьСкидки И ЕстьНДС И ПоказыватьНДС, "СоСкидкойСНДС", ?(ЕстьСкидки Или (ЕстьНДС И ПоказыватьНДС), "СоСкидкойИлиСНДС", ""));
Если ЕстьСкидки Тогда СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки", ЗаголовокСкидки.Скидка, ЗаголовокСкидки.СуммаСкидки); ОбластьДанных.Параметры.Заполнить(СтруктураЗаголовокСкидки); КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", Неопределено); Иначе НомерСтроки = НомерСтроки + 1; УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", НомерСтроки); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьНомераСтроки);
Если ВыводитьКоды Тогда СтруктураДанныхКоды = Новый Структура("Артикул", ВыборкаПоТоварам[КолонкаКодов]); ОбластьКодовСтроки.Параметры.Заполнить(СтруктураДанныхКоды); ТабличныйДокумент.Присоединить(ОбластьКодовСтроки); КонецЕсли;
Если ЗаголовокСкидки.ЕстьСкидки Тогда СтруктураДанныхСуммаСкидки = Новый Структура("СуммаСкидки", ?(ЗаголовокСкидки.ТолькоНаценка,- ВыборкаПоТоварам.СуммаСкидки,ВыборкаПоТоварам.СуммаСкидки)); ОбластьДанныхСтроки.Параметры.Заполнить(СтруктураДанныхСуммаСкидки); КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда ОбластьДанныхСтроки.Параметры.Заполнить(ПустыеДанные); Иначе ОбластьДанныхСтроки.Параметры.Заполнить(ВыборкаПоТоварам); КонецЕсли;
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда Сумма = Сумма + ВыборкаПоТоварам.Сумма; СуммаНДС = СуммаНДС + ВыборкаПоТоварам.СуммаНДС;
Если ЕстьСкидки Тогда ВсегоСкидок = ВсегоСкидок + ВыборкаПоТоварам.СуммаСкидки; ВсегоБезСкидок = ВсегоБезСкидок + ВыборкаПоТоварам.СуммаБезСкидки; КонецЕсли; КонецЕсли;
Если ВыводитьКоды Тогда ТабличныйДокумент.Присоединить(ОбластьКодов); КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
СтруктураДанныхВсегоСкидки = Новый Структура; Если ЕстьСкидки Тогда СтруктураДанныхВсегоСкидки.Вставить("ВсегоСкидок", ?(ЗаголовокСкидки.ТолькоНаценка,-ВсегоСкидок, ВсегоСкидок)); СтруктураДанныхВсегоСкидки.Вставить("ВсегоБезСкидок", ВсегоБезСкидок); КонецЕсли; СтруктураДанныхВсегоСкидки.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма)); ОбластьДанных.Параметры.Заполнить(СтруктураДанныхВсегоСкидки); ТабличныйДокумент.Присоединить(ОбластьДанных);
// Выводим ИтогоНДС
Область = Макет.ПолучитьОбласть("ПодвалНДС"); СтруктураДанныхПодвалНДС = Новый Структура; СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", СуммаНДС); Если ЕстьНДС Тогда СтруктураДанныхПодвалНДС.Вставить("НДС", ?(ДанныеПечати.ЦенаВключаетНДС, НСтр("ru='В том числе НДС:';uk='У тому числі ПДВ:'",КодЯзыкаПечать), НСтр("ru='Сумма НДС:';uk='Сума ПДВ:'",КодЯзыкаПечать))); Если Не ДанныеПечати.ЦенаВключаетНДС Тогда Область.Параметры.Заполнить(СтруктураДанныхПодвалНДС); ТабличныйДокумент.Вывести(Область); СтруктураДанныхПодвалНДС = Новый Структура; СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Всего с НДС:';uk='Всього із ПДВ:'",КодЯзыкаПечать)); СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", Сумма + СуммаНДС); КонецЕсли; Иначе СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)';uk='Без податку (ПДВ)'",КодЯзыкаПечать)); КонецЕсли; Область.Параметры.Заполнить(СтруктураДанныхПодвалНДС); ТабличныйДокумент.Присоединить(Область);
ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Всего наименований %1, на сумму %2';uk='Всього найменувань %1, на суму %2'",КодЯзыкаПечать), ВыборкаПоТоварам.Количество(), ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
Если ЗначениеЗаполнено(ДанныеПечати.МестоСоставленияДокумента) Тогда ОбластьМакета = Макет.ПолучитьОбласть("МестоСоставления"); СтруктураДанныхМестоСоставления = Новый Структура; СтруктураДанныхМестоСоставления.Вставить("МестоСоставления", СокрЛП(ДанныеПечати.МестоСоставленияДокумента)); ОбластьМакета.Параметры.Заполнить(СтруктураДанныхМестоСоставления); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли;
Пока ВыборкаПоТоварам.Следующий() Цикл //Тут все тело цикла ИтогКоличество = ИтогКоличество + ВыборкаПоТоварам.Количество; ИтогВес = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес; КонецЦикла; ОбластьПодвалТаблицы.Параметры.ИтогВес = ИтогВес; ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество;
ПустыеДанные = НаборыСервер.ПустыеДанные();
// Выводим строки таблицы Товары
{Обработка.ПечатьОбщихФорм.МодульМенеджера(1017,1)}: Переменная не определена (ОбластьПодвалТаблицы) <<?>>ОбластьПодвалТаблицы.Параметры.ИтогВес = ИтогВес; (Проверка: Сервер) {Обработка.ПечатьОбщихФорм.МодульМенеджера(1018,1)}: Переменная не определена (ОбластьПодвалТаблицы) <<?>>ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество; (Проверка: Сервер) [необходимо зарегистрироваться для просмотра ссылки] [необходимо зарегистрироваться для просмотра ссылки]
для начала областьПодвал.... надо получить (ОбластьПодвалТаблицы = макет.ПолучитьОбласть("... во-вторых - выводить ее надо по-частям -- через Присоединить(). У Вас в коде Подвал выводится - посмотрите после цикла по строкам
ругается {Обработка.ПечатьОбщихФорм.МодульМенеджера(1019)}: Поле объекта не обнаружено (ИтогКоличество) ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество;
Как правильно присоединить?
sava1 @ Сегодня, 15:22
, нет, только через присоединить.
Если ЕстьСкидки Тогда СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки", ЗаголовокСкидки.Скидка, ЗаголовокСкидки.СуммаСкидки); ОбластьДанных.Параметры.Заполнить(СтруктураЗаголовокСкидки); КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", Неопределено); Иначе НомерСтроки = НомерСтроки + 1; УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", НомерСтроки); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьНомераСтроки);
Если ВыводитьКоды Тогда СтруктураДанныхКоды = Новый Структура("Артикул", ВыборкаПоТоварам[КолонкаКодов]); ОбластьКодовСтроки.Параметры.Заполнить(СтруктураДанныхКоды); ТабличныйДокумент.Присоединить(ОбластьКодовСтроки); КонецЕсли;
Если ЗаголовокСкидки.ЕстьСкидки Тогда СтруктураДанныхСуммаСкидки = Новый Структура("СуммаСкидки", ?(ЗаголовокСкидки.ТолькоНаценка,- ВыборкаПоТоварам.СуммаСкидки,ВыборкаПоТоварам.СуммаСкидки)); ОбластьДанныхСтроки.Параметры.Заполнить(СтруктураДанныхСуммаСкидки); КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда ОбластьДанныхСтроки.Параметры.Заполнить(ПустыеДанные); Иначе ОбластьДанныхСтроки.Параметры.Заполнить(ВыборкаПоТоварам); КонецЕсли;
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда Сумма = Сумма + ВыборкаПоТоварам.Сумма; СуммаНДС = СуммаНДС + ВыборкаПоТоварам.СуммаНДС;
Если ЕстьСкидки Тогда ВсегоСкидок = ВсегоСкидок + ВыборкаПоТоварам.СуммаСкидки; ВсегоБезСкидок = ВсегоБезСкидок + ВыборкаПоТоварам.СуммаБезСкидки; КонецЕсли; КонецЕсли;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!