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