Недостаточно фактических параметров печать
Обработка ТОРГ-12 со штрихкодами для реализации УТ 11.4 позволяет сформировать печатную форму Товарная накладная (ТОРГ-12) в которой колонка Код будет содержать штрихкоды товаров. Печатная форма ТОРГ-12 со штрихкодами для реализации УТ 11.4 формируется из документа Реализизация товаров и услуг в программе 1С:Управление торговлей 11.4.
В колонке Код проставляются все штрихкоды товара через запятую в виде строк (без картинок, без возможности считывания сканером штрихкодов).
Данная печатная форма содержит открытый код.
Обработку можно запустить как через Главное меню → Файл → Открыть (такой способ запуска удобен для отладки разработки), так и через меню печать документа Реализизация товаров и услуг (для этого необходимо зарегистрировать обработку в дополнительных отчетах и обработках)
Для того, чтобы данная печатная форма появилась в списке форм документа, вам необходимо зарегистрировать ее в дополнительных отчетах и обработках:
См. также инструкцию по подключению внешней печатной формы.
Подобных тем на форуме достаточно, понимаю, что неверное количество параметров,
но как их подогнать не понимаю, уже сутки бъюсь и не получается исправить ошибку, я новичок.
Написала внешнюю печатную форму счета:
,,,
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, «СчетНаОплатуВнешний») Тогда
ТаблицаСведенийСчетНаОплату = ПолучитьТаблицуСведенийСчетаНаОплату(МассивОбъектов);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «СчетНаОплатуВнешний», «Счет на оплату»,
ПечатьСчетаНаОплату(ПараметрыПечати.Организация, ОбъектыПечати, «ПФ_MXL_СчетЗаказ1»)); //удалено ПечатьТорговыхДокументов.
ЗаполнитьПараметрыЭлектроннойПочты = Ложь;
КонецЕсли;
ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
,,,
Ошибка такая:
{ОбщийМодуль.УправлениеПечатью.Модуль(1510)}: Недостаточно фактических параметров
ВнешняяОбработкаОбъект.Печать(
В общем модуле УправлениеПечатью выглядит так:
,,,,
ВнешняяОбработкаОбъект.Печать(
ПараметрыИсточника.ОбъектыНазначения,
КоллекцияПечатныхФорм,
ОбъектыПечати,
ПараметрыВывода);
,,,,
Как ее исправить? Что ещё добавить, что бы заработало?
ниже полный код внеш. печатной формы:
Функция СведенияОВнешнейОбработке () экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить(«Вид», «ПечатнаяФорма»);
ПараметрыРегистрации.Вставить(«Назначение»,ПолучитьНазначениеОбработки());
ПараметрыРегистрации.Вставить(«Наименование», «Счет на оплату ВНЕШНИЙ»);
ПараметрыРегистрации.Вставить(«Версия», «1.0»);
ПараметрыРегистрации.Вставить(«Информация», «Счет на оплату (внешняя печатная форма)»);
ПараметрыРегистрации.Вставить(«БезопасныйРежим»,Истина);
Команды = ПолучитьТаблицуКоманд();
ДобавитьКоманду(Команды,»Счет на оплату (внешняя печатная форма)»,
«СчетНаОплатуВнешний»,
«ВызовСерверногоМетода»,
Ложь,
«ПечатьMXL»);
ПараметрыРегистрации.Вставить(«Команды»,Команды);
Возврат ПараметрыРегистрации;
КонецФункции
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, «СчетНаОплатуВнешний») Тогда
ТаблицаСведенийСчетНаОплату = ПолучитьТаблицуСведенийСчетаНаОплату(МассивОбъектов);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «СчетНаОплатуВнешний», «Счет на оплату»,
ПечатьСчетаНаОплату(ПараметрыПечати.Организация, ОбъектыПечати, «ПФ_MXL_СчетЗаказ1»)); //удалено ПечатьТорговыхДокументов.
ЗаполнитьПараметрыЭлектроннойПочты = Ложь;
КонецЕсли;
ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
Функция ПолучитьТаблицуСведенийСчетаНаОплату(Знач МассивДокументов) //ЭкспортДокументыБезСчетовНаОплату = Неопределено
УстановитьПривилегированныйРежим(Истина);
ТаблицаСведений = ПечатьТорговыхДокументов.ПолучитьОписаниеСчетаНаОплату();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«МассивДокументов», МассивДокументов);
Запрос.УстановитьПараметр(«ДополнительнаяКолонкаПечатныхФормДокументов», Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить());
Запрос.Текст = ПолучитьТекстЗапросаДляФормированияТаблицыСведенийСчетаНаОплату();
РезультатЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатЗапроса.Выбрать();
СтрокиДокументов = РезультатЗапроса.Выгрузить();
СтрокиДокументов.Индексы.Добавить(«Документ»);
Пока Выборка.Следующий() Цикл
СведенияОДокументе = ТаблицаСведений.Добавить();
ЗаполнитьЗначенияСвойств(СведенияОДокументе, Выборка);
ТаблицаДокумента = ПечатьТорговыхДокументов.ПолучитьОписаниеТаблицыСчетаНаОплату();
Отбор = Новый Структура(«Документ», Выборка.Документ);
СтрокиДокумента = СтрокиДокументов.НайтиСтроки(Отбор);
Для Каждого Строка Из СтрокиДокумента Цикл
СтрокаТаблицыДокумента = ТаблицаДокумента.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицыДокумента, Строка);
КонецЦикла;
СведенияОДокументе.ТаблицаДокумента = ТаблицаДокумента;
ПорядокЗаполнения = Новый Структура(«ЗаполнятьРуководителя, ЗаполнятьГлавногоБухгалтера»);
ПечатьТорговыхДокументов.ЗаполнитьДанныеОтветственныхЛиц(СведенияОДокументе, ПорядокЗаполнения);
Если НЕ ЗначениеЗаполнено(СведенияОДокументе.РуководительДолжностьНаименование) Тогда
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СведенияОДокументе.Получатель, «ЮридическоеФизическоеЛицо»)
= Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
СведенияОДокументе.РуководительДолжностьНаименование = «Индивидуальный предприниматель»;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ТаблицаСведений;
КонецФункции
Функция ПолучитьТекстЗапросаДляФормированияТаблицыСведенийСчетаНаОплату()
ЧастьЗапросаДляВыбораСодержанияУслуг = ОбщегоНазначенияБПВызовСервера.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг(«СчетНаОплату»);
ТекстЗапроса =
«ВЫБРАТЬ
| СчетНаОплату.Ссылка КАК Ссылка,
| СчетНаОплату.Дата КАК ДатаДокумента,
| СчетНаОплату.СуммаВключаетНДС КАК СуммаВключаетНДС
|ПОМЕСТИТЬ ДокументыДляПечати
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаОплату
|ГДЕ
| СчетНаОплату.Ссылка В(&МассивДокументов)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СчетНаОплату.Ссылка КАК Документ,
| СчетНаОплату.Дата КАК ДатаДляПолученияСведений,
| ДанныеПервичныхДокументов.Номер КАК НомерДокумента,
| ДанныеПервичныхДокументов.Дата КАК ДатаДокумента,
| СчетНаОплату.ВалютаДокумента КАК Валюта,
| СчетНаОплату.ВалютаДокумента.Код КАК ВалютаКод,
| СчетНаОплату.ВалютаДокумента.Наименование КАК ВалютаНаименование,
| СчетНаОплату.СуммаДокумента КАК СуммаДокумента,
| СчетНаОплату.КратностьВзаиморасчетов КАК КратностьВзаиморасчетов,
| СчетНаОплату.КурсВзаиморасчетов КАК КурсВзаиморасчетов,
| СчетНаОплату.СуммаВключаетНДС КАК СуммаВключаетНДС,
| СчетНаОплату.Организация КАК Организация,
| СчетНаОплату.ПодразделениеОрганизации КАК Подразделение,
| СчетНаОплату.Организация КАК Поставщик,
| СчетНаОплату.Организация КАК Руководители,
| СчетНаОплату.ОрганизацияПолучатель КАК Получатель,
| СчетНаОплату.Контрагент КАК Покупатель,
| СчетНаОплату.ДоговорКонтрагента КАК ДоговорКонтрагента,
| СчетНаОплату.ДоговорКонтрагента.Номер КАК НомерДоговора,
| СчетНаОплату.ДоговорКонтрагента.ГосударственныйКонтракт.Код КАК ГосударственныйКонтракт,
| СчетНаОплату.ДоговорКонтрагента.Дата КАК ДатаДоговора,
| СчетНаОплату.ДоговорКонтрагента.Руководитель КАК ФИОИсполнителя,
| СчетНаОплату.ДоговорКонтрагента.ДолжностьРуководителя КАК ДолжностьИсполнителя,
| СчетНаОплату.ДоговорКонтрагента.РуководительКонтрагента КАК ФИОЗаказчика,
| СчетНаОплату.ДоговорКонтрагента.ДолжностьРуководителяКонтрагента КАК ДолжностьЗаказчика,
| СчетНаОплату.ДоговорКонтрагента.УчетАгентскогоНДСПокупателем КАК НДСИсчисляетсяНалоговымАгентом,
| СчетНаОплату.СтруктурнаяЕдиница КАК БанковскийСчетПродавца,
| СчетНаОплату.СтруктурнаяЕдиница.ТекстКорреспондента КАК ТекстКорреспондента,
| СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов КАК БанкДляРасчетов,
| СчетНаОплату.Руководитель КАК Руководитель,
| СчетНаОплату.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
| СчетНаОплату.ЗаРуководителяНаОсновании КАК ЗаРуководителяНаОсновании,
| СчетНаОплату.ЗаГлавногоБухгалтераНаОсновании КАК ЗаГлавногоБухгалтераНаОсновании,
| ВЫБОР
| КОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов.Наименование + «» «» + СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов.Город
| ИНАЧЕ СчетНаОплату.СтруктурнаяЕдиница.Банк.Наименование + «» «» + СчетНаОплату.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК НаименованиеБанкаПолучателя,
| ВЫБОР
| КОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов
| ИНАЧЕ СчетНаОплату.СтруктурнаяЕдиница.Банк
| КОНЕЦ КАК БанкПолучателя,
| ВЫБОР
| КОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов.Код
| ИНАЧЕ СчетНаОплату.СтруктурнаяЕдиница.Банк.Код
| КОНЕЦ КАК БикБанкаПолучателя,
| ВЫБОР
| КОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов.КоррСчет
| ИНАЧЕ СчетНаОплату.СтруктурнаяЕдиница.Банк.КоррСчет
| КОНЕЦ КАК СчетБанкаПолучателя,
| ВЫБОР
| КОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов.Город
| ИНАЧЕ СчетНаОплату.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК ГородБанкаПолучателя,
| ВЫБОР
| КОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА СчетНаОплату.СтруктурнаяЕдиница.Банк.КоррСчет
| ИНАЧЕ СчетНаОплату.СтруктурнаяЕдиница.НомерСчета
| КОНЕЦ КАК НомерСчетаПолучателя,
| ВЫБОР
| КОГДА СчетНаОплату.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА «» р/с «» + СчетНаОплату.СтруктурнаяЕдиница.НомерСчета + «» в «» + СчетНаОплату.СтруктурнаяЕдиница.Банк.Наименование + «» «» + СчетНаОплату.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК БанкТекстКорресподента,
| СчетНаОплату.СуммаСкидки КАК СуммаСкидки,
| СчетНаОплату.СтруктурнаяЕдиница.НомерСчета КАК НомерСчета,
| СчетНаОплату.СтруктурнаяЕдиница.Банк.Наименование КАК БанкНаименование,
| СчетНаОплату.СтруктурнаяЕдиница.Банк.Код КАК БИК,
| СчетНаОплату.СтруктурнаяЕдиница.Банк.КоррСчет КАК КоррСчет,
| ЕСТЬNULL(СчетНаОплату.ДополнительныеУсловия.ТекстУсловий, «»»») КАК ТекстДополнительныхУсловий,
| ЕСТЬNULL(СрокиОплатыДокументов.СрокОплаты, ДАТАВРЕМЯ(1, 1, 1)) КАК СрокОплаты
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаОплату
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
| ПО СчетНаОплату.Ссылка = ДанныеПервичныхДокументов.Документ
| И СчетНаОплату.Организация = ДанныеПервичныхДокументов.Организация
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СрокиОплатыДокументов КАК СрокиОплатыДокументов
| ПО СчетНаОплату.Ссылка = СрокиОплатыДокументов.Документ
| И СчетНаОплату.Организация = СрокиОплатыДокументов.Организация
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДополнительныеУсловия КАК СправочникДополнительныеУсловия
| ПО СчетНаОплату.ДополнительныеУсловия = СправочникДополнительныеУсловия.Ссылка
|ГДЕ
| СчетНаОплату.Ссылка В
| (ВЫБРАТЬ
| ДокументыДляПечати.Ссылка
| ИЗ
| ДокументыДляПечати КАК ДокументыДляПечати)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СчетНаОплату.Ссылка КАК Документ,
| ДокументыДляПечати.ДатаДокумента КАК ДатаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ТабличныеЧастиДокументов.Товары) КАК ТабличнаяЧасть,
| 1 КАК ПорядокТабличнойЧасти,
| СчетНаОплату.НомерСтроки КАК НомерСтроки,
| СчетНаОплату.Номенклатура КАК Номенклатура,
| СчетНаОплату.Номенклатура.Услуга КАК ЭтоУслуга,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА СчетНаОплату.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА СчетНаОплату.Номенклатура.Артикул
| ИНАЧЕ «»»»
| КОНЕЦ КАК НоменклатураАртикул,
| &ЧастьЗапросаДляВыбораСодержанияУслуг КАК НоменклатураНаименование,
| &ЧастьЗапросаДляВыбораСодержанияУслуг КАК Содержание,
| ЕСТЬNULL(СчетНаОплату.Номенклатура.ЕдиницаИзмерения, ЗНАЧЕНИЕ(Справочник.КлассификаторЕдиницИзмерения.ПустаяСсылка)) КАК ЕдиницаИзмерения,
| ЕСТЬNULL(СчетНаОплату.Номенклатура.ЕдиницаИзмерения.Код, «»»») КАК ЕдиницаИзмеренияКод,
| ЕСТЬNULL(СчетНаОплату.Номенклатура.ЕдиницаИзмерения.Наименование, «»»») КАК ЕдиницаИзмеренияНаименование,
| ЕСТЬNULL(СчетНаОплату.Номенклатура.ЕдиницаИзмерения.НаименованиеПолное, «»»») КАК ЕдиницаИзмеренияНаименованиеПолное,
| СчетНаОплату.Количество КАК Количество,
| СчетНаОплату.Цена КАК Цена,
| СчетНаОплату.Сумма КАК Сумма,
| СчетНаОплату.СуммаСкидки КАК СуммаСкидки,
| СчетНаОплату.СтавкаНДС КАК СтавкаНДС,
| СчетНаОплату.СуммаНДС КАК СуммаНДС
|ИЗ
| Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплату
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыДляПечати КАК ДокументыДляПечати
| ПО СчетНаОплату.Ссылка = ДокументыДляПечати.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| ДатаДокумента,
| Документ,
| ПорядокТабличнойЧасти,
| НомерСтроки»;
Возврат СтрЗаменить(ТекстЗапроса, «&ЧастьЗапросаДляВыбораСодержанияУслуг», ЧастьЗапросаДляВыбораСодержанияУслуг);
КонецФункции
Процедура ВывестиЗаголовокПредупреждение(Организация, ТабличныйДокумент, Макет)
Если Не ЗначениеЗаполнено(Макет.Области.Найти(«ЗаголовокПредупреждениеСЛоготипом»))
И Не ЗначениеЗаполнено(Макет.Области.Найти(«ЗаголовокПредупреждение»)) Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Организация) <> Тип(«СправочникСсылка.Организации») Тогда
Возврат;
КонецЕсли;
ДвоичныеДанныеКартинки = Справочники.Организации.ДвоичныеДанныеКартинкиОрганизации(Организация, «ФайлЛоготип»);
Если ЗначениеЗаполнено(ДвоичныеДанныеКартинки) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«ЗаголовокПредупреждениеСЛоготипом»);
Попытка
ОбластьМакета.Рисунки.Логотип.Картинка = Новый Картинка(ДвоичныеДанныеКартинки);
Исключение
КонецПопытки;
ТабличныйДокумент.Вывести(ОбластьМакета);
Иначе
ОбластьМакета = Макет.ПолучитьОбласть(«ЗаголовокПредупреждение»);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецПроцедуры
Функция ПечатьСчетаНаОплату(СведенияСчетаНаОплату, ОбъектыПечати, ПараметрыПечати) Экспорт
Перем ПодразделениеОтветственныхЛиц;
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.КлючПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ»;
ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
КонецЕсли;
ВыводитьКоды = ДополнительнаяКолонкаПечатныхФормДокументов <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
ПервыйДокумент = Истина;
Для Каждого СведенияОДокументе Из СведенияСчетаНаОплату Цикл
Макет = ПолучитьМакет(«ПФ_MXL_СчетЗаказ1»);
Если НЕ ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
ЕстьСкидка = (СведенияОДокументе.ТаблицаДокумента.Итог(«СуммаСкидки») <> 0) И ЗначениеЗаполнено(Макет.Области.Найти(«Скидка»));
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
// Выводим шапку счета
ВывестиЗаголовокПредупреждение(СведенияОДокументе.Получатель, ТабличныйДокумент, Макет);
СведенияОПолучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Получатель, СведенияОДокументе.ДатаДляПолученияСведений);
// Получим логотип организации
ДвоичныеДанныеКартинки = Неопределено;
Если ТипЗнч(СведенияОДокументе.Получатель) = Тип(«СправочникСсылка.Организации») Тогда
ДвоичныеДанныеКартинки = Справочники.Организации.ДвоичныеДанныеКартинкиОрганизации(СведенияОДокументе.Получатель, «ФайлЛоготип»);
КонецЕсли;
Если ЗначениеЗаполнено(ДвоичныеДанныеКартинки)
И ЗначениеЗаполнено(Макет.Области.Найти(«ЗаголовокСчетаСЛоготипом»)) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«ЗаголовокСчетаСЛоготипом»);
Попытка
ОбластьМакета.Рисунки.ЛоготипСчета.Картинка = Новый Картинка(ДвоичныеДанныеКартинки);
Исключение
КонецПопытки;
Иначе
ОбластьМакета = Макет.ПолучитьОбласть(«ЗаголовокСчета»);
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(СведенияОДокументе);
ДанныеПечатиЗаголовокСчета = Новый Структура;
ДанныеПечатиЗаголовокСчета.Вставить(«ИННПолучателя», СведенияОПолучателе.ИНН);
ДанныеПечатиЗаголовокСчета.Вставить(«КПППолучателя», СведенияОПолучателе.КПП);
Если ТипЗнч(СведенияОДокументе.БанковскийСчетПродавца) = Тип(«СправочникСсылка.БанковскиеСчета») Тогда
ДанныеПечатиЗаголовокСчета.Вставить(«БИКБанкаПолучателя»,СведенияОДокументе.БикБанкаПолучателя);
ДанныеПечатиЗаголовокСчета.Вставить(«БанкПолучателя»,СведенияОДокументе.БанкПолучателя);
ДанныеПечатиЗаголовокСчета.Вставить(«БанкПолучателяПредставление»,СокрЛП(СведенияОДокументе.НаименованиеБанкаПолучателя));
ДанныеПечатиЗаголовокСчета.Вставить(«СчетБанкаПолучателя»,СведенияОДокументе.СчетБанкаПолучателя);
ДанныеПечатиЗаголовокСчета.Вставить(«СчетБанкаПолучателяПредставление»,СведенияОДокументе.СчетБанкаПолучателя);
ДанныеПечатиЗаголовокСчета.Вставить(«СчетПолучателяПредставление», СведенияОДокументе.НомерСчетаПолучателя);
ДанныеПечатиЗаголовокСчета.Вставить(«СчетПолучателя», СведенияОДокументе.НомерСчетаПолучателя);
КонецЕсли;
ПредставлениеПолучателя = УчетДенежныхСредствБП.СформироватьТекстНаименованияПлательщикаПолучателя(, СведенияОДокументе.Получатель, СведенияОДокументе.БанковскийСчетПродавца, , СведенияОДокументе.ДатаДляПолученияСведений);
ДанныеПечатиЗаголовокСчета.Вставить(«ПредставлениеПолучателя», ПредставлениеПолучателя);
ОбластьМакета.Параметры.Заполнить(ДанныеПечатиЗаголовокСчета);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Заголовок»);
НомерДокумента = НомерСчетаНаОплату(СведенияОДокументе.ГосударственныйКонтракт, СведенияОДокументе.НомерДокумента);
ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(«ru=’Счет на оплату № %1 от %2 г.'»),
НомерДокумента, Формат(СведенияОДокументе.ДатаДокумента, «ДФ=’дд ММММ гггг'»));
ОбластьМакета.Параметры.Заполнить(Новый Структура(«ТекстЗаголовка», ТекстЗаголовка));
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Поставщик»);
ОбластьМакета.Параметры.Заполнить(СведенияОДокументе);
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Поставщик, СведенияОДокументе.ДатаДляПолученияСведений);
ПредставлениеПоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
СведенияОбОрганизации, «НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,»);
ОбластьМакета.Параметры.Заполнить(Новый Структура(«ПредставлениеПоставщика», ПредставлениеПоставщика));
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Покупатель»);
ОбластьМакета.Параметры.Заполнить(СведенияОДокументе);
СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Покупатель, СведенияОДокументе.ДатаДляПолученияСведений);
ПредставлениеПокупателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
СведенияОПокупателе, «НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,»);
Основание = СокрЛП(Строка(СведенияОДокументе.ДоговорКонтрагента));
ДанныеПечатиПокупатель = Новый Структура;
ДанныеПечатиПокупатель.Вставить(«ПредставлениеПокупателя», ПредставлениеПокупателя);
ДанныеПечатиПокупатель.Вставить(«Основание», Основание);
ОбластьМакета.Параметры.Заполнить(ДанныеПечатиПокупатель);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьНомера = Макет.ПолучитьОбласть(«ШапкаТаблицы|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ШапкаТаблицы|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«ШапкаТаблицы|Данные»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ШапкаТаблицы|Сумма»);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ДанныеПечатиКолонкиКодов = Новый Структура;
Если ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ДанныеПечатиКолонкиКодов.Вставить(«ИмяКолонкиКодов», «Артикул»);
ИначеЕсли ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ДанныеПечатиКолонкиКодов.Вставить(«ИмяКолонкиКодов», «Код»);
КонецЕсли;
ОбластьКодов.Параметры.Заполнить(ДанныеПечатиКолонкиКодов);
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидка Тогда
ОбластьСкидки = Макет.ПолучитьОбласть(«ШапкаТаблицы|Скидка»);
ТабличныйДокумент.Присоединить(ОбластьСкидки);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьСуммы);
ОбластьКолонкаТовар = Макет.Область(«Товар»);
Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки + Макет.Область(«КолонкаКодов»).ШиринаКолонки;
КонецЕсли;
Если Не ЕстьСкидка И ЗначениеЗаполнено(Макет.Области.Найти(«Скидка»)) Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки + Макет.Область(«Скидка»).ШиринаКолонки;
КонецЕсли;
ОбластьНомера = Макет.ПолучитьОбласть(«Строка|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«Строка|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«Строка|Данные»);
ОбластьСуммы = Макет.ПолучитьОбласть(«Строка|Сумма»);
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
НомерСтроки = 0;
НДСИсчисляетсяНалоговымАгентом = СведенияОДокументе.НДСИсчисляетсяНалоговымАгентом = Истина
И УчетНДС.ВедетсяУчетНДСПоФЗ335(СведенияОДокументе.ДатаДляПолученияСведений);
Для Каждого Строка Из СведенияОДокументе.ТаблицаДокумента Цикл
НомерСтроки = НомерСтроки + 1;
ОбластьНомера.Параметры.Заполнить(Новый Структура(«НомерСтроки», НомерСтроки));
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.Заполнить(Новый Структура(«Артикул», Строка.НоменклатураАртикул));
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ДанныеПечатиСтрокаОбластьДанных = Новый Структура;
ДанныеПечатиСтрокаОбластьДанных.Вставить(«Товар», СокрЛП(Строка.НоменклатураНаименование));
ДанныеПечатиСтрокаОбластьДанных.Вставить(«Количество», Строка.Количество);
ДанныеПечатиСтрокаОбластьДанных.Вставить(«ЕдиницаИзмерения», Строка.ЕдиницаИзмеренияНаименование);
ДанныеПечатиСтрокаОбластьДанных.Вставить(«Цена», ОбщегоНазначенияБПВызовСервера.ФорматСумм(Строка.Цена));
ОбластьДанных.Параметры.Заполнить(ДанныеПечатиСтрокаОбластьДанных);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидка Тогда
ОбластьСкидки = Макет.ПолучитьОбласть(«Строка|Скидка»);
ОбластьСкидки.Параметры.Заполнить(Новый Структура(«СуммаСкидки», ОбщегоНазначенияБПВызовСервера.ФорматСумм(Строка.СуммаСкидки)));
ТабличныйДокумент.Присоединить(ОбластьСкидки);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(Новый Структура(«Сумма», ОбщегоНазначенияБПВызовСервера.ФорматСумм(Строка.Сумма — Строка.СуммаСкидки)));
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Сумма = Сумма + Строка.Сумма;
СуммаНДС = СуммаНДС + Строка.СуммаНДС;
ВсегоСкидок = ВсегоСкидок + Строка.СуммаСкидки;
КонецЦикла;
Если ЗначениеЗаполнено(Макет.Области.Найти(«Подвал»)) Тогда
ОбластьПодвал = Макет.ПолучитьОбласть(«Подвал»);
ТабличныйДокумент.Вывести(ОбластьПодвал);
КонецЕсли;
Если СведенияОДокументе.СуммаСкидки <> 0 Тогда
ДанныеОбъекта = Новый Структура(«СуммаСкидки, СуммаВключаетНДС»);
ЗаполнитьЗначенияСвойств(ДанныеОбъекта, СведенияОДокументе);
ТаблицаТовары = СведенияОДокументе.ТаблицаДокумента.Скопировать();
ОбработкаТабличныхЧастей.РаспределитьСкидкуПоСтрокамТабЧасти(ТаблицаТовары, ДанныеОбъекта);
Всего = Сумма + ?(СведенияОДокументе.СуммаВключаетНДС, 0, СуммаНДС);
СуммаНДС = ТаблицаТовары.Итог(«СуммаНДС»);
Сумма = Всего — СведенияОДокументе.СуммаСкидки — ?(СведенияОДокументе.СуммаВключаетНДС, 0, СуммаНДС);
Если ЗначениеЗаполнено(Макет.Области.Найти(«СкидкаПоДокументу»)) Тогда
ОбластьСуммы = Макет.ПолучитьОбласть(«СкидкаПоДокументу»);
ОбластьСуммы.Параметры.Заполнить(Новый Структура(«СуммаСкидки», ОбщегоНазначенияБПВызовСервера.ФорматСумм(СведенияОДокументе.СуммаСкидки)));
ТабличныйДокумент.Вывести(ОбластьСуммы);
КонецЕсли;
ИначеЕсли ВсегоСкидок <> 0 Тогда
Сумма = Сумма — ВсегоСкидок;
КонецЕсли;
ДанныеЗаполненияИтого = Новый Структура(«Всего», ОбщегоНазначенияБПВызовСервера.ФорматСумм(Сумма));
Если НДСИсчисляетсяНалоговымАгентом Тогда
НДС = УчетНДС.НадписьСтавкаНДСИсчисляетсяНалоговымАгентом();
ВсегоНДС = НСтр(«ru=’-‘»);
ИначеЕсли СуммаНДС <> 0 Тогда
НДС = ?(СведенияОДокументе.СуммаВключаетНДС, НСтр(«ru=’В том числе НДС:'»), НСтр(«ru=’Сумма НДС:'»));
ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
Иначе
НДС = НСтр(«ru=’Без налога (НДС)'»);
ВсегоНДС = НСтр(«ru=’-‘»);
КонецЕсли;
ДанныеЗаполненияНДС = Новый Структура(«НДС, ВсегоНДС», НДС, ВсегоНДС);
СуммаКОплате = Сумма + ?(СведенияОДокументе.СуммаВключаетНДС, 0, СуммаНДС);
ИтогоКОплате = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКОплате);
ДанныеЗаполненияИтогоКОплате = Новый Структура(«ИтогоКОплате», ИтогоКОплате);
Если ЗначениеЗаполнено(Макет.Области.Найти(«Скидка»)) Тогда
ОбластьИтого = Макет.ПолучитьОбласть(«Итого»);
ОбластьИтого.Параметры.Заполнить(ДанныеЗаполненияИтого);
ТабличныйДокумент.Вывести(ОбластьИтого);
// Вывести ИтогоНДС
ОбластьИтогоНДС = Макет.ПолучитьОбласть(«ИтогоНДС»);
ОбластьИтогоНДС.Параметры.Заполнить(ДанныеЗаполненияНДС);
ТабличныйДокумент.Вывести(ОбластьИтогоНДС);
// Вывести ИтогоКОплате
ОбластьИтогоКОплате = Макет.ПолучитьОбласть(«ИтогоКОплате»);
ОбластьИтогоКОплате.Параметры.Заполнить(ДанныеЗаполненияИтогоКОплате);
ТабличныйДокумент.Вывести(ОбластьИтогоКОплате);
Иначе
// В случае если используется пользовательский макет — используем вертикальные названия областей.
ОбластьНомера = Макет.ПолучитьОбласть(«Итого|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«Итого|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«Итого|Данные»);
ОбластьСумма = Макет.ПолучитьОбласть(«Итого|Сумма»);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьСумма.Параметры.Заполнить(ДанныеЗаполненияИтого);
ТабличныйДокумент.Присоединить(ОбластьСумма);
// Вывести ИтогоНДС
ОбластьНомера = Макет.ПолучитьОбласть(«ИтогоНДС|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ИтогоНДС|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«ИтогоНДС|Данные»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ИтогоНДС|Сумма»);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьДанных.Параметры.Заполнить(ДанныеЗаполненияНДС);
ОбластьСуммы.Параметры.Заполнить(ДанныеЗаполненияНДС);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
// Вывести ИтогоКОплате
ОбластьНомера = Макет.ПолучитьОбласть(«ИтогоКОплате|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ИтогоКОплате|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«ИтогоКОплате|Данные»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ИтогоКОплате|Сумма»);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьСуммы.Параметры.Заполнить(ДанныеЗаполненияИтогоКОплате);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
КонецЕсли;
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть(«СуммаПрописью»);
ДанныеПечатиСуммаПрописью = Новый Структура(«ИтоговаяСтрока, СуммаПрописью»);
СуммаКПрописи = Сумма + ?(СведенияОДокументе.СуммаВключаетНДС, 0, СуммаНДС);
ДанныеПечатиСуммаПрописью.ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(«ru=’Всего наименований %1, на сумму %2′»),
НомерСтроки, ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКПрописи, СведенияОДокументе.Валюта));
ДанныеПечатиСуммаПрописью.СуммаПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаКПрописи, СведенияОДокументе.Валюта);
ОбластьМакета.Параметры.Заполнить(ДанныеПечатиСуммаПрописью);
ТабличныйДокумент.Вывести(ОбластьМакета);
ДвоичныеДанныеКартинки = Неопределено;
ДобавленОтступПередДопУсловиями = Ложь;
// Срок оплаты
Если СведенияОДокументе.СрокОплаты <> Дата(1,1,1) И
ЗначениеЗаполнено(Макет.Области