Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Июн 2021, 01:13
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
МультиВход
 
collapse

Автор Тема: Корректировка печатной формы  (Прочитано 2816 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Валерий Жур

  • *
  • Регистрация: 2016-07-01
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
Всем привет.

Суть проблемы

При формировании счета в модуле менеджера происходит округление значений (сумма НДС, цена, цена без НДС и пр.) до целого числа.
С 1 июля в Беларуси деноминация, и появляются копейки.
Соответственно все значения в печатных формах надо округлять, до двух знаков после запятой.

Собственно мы внесли изменения в правила округления, и все значения отображаются корректно кроме одного СуммаНДС

Пример документа -
http://joxi.ru/Vm66kvOSxJyaBm
http://joxi.ru/zANdQynflGE35m
Код

ОбластьМакета.Параметры.Номер = Ном;
               
                //ОбластьМакета.Параметры.СтранаПроисхождения = СокрЛП(ВыборкаСтрокТовары.Страна);
               
                СуммаСНДС  = Окр((ВыборкаСтрокТовары.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрокТовары.СуммаНДС)),Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
                Количество = ВыборкаСтрокТовары.Количество;
                СуммаНДС   = Окр(ВыборкаСтрокТовары.СуммаНДС,Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
                Сумма      = Окр(ВыборкаСтрокТовары.Сумма,Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
                Цена       = Окр(ВыборкаСтрокТовары.Цена, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
               
               
                СтруктураДанных = Новый Структура;
                СтруктураДанных.Вставить("ВидЦен", Шапка.ВидЦен);
                СтруктураДанных.Вставить("ДатаОбработки", Шапка.ДатаДокумента);
                СтруктураДанных.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);
                СтруктураДанных.Вставить("Характеристика", ВыборкаСтрокТовары.Характеристика);
                СтруктураДанных.Вставить("Коэффициент", 1);
                СтруктураДанных.Вставить("ВалютаДокумента", Шапка.ВалютаДокумента);
                СтруктураДанных.Вставить("СуммаВключаетНДС", Шапка.СуммаВключаетНДС);
               
                ОбластьМакета.Параметры.Скидка = Окр(ВыборкаСтрокТовары.Цена * ВыборкаСтрокТовары.Количество - ВыборкаСтрокТовары.Сумма, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ, 2);
                ОбластьМакета.Параметры.ЦенаСоСкидкой = Окр(Цена - Цена * ВыборкаСтрокТовары.ПроцентСкидкиНаценки / 100, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ, 2);
                ОбластьМакета.Параметры.Цена = УправлениеФормамиУНФРБСервер.ФорматСумм(Цена, Шапка.ВалютаДокумента);
                ОбластьМакета.Параметры.Скидка = УправлениеФормамиУНФРБСервер.ФорматСумм(ОбластьМакета.Параметры.Скидка, Шапка.ВалютаДокумента);
                ОбластьМакета.Параметры.ЦенаСоСкидкой = УправлениеФормамиУНФРБСервер.ФорматСумм(ОбластьМакета.Параметры.ЦенаСоСкидкой, Шапка.ВалютаДокумента);
                ТабДокумент.Вывести(ОбластьМакета);
               
            КонецЦикла;
...Показать
Подскажите пожалуйста в чем может быть проблема?

Свойства переменной уже проверил.
Свойство ячейки проверил.
Спасибо.


Оффлайн mixqn

  • *****
  • Регистрация: 2012-08-15
  • Сообщений: 1348
  • РЕПУТАЦИЯ: 167
  • КПД: 12%
  • Who is John Galt?
  • Профессия: Программист 1С
Если отладчиком посмотреть, значение верное подставляется в макет? В макете точно проверили формат?

Оффлайн LexaK

  • *****
  • Регистрация: 2012-05-16
  • Сообщений: 2564
  • РЕПУТАЦИЯ: 820
  • КПД: 32%
  • Профессия: Программист 1С
как вариант, посмотрите в конфигураторе, в макете, в самой ячейке, формат ячейки!
там тоже может быть округление
Помогло? - Нажми СПАСИБО (под аватаром) !!!
                       :)

Оффлайн Валерий Жур

  • *
  • Регистрация: 2016-07-01
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
спасибо, уже смотрел
http://joxi.ru/ZrJQENaS1P9LQA
В макете формат проверил
Формат реквизита проверил

Как с помощью отладчика сделать проверку в данном случае не понимаю((( (я еще неопытный )

Оффлайн LexaK

  • *****
  • Регистрация: 2012-05-16
  • Сообщений: 2564
  • РЕПУТАЦИЯ: 820
  • КПД: 32%
  • Профессия: Программист 1С
выложите весь текст процедуры печати, по тем кускам что выше выложили не все видно
Добавлено: 01 Июл 2016, 13:01

УПС!!! а вы шутник!!! однако!
сначала показываете картинку с ошибкой от одного отчета!
а макет и настройки формата ячейки, показываете от ДРУГОГО отчета!

ну так же нельзя! мы искренне хотели вам помочь! 
Помогло? - Нажми СПАСИБО (под аватаром) !!!
                       :)

Последний раз редактировалось: LexaK; 01 Июл 2016, 13:01. Причина: Объединение сообщений

Оффлайн Валерий Жур

  • *
  • Регистрация: 2016-07-01
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
Да нет отчет один и тот же.

Весь код
// Процедура формирования таблицы платежного календаря.
//
// Параметры:
//   ДокументСсылка - ДокументСсылка.ПриходДенежныхСредствПлан - Текущий документ
//   ДополнительныеСвойства - ДополнительныеСвойства - Дополнительные свойства документа
//
Процедура СформироватьТаблицаПлатежныйКалендарь(ДокументСсылка, СтруктураДополнительныеСвойства)
   
   Запрос = Новый Запрос;
   
   Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
   Запрос.УстановитьПараметр("МоментВремени", Новый Граница(СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени, ВидГраницы.Включая));
   Запрос.УстановитьПараметр("Организация", СтруктураДополнительныеСвойства.ДляПроведения.Организация);
   
   Запрос.Текст =
   "ВЫБРАТЬ
   |   ТаблицаДокумента.ДатаОплаты КАК Период,
   |   &Организация КАК Организация,
   |   ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
   |   ТаблицаДокумента.Ссылка.ТипДенежныхСредств,
   |   ЗНАЧЕНИЕ(Перечисление.СтатусыУтвержденияПлатежей.Утвержден) КАК СтатусУтвержденияПлатежа,
   |   ТаблицаДокумента.Ссылка КАК СчетНаОплату,
   |   ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ОплатаОтПокупателей) КАК Статья,
   |   ВЫБОР
   |      КОГДА ТаблицаДокумента.Ссылка.ТипДенежныхСредств = ЗНАЧЕНИЕ(Перечисление.ТипыДенежныхСредств.Наличные)
   |         ТОГДА ТаблицаДокумента.Ссылка.Касса
   |      КОГДА ТаблицаДокумента.Ссылка.ТипДенежныхСредств = ЗНАЧЕНИЕ(Перечисление.ТипыДенежныхСредств.Безналичные)
   |         ТОГДА ТаблицаДокумента.Ссылка.БанковскийСчет
   |      ИНАЧЕ НЕОПРЕДЕЛЕНО
   |   КОНЕЦ КАК БанковскийСчетКасса,
   |   ВЫБОР
   |      КОГДА ТаблицаДокумента.Ссылка.Договор.РасчетыВУсловныхЕдиницах
   |         ТОГДА ТаблицаДокумента.Ссылка.Договор.ВалютаРасчетов
   |      ИНАЧЕ ТаблицаДокумента.Ссылка.ВалютаДокумента
   |   КОНЕЦ КАК Валюта,
   |   ВЫБОР
   |      КОГДА ТаблицаДокумента.Ссылка.Договор.РасчетыВУсловныхЕдиницах
   |         ТОГДА ВЫРАЗИТЬ(ТаблицаДокумента.СуммаОплаты * ВЫБОР
   |                  КОГДА КурсыВалютРасчетов.Курс <> 0
   |                        И КурсыВалютДокумента.Кратность <> 0
   |                     ТОГДА КурсыВалютДокумента.Курс * КурсыВалютРасчетов.Кратность / (ЕСТЬNULL(КурсыВалютРасчетов.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1))
   |                  ИНАЧЕ 1
   |               КОНЕЦ КАК ЧИСЛО(15, 2))
   |      ИНАЧЕ ТаблицаДокумента.СуммаОплаты
   |   КОНЕЦ КАК Сумма
   |ИЗ
   |   Документ.СчетНаОплату.ПлатежныйКалендарь КАК ТаблицаДокумента
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&МоментВремени, ) КАК КурсыВалютРасчетов
   |      ПО ТаблицаДокумента.Ссылка.Договор.ВалютаРасчетов = КурсыВалютРасчетов.Валюта
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&МоментВремени, ) КАК КурсыВалютДокумента
   |      ПО ТаблицаДокумента.Ссылка.ВалютаДокумента = КурсыВалютДокумента.Валюта
   |ГДЕ
   |   ТаблицаДокумента.Ссылка = &Ссылка
   |
   |УПОРЯДОЧИТЬ ПО
   |   НомерСтроки";
   
   РезультатЗапроса = Запрос.Выполнить();
   
   СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаПлатежныйКалендарь", РезультатЗапроса.Выгрузить());
   
КонецПроцедуры // СформироватьТаблицаПлатежныйКалендарь()

// Процедура формирования таблицы счетов на оплату.
//
// Параметры:
//   ДокументСсылка - ДокументСсылка.ПриходДенежныхСредствПлан - Текущий документ
//   ДополнительныеСвойства - ДополнительныеСвойства - Дополнительные свойства документа
//
Процедура СформироватьТаблицаОплатаСчетовИЗаказов(ДокументСсылка, СтруктураДополнительныеСвойства)
   
   Запрос = Новый Запрос;
   
   Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
   Запрос.УстановитьПараметр("МоментВремени", Новый Граница(СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени, ВидГраницы.Включая));
   Запрос.УстановитьПараметр("Организация", СтруктураДополнительныеСвойства.ДляПроведения.Организация);
   
   Запрос.Текст =
   "ВЫБРАТЬ
   |   ТаблицаДокумента.Дата КАК Период,
   |   &Организация КАК Организация,
   |   ТаблицаДокумента.Ссылка КАК СчетНаОплату,
   |   ТаблицаДокумента.СуммаДокумента КАК Сумма
   |ИЗ
   |   Документ.СчетНаОплату КАК ТаблицаДокумента
   |ГДЕ
   |   ТаблицаДокумента.Контрагент.ВестиУчетОплатыПоСчетам
   |   И ТаблицаДокумента.Ссылка = &Ссылка
   |   И ТаблицаДокумента.СуммаДокумента <> 0";
   
   РезультатЗапроса = Запрос.Выполнить();
   
   СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаОплатаСчетовИЗаказов", РезультатЗапроса.Выгрузить());
   
КонецПроцедуры // СформироватьТаблицаОплатаСчетовИЗаказов()

// Формирует таблицу данных документа.
//
// Параметры:
//   ДокументСсылка - ДокументСсылка.ПриходДенежныхСредствПлан - Текущий документ
//   СтруктураДополнительныеСвойства - ДополнительныеСвойства - Дополнительные свойства документа
//   
Процедура ИнициализироватьДанныеДокумента(ДокументСсылка, СтруктураДополнительныеСвойства) Экспорт
   
   СформироватьТаблицаПлатежныйКалендарь(ДокументСсылка, СтруктураДополнительныеСвойства);
   СформироватьТаблицаОплатаСчетовИЗаказов(ДокументСсылка, СтруктураДополнительныеСвойства);
   
КонецПроцедуры // ИнициализироватьДанныеДокумента()

// Процедура печати документа
Функция ПечатьСчетНаОплату(МассивОбъектов, ОбъектыПечати, ИмяМакета)
   Перем Ошибки;
   ТабличныйДокумент = Новый ТабличныйДокумент;
   
   Запрос = Новый Запрос();
   Запрос.Текст =
   "ВЫБРАТЬ
   |   СчетНаОплату.Ссылка КАК Ссылка,
   |   СчетНаОплату.СуммаВключаетНДС КАК СуммаВключаетНДС,
   |   СчетНаОплату.ВалютаДокумента КАК ВалютаДокумента,
   |   СчетНаОплату.Дата КАК ДатаДокумента,
   |   СчетНаОплату.Номер КАК Номер,
   |   СчетНаОплату.БанковскийСчет КАК БанковскийСчет,
   |   СчетНаОплату.Контрагент КАК Контрагент,
   |   СчетНаОплату.Организация КАК Организация,
   |   СчетНаОплату.Организация.Префикс КАК Префикс,
   |   СчетНаОплату.Запасы.(
   |      ВЫБОР
   |         КОГДА (ВЫРАЗИТЬ(СчетНаОплату.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))) = """"
   |            ТОГДА СчетНаОплату.Запасы.Номенклатура.Наименование
   |         ИНАЧЕ ВЫРАЗИТЬ(СчетНаОплату.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
   |      КОНЕЦ КАК Запас,
   |      Номенклатура.Артикул КАК Артикул,
   |      ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   |      Цена КАК Цена,
   |      Сумма КАК Сумма,
   |      СуммаНДС КАК СуммаНДС,
   |      Всего КАК Всего,
   |      Количество КАК Количество,
   |      Характеристика,
   |      Содержание,
   |      ПроцентСкидкиНаценки,
   |      ВЫБОР
   |         КОГДА СчетНаОплату.Запасы.ПроцентСкидкиНаценки <> 0
   |            ТОГДА 1
   |         ИНАЧЕ 0
   |      КОНЕЦ КАК ЕстьСкидка,
   |      НомерСтроки КАК НомерСтроки
   |   ),
   |   СчетНаОплату.ПлатежныйКалендарь.(
   |      ПроцентОплаты,
   |      СуммаОплаты,
   |      СуммаНДСОплаты
   |   )
   |ИЗ
   |   Документ.СчетНаОплату КАК СчетНаОплату
   |ГДЕ
   |   СчетНаОплату.Ссылка В(&МассивОбъектов)
   |
   |УПОРЯДОЧИТЬ ПО
   |   Ссылка,
   |   НомерСтроки";
   
   Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
   
   Шапка = Запрос.Выполнить().Выбрать();
   
   ПервыйДокумент = Истина;
   
   Пока Шапка.Следующий() Цикл
      
      Если Не ПервыйДокумент Тогда
         ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
      КонецЕсли;
      ПервыйДокумент = Ложь;
      
      НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
      
      ВыборкаСтрокЗапасы = Шапка.Запасы.Выбрать();
      ТаблицаПредоплаты = Шапка.ПлатежныйКалендарь.Выгрузить();
            
      ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_" + ИмяМакета + "_" + ИмяМакета;
      
      Макет = УправлениеПечатью.ПолучитьМакет("Документ.СчетНаОплату.ПФ_MXL_" + ИмяМакета);
      
      СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, ,Шапка.БанковскийСчет);
      СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Контрагент, Шапка.ДатаДокумента, ,);
      
      //Если используется пользовательский макет - этих секций не было
      Если Макет.Области.Найти("ЗаглавиеСЛоготипом") <> Неопределено
         И Макет.Области.Найти("ЗаглавиеБезЛоготипа") <> Неопределено Тогда
         ДанныеКартинки = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Шапка.Организация.ФайлЛоготип);
         Если ЗначениеЗаполнено(ДанныеКартинки.ДвоичныеДанные) Тогда
            ОбластьМакета = Макет.ПолучитьОбласть("ЗаглавиеСЛоготипом");
            ОбластьМакета.Рисунки.Логотип.Картинка = Новый Картинка(ДанныеКартинки.ДвоичныеДанные);
         Иначе // Если картинки не выбраны печатаем обычный заголовок
            ОбластьМакета = Макет.ПолучитьОбласть("ЗаглавиеБезЛоготипа");
         КонецЕсли;
         ТабличныйДокумент.Вывести(ОбластьМакета);
      Иначе
         ТекстСообщения = НСтр("ru ='ВНИМАНИЕ! Возможно используется пользовательский макет. Штатный механизм печати счетов может работать некоректно.'");
         ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, , ТекстСообщения);
      КонецЕсли;
      ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
      Если ЗначениеЗаполнено(СведенияОбОрганизации.Банк) Тогда
         ОбластьМакета.Параметры.БанкПолучателяПредставление = СведенияОбОрганизации.Банк.Наименование + " " + СведенияОбОрганизации.Банк.Город;
      КонецЕсли;
      ОбластьМакета.Параметры.ИНН = СведенияОбОрганизации.ИНН;
      //1С-Минск 
      //ОбластьМакета.Параметры.КПП = СведенияОбОрганизации.КПП;
      //Конец 1С-Минск

      ОбластьМакета.Параметры.ПредставлениеПоставщика = СведенияОбОрганизации.ПолноеНаименование;
      ОбластьМакета.Параметры.БИКБанкаПолучателя = СведенияОбОрганизации.БИК;
      ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = СведенияОбОрганизации.КоррСчет;
      ОбластьМакета.Параметры.СчетПолучателяПредставление = СведенияОбОрганизации.НомерСчета;
      
      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      Если Шапка.ДатаДокумента < Дата('20110101') Тогда
         НомерДокумента = УправлениеНебольшойФирмойСервер.ПолучитьНомерНаПечать(Шапка.Номер, Шапка.Префикс);
      Иначе
         НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.Номер, Истина, Истина);
      КонецЕсли;      
      
      ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
      ОбластьМакета.Параметры.ТекстЗаголовка = "Счет на оплату № "
                                    + НомерДокумента
                                    + " от "
                                    + Формат(Шапка.ДатаДокумента, "ДЛФ=DD");
                                    
      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
      ОбластьМакета.Параметры.ПредставлениеПоставщика = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
      ОбластьМакета.Параметры.ПредставлениеПолучателя = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
      ТабличныйДокумент.Вывести(ОбластьМакета);

      ЕстьСкидки = Шапка.Запасы.Выгрузить().Итог("ЕстьСкидка") <> 0;
      
      Если ЕстьСкидки Тогда
          ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицыСоСкидкой");
         ТабличныйДокумент.Вывести(ОбластьМакета);         
         ОбластьМакета = Макет.ПолучитьОбласть("СтрокаСоСкидкой");      
      Иначе
          ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
         ТабличныйДокумент.Вывести(ОбластьМакета);         
         ОбластьМакета = Макет.ПолучитьОбласть("Строка");      
      КонецЕсли;
      
      Сумма      = 0;
      СуммаНДС   = 0;
      Всего      = 0;
      Количество   = 0;

      Пока ВыборкаСтрокЗапасы.Следующий() Цикл
         
         Количество = Количество + 1;
         ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокЗапасы);
         ОбластьМакета.Параметры.НомерСтроки = Количество;
         //1С-Минск
         ОбластьМакета.Параметры.Цена = УправлениеФормамиУНФРБСервер.ФорматСумм(ВыборкаСтрокЗапасы.Цена, Шапка.ВалютаДокумента);
         ОбластьМакета.Параметры.Сумма = УправлениеФормамиУНФРБСервер.ФорматСумм(ВыборкаСтрокЗапасы.Сумма, Шапка.ВалютаДокумента);
         //Конец 1С-Минск
         Если ЗначениеЗаполнено(ВыборкаСтрокЗапасы.Содержание) Тогда
            ОбластьМакета.Параметры.Запас = ВыборкаСтрокЗапасы.Содержание;
         Иначе
            ОбластьМакета.Параметры.Запас = УправлениеНебольшойФирмойСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаСтрокЗапасы.Запас,
                                                   ВыборкаСтрокЗапасы.Характеристика, ВыборкаСтрокЗапасы.Артикул);
         КонецЕсли;
                  
         Если ЕстьСкидки Тогда
            Если ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки = 100 Тогда
               Скидка = ВыборкаСтрокЗапасы.Цена * ВыборкаСтрокЗапасы.Количество;
               //1С-Минск 
               ОбластьМакета.Параметры.Скидка = УправлениеФормамиУНФРБСервер.ФорматСумм(Скидка, Шапка.ВалютаДокумента);
               ОбластьМакета.Параметры.СуммаБезСкидки = УправлениеФормамиУНФРБСервер.ФорматСумм(Скидка, Шапка.ВалютаДокумента);
               //Конец 1С-Минск
            ИначеЕсли ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки = 0 Тогда
               ОбластьМакета.Параметры.Скидка         = 0;
               //1С-Минск 
               ОбластьМакета.Параметры.СуммаБезСкидки = УправлениеФормамиУНФРБСервер.ФорматСумм(ВыборкаСтрокЗапасы.Сумма, Шапка.ВалютаДокумента);
               //Конец 1С-Минск
               
            Иначе
               Скидка = ВыборкаСтрокЗапасы.Сумма * ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки / (100 - ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки);

               //1С-Минск 
               ОбластьМакета.Параметры.Скидка         = УправлениеФормамиУНФРБСервер.ФорматСумм(Скидка, Шапка.ВалютаДокумента);
               ОбластьМакета.Параметры.СуммаБезСкидки = УправлениеФормамиУНФРБСервер.ФорматСумм(ВыборкаСтрокЗапасы.Сумма + Скидка, Шапка.ВалютаДокумента);
               //Конец 1С-Минск
            КонецЕсли;
         КонецЕсли;
         
         ТабличныйДокумент.Вывести(ОбластьМакета);
         
         Сумма      = Сумма      + ВыборкаСтрокЗапасы.Сумма;
         СуммаНДС   = СуммаНДС   + ВыборкаСтрокЗапасы.СуммаНДС;
         Всего      = Всего    + ВыборкаСтрокЗапасы.Всего;

      КонецЦикла;
      
      ОбластьМакета = Макет.ПолучитьОбласть("Итого");

      //1С-Минск 
      ОбластьМакета.Параметры.Всего = УправлениеФормамиУНФРБСервер.ФорматСумм(Сумма, Шапка.ВалютаДокумента);
      //Конец 1С-Минск

      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
      Если СуммаНДС = 0 Тогда
         ОбластьМакета.Параметры.НДС = "Без налога (НДС)";
         ОбластьМакета.Параметры.ВсегоНДС = "-";
      Иначе
         ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");

         //1С-Минск 
         ОбластьМакета.Параметры.ВсегоНДС = УправлениеФормамиУНФРБСервер.ФорматСумм(СуммаНДС, Шапка.ВалютаДокумента);
         //Конец 1С-Минск
//         ОбластьМакета.Параметры.ВсегоНДС = УправлениеНебольшойФирмойСервер.ФорматСумм(СуммаНДС);
      КонецЕсли;
      
      Если ИмяМакета = "СчетНаЧастичнуюОплату" Тогда
         Если СуммаНДС = 0 Тогда
            ОбластьМакета.Параметры.НДСкОплате = "Без налога (НДС)";
            ОбластьМакета.Параметры.ВсегоНДСкОплате = "-";
         Иначе
            ОбластьМакета.Параметры.НДСкОплате = ?(Шапка.СуммаВключаетНДС, "В том числе НДС оплаты:", "Сумма НДС оплаты:");
            Если ТаблицаПредоплаты.Итог("ПроцентОплаты") > 0 Тогда
               //1С-Минск 
               ОбластьМакета.Параметры.ВсегоНДСкОплате = УправлениеФормамиУНФРБСервер.ФорматСумм(ТаблицаПредоплаты.Итог("СуммаНДСОплаты"), Шапка.ВалютаДокумента);
               //Конец 1С-Минск
            Иначе
               ОбластьМакета.Параметры.ВсегоНДСкОплате = "-";
            КонецЕсли;
         КонецЕсли;
         Если ТаблицаПредоплаты.Итог("ПроцентОплаты") > 0 Тогда
                //1С-Минск 
            ОбластьМакета.Параметры.ВсегоКОплате = УправлениеФормамиУНФРБСервер.ФорматСумм(ТаблицаПредоплаты.Итог("СуммаОплаты"), Шапка.ВалютаДокумента);
            //Конец 1С-Минск
            
            ОбластьМакета.Параметры.ПроцентОплаты = ТаблицаПредоплаты.Итог("ПроцентОплаты");
         Иначе
            ОбластьМакета.Параметры.ВсегоКОплате = "-";
            ОбластьМакета.Параметры.ПроцентОплаты = "-";
         КонецЕсли;
      КонецЕсли;
      
      ТабличныйДокумент.Вывести(ОбластьМакета);

      ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
      
      СуммаКПрописи = Всего;

      ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований "
                                    + Строка(Количество)
                                    + ", на сумму "
                                    + УправлениеНебольшойФирмойСервер.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);

      ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);

      ТабличныйДокумент.Вывести(ОбластьМакета);
      ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
      
      Руководители = УправлениеНебольшойФирмойСервер.ОтветственныеЛицаОрганизационнойЕдиницы(Шапка.Организация, Шапка.ДатаДокумента);
      ОбластьМакета.Параметры.ФИОРуководителя = Руководители.ФИОРуководителя;
      ОбластьМакета.Параметры.ФИОБухгалтера   = Руководители.ФИОГлавногоБухгалтера;
      ТабличныйДокумент.Вывести(ОбластьМакета);
      УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
   КонецЦикла;
   
   ТабличныйДокумент.АвтоМасштаб = Истина;
   
   Возврат ТабличныйДокумент;

КонецФункции // ПечатнаяФорма()

// Процедура печати документа
//
Функция ПечатьСчетНаОплатуСФаксимильнойПодписью(МассивОбъектов, ОбъектыПечати, ИмяМакета)
   
   Перем Ошибки;
   
   ТабличныйДокумент = Новый ТабличныйДокумент;
   
   Запрос = Новый Запрос();
   Запрос.Текст =
   "ВЫБРАТЬ
   |   СчетНаОплату.Ссылка КАК Ссылка,
   |   СчетНаОплату.СуммаВключаетНДС КАК СуммаВключаетНДС,
   |   СчетНаОплату.ВалютаДокумента КАК ВалютаДокумента,
   |   СчетНаОплату.Дата КАК ДатаДокумента,
   |   СчетНаОплату.Номер КАК Номер,
   |   СчетНаОплату.БанковскийСчет КАК БанковскийСчет,
   |   СчетНаОплату.Контрагент КАК Контрагент,
   |   СчетНаОплату.Организация КАК Организация,
   |   СчетНаОплату.Организация.Префикс КАК Префикс,
   |   СчетНаОплату.Запасы.(
   |      ВЫБОР
   |         КОГДА (ВЫРАЗИТЬ(СчетНаОплату.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))) = """"
   |            ТОГДА СчетНаОплату.Запасы.Номенклатура.Наименование
   |         ИНАЧЕ ВЫРАЗИТЬ(СчетНаОплату.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
   |      КОНЕЦ КАК Запас,
   |      Номенклатура.Артикул КАК Артикул,
   |      ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   |      Цена КАК Цена,
   |      Сумма КАК Сумма,
   |      СуммаНДС КАК СуммаНДС,
   |      Всего КАК Всего,
   |      Количество КАК Количество,
   |      Характеристика,
   |      Содержание,
   |      ПроцентСкидкиНаценки,
   |      ВЫБОР
   |         КОГДА СчетНаОплату.Запасы.ПроцентСкидкиНаценки <> 0
   |            ТОГДА 1
   |         ИНАЧЕ 0
   |      КОНЕЦ КАК ЕстьСкидка,
   |      НомерСтроки КАК НомерСтроки
   |   ),
   |   СчетНаОплату.ПлатежныйКалендарь.(
   |      ПроцентОплаты,
   |      СуммаОплаты,
   |      СуммаНДСОплаты
   |   )
   |ИЗ
   |   Документ.СчетНаОплату КАК СчетНаОплату
   |ГДЕ
   |   СчетНаОплату.Ссылка В(&МассивОбъектов)
   |
   |УПОРЯДОЧИТЬ ПО
   |   Ссылка,
   |   НомерСтроки";
   
   Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
   
   Шапка = Запрос.Выполнить().Выбрать();
   
   ПервыйДокумент = Истина;
   
   Пока Шапка.Следующий() Цикл
      
      Если Не ПервыйДокумент Тогда
         ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
      КонецЕсли;
      ПервыйДокумент = Ложь;
      
      НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
      
      ВыборкаСтрокЗапасы = Шапка.Запасы.Выбрать();
      ТаблицаПредоплаты = Шапка.ПлатежныйКалендарь.Выгрузить();
      ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_" + ИмяМакета + "_" + ИмяМакета;
      
      Макет = УправлениеПечатью.ПолучитьМакет("Документ.СчетНаОплату.ПФ_MXL_" + ИмяМакета);
      
      СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, ,Шапка.БанковскийСчет);
      СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Контрагент, Шапка.ДатаДокумента, ,);
      
      //Если используется пользовательский макет - этих секций не было
      Если Макет.Области.Найти("ЗаглавиеСЛоготипом") <> Неопределено
         И Макет.Области.Найти("ЗаглавиеБезЛоготипа") <> Неопределено Тогда
      
         ДанныеКартинки = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Шапка.Организация.ФайлЛоготип);
         Если ЗначениеЗаполнено(ДанныеКартинки.ДвоичныеДанные) Тогда
            
            ОбластьМакета = Макет.ПолучитьОбласть("ЗаглавиеСЛоготипом");
            ОбластьМакета.Рисунки.Логотип.Картинка = Новый Картинка(ДанныеКартинки.ДвоичныеДанные);
            
         Иначе // Если картинки не выбраны печатаем обычный заголовок
            
            ОбластьМакета = Макет.ПолучитьОбласть("ЗаглавиеБезЛоготипа");
            
         КонецЕсли;
         
         ТабличныйДокумент.Вывести(ОбластьМакета);
         
      Иначе
         
         ТекстСообщения = НСтр("ru ='ВНИМАНИЕ! Возможно используется пользовательский макет. Штатный механизм печати счетов может работать некоректно.'");
         ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, , ТекстСообщения);
         
      КонецЕсли;
      
      ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
      Если ЗначениеЗаполнено(СведенияОбОрганизации.Банк) Тогда
         ОбластьМакета.Параметры.БанкПолучателяПредставление = СведенияОбОрганизации.Банк.Наименование + " " + СведенияОбОрганизации.Банк.Город;
      КонецЕсли;
      ОбластьМакета.Параметры.ИНН = СведенияОбОрганизации.ИНН;
      ОбластьМакета.Параметры.КПП = СведенияОбОрганизации.КПП;
      ОбластьМакета.Параметры.ПредставлениеПоставщика = СведенияОбОрганизации.ПолноеНаименование;
      ОбластьМакета.Параметры.БИКБанкаПолучателя = СведенияОбОрганизации.БИК;
      ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = СведенияОбОрганизации.КоррСчет;
      ОбластьМакета.Параметры.СчетПолучателяПредставление = СведенияОбОрганизации.НомерСчета;
      
      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      Если Шапка.ДатаДокумента < Дата('20110101') Тогда
         НомерДокумента = УправлениеНебольшойФирмойСервер.ПолучитьНомерНаПечать(Шапка.Номер, Шапка.Префикс);
      Иначе
         НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.Номер, Истина, Истина);
      КонецЕсли;      
      
      ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
      ОбластьМакета.Параметры.ТекстЗаголовка = "Счет на оплату № "
                                    + НомерДокумента
                                    + " от "
                                    + Формат(Шапка.ДатаДокумента, "ДЛФ=DD");
                                    
      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
      ОбластьМакета.Параметры.ПредставлениеПоставщика = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
      ОбластьМакета.Параметры.ПредставлениеПолучателя = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
      ТабличныйДокумент.Вывести(ОбластьМакета);

      ЕстьСкидки = Шапка.Запасы.Выгрузить().Итог("ЕстьСкидка") <> 0;
      
      Если ЕстьСкидки Тогда
         
         ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицыСоСкидкой");
         ТабличныйДокумент.Вывести(ОбластьМакета);
         ОбластьМакета = Макет.ПолучитьОбласть("СтрокаСоСкидкой");
         
      Иначе
         
         ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
         ТабличныйДокумент.Вывести(ОбластьМакета);
         ОбластьМакета = Макет.ПолучитьОбласть("Строка");
         
      КонецЕсли;
      
      Сумма      = 0;
      СуммаНДС   = 0;
      Всего      = 0;
      Количество   = 0;

      Пока ВыборкаСтрокЗапасы.Следующий() Цикл
         
         Количество = Количество + 1;
         ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокЗапасы);
         ОбластьМакета.Параметры.НомерСтроки = Количество;
         //1С-Минск
         ОбластьМакета.Параметры.Цена = УправлениеФормамиУНФРБСервер.ФорматСумм(ВыборкаСтрокЗапасы.Цена, Шапка.ВалютаДокумента);
         ОбластьМакета.Параметры.Сумма = УправлениеФормамиУНФРБСервер.ФорматСумм(ВыборкаСтрокЗапасы.Сумма, Шапка.ВалютаДокумента);
         //Конец 1С-Минск
         Если ЗначениеЗаполнено(ВыборкаСтрокЗапасы.Содержание) Тогда
            ОбластьМакета.Параметры.Запас = ВыборкаСтрокЗапасы.Содержание;
         Иначе
            ОбластьМакета.Параметры.Запас = УправлениеНебольшойФирмойСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаСтрокЗапасы.Запас,
                                                   ВыборкаСтрокЗапасы.Характеристика, ВыборкаСтрокЗапасы.Артикул);
         КонецЕсли;
                  
         Если ЕстьСкидки Тогда
            Если ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки = 100 Тогда
               Скидка = ВыборкаСтрокЗапасы.Цена * ВыборкаСтрокЗапасы.Количество;
               //1С-Минск
               ОбластьМакета.Параметры.Скидка = УправлениеФормамиУНФРБСервер.ФорматСумм(Скидка, Шапка.ВалютаДокумента);
               ОбластьМакета.Параметры.СуммаБезСкидки = УправлениеФормамиУНФРБСервер.ФорматСумм(Скидка, Шапка.ВалютаДокумента);
               //Конец 1С-Минск
            ИначеЕсли ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки = 0 Тогда
               ОбластьМакета.Параметры.Скидка = 0;
               //1С-Минск 
               ОбластьМакета.Параметры.СуммаБезСкидки = УправлениеФормамиУНФРБСервер.ФорматСумм(ВыборкаСтрокЗапасы.Сумма, Шапка.ВалютаДокумента);
               //Конец 1С-Минск
               
            Иначе
               Скидка = ВыборкаСтрокЗапасы.Сумма * ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки / (100 - ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки);
               //1С-Минск 
               ОбластьМакета.Параметры.Скидка         = УправлениеФормамиУНФРБСервер.ФорматСумм(Скидка, Шапка.ВалютаДокумента);
               ОбластьМакета.Параметры.СуммаБезСкидки = УправлениеФормамиУНФРБСервер.ФорматСумм(ВыборкаСтрокЗапасы.Сумма + Скидка, Шапка.ВалютаДокумента);
               //Конец 1С-Минск
            КонецЕсли;
         КонецЕсли;
         
         ТабличныйДокумент.Вывести(ОбластьМакета);
         
         Сумма      = Сумма      + ВыборкаСтрокЗапасы.Сумма;
         СуммаНДС   = СуммаНДС   + ВыборкаСтрокЗапасы.СуммаНДС;
         Всего      = Всего      + ВыборкаСтрокЗапасы.Всего;

      КонецЦикла;
      
      ОбластьМакета = Макет.ПолучитьОбласть("Итого");

      ОбластьМакета.Параметры.Всего = УправлениеНебольшойФирмойСервер.ФорматСумм(Сумма, Шапка.ВалютаДокумента);

      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
      Если СуммаНДС = 0 Тогда
         ОбластьМакета.Параметры.НДС = "Без налога (НДС)";
         ОбластьМакета.Параметры.ВсегоНДС = "-";
      Иначе
         ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");

         //1С-Минск 
         ОбластьМакета.Параметры.ВсегоНДС = УправлениеФормамиУНФРБСервер.ФорматСумм(СуммаНДС, Шапка.ВалютаДокумента);
         //Конец 1С-Минск
      КонецЕсли;
      
      Если ИмяМакета = "СчетНаЧастичнуюОплату" Тогда
         Если СуммаНДС = 0 Тогда
            ОбластьМакета.Параметры.НДСкОплате = "Без налога (НДС)";
            ОбластьМакета.Параметры.ВсегоНДСкОплате = "-";
         Иначе
            ОбластьМакета.Параметры.НДСкОплате = ?(Шапка.СуммаВключаетНДС, "В том числе НДС оплаты:", "Сумма НДС оплаты:");
            Если ТаблицаПредоплаты.Итог("ПроцентОплаты") > 0 Тогда
               //1С-Минск 
               ОбластьМакета.Параметры.ВсегоНДСкОплате = УправлениеФормамиУНФРБСервер.ФорматСумм(ТаблицаПредоплаты.Итог("СуммаНДСОплаты"), Шапка.ВалютаДокумента);
               //Конец 1С-Минск
            Иначе
               ОбластьМакета.Параметры.ВсегоНДСкОплате = "-";
            КонецЕсли;
         КонецЕсли;
         Если ТаблицаПредоплаты.Итог("ПроцентОплаты") > 0 Тогда
            //1С-Минск 
            ОбластьМакета.Параметры.ВсегоКОплате = УправлениеФормамиУНФРБСервер.ФорматСумм(ТаблицаПредоплаты.Итог("СуммаОплаты"), Шапка.ВалютаДокумента);
            //Конец 1С-Минск
            ОбластьМакета.Параметры.ПроцентОплаты = ТаблицаПредоплаты.Итог("ПроцентОплаты");
         Иначе
            ОбластьМакета.Параметры.ВсегоКОплате = "-";
            ОбластьМакета.Параметры.ПроцентОплаты = "-";
         КонецЕсли;
      КонецЕсли;
      
      ТабличныйДокумент.Вывести(ОбластьМакета);

      ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");

      СуммаКПрописи = Всего;

      ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований "
                                    + Строка(Количество)
                                    + ", на сумму "
                                    + УправлениеНебольшойФирмойСервер.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
      ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи,
                                                                        Шапка.ВалютаДокумента);
      
      ТабличныйДокумент.Вывести(ОбластьМакета);

      Если Макет.Области.Найти("ПодвалСчетаСФаксимильнойПечатью") <> Неопределено Тогда

         ДанныеКартинки = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Шапка.Организация.ФайлФаксимильнаяПечать);
         Если ЗначениеЗаполнено(ДанныеКартинки.ДвоичныеДанные) Тогда
            ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчетаСФаксимильнойПечатью");
            ОбластьМакета.Рисунки.ФаксимильнаяПечать.Картинка = Новый Картинка(ДанныеКартинки.ДвоичныеДанные);
         Иначе
            ТекстСообщения = НСтр("ru ='Факсимиле для организации не установлена. Установка факсимиле выполняется в карточке организации, раздел ""Настройка печати"".'");
            ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, , ТекстСообщения);
            ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
            Руководители = УправлениеНебольшойФирмойСервер.ОтветственныеЛицаОрганизационнойЕдиницы(Шапка.Организация, Шапка.ДатаДокумента);
            ОбластьМакета.Параметры.ФИОРуководителя = Руководители.ФИОРуководителя;
            ОбластьМакета.Параметры.ФИОБухгалтера   = Руководители.ФИОГлавногоБухгалтера;
         КонецЕсли;

         ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчетаСФаксимильнойПечатью");
         ОбластьМакета.Рисунки.ФаксимильнаяПечать.Картинка = Новый Картинка(ДанныеКартинки.ДвоичныеДанные);
         
      Иначе
         
         ТекстСообщения = НСтр("ru ='Факсимиле для организации не установлена. Установка факсимиле выполняется в карточке организации, раздел ""Настройка печати"".'");
         // Добавлять второе предупреждение не нужно, так как предупреждение добавлено при попытке вывести заголовок.
         
         ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, , ТекстСообщения);
         
         ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
         
         Руководители = УправлениеНебольшойФирмойСервер.ОтветственныеЛицаОрганизационнойЕдиницы(Шапка.Организация, Шапка.ДатаДокумента);
         
         ОбластьМакета.Параметры.ФИОРуководителя = Руководители.ФИОРуководителя;
         ОбластьМакета.Параметры.ФИОБухгалтера   = Руководители.ФИОГлавногоБухгалтера;
         
      КонецЕсли;
      
      ТабличныйДокумент.Вывести(ОбластьМакета);
      
      УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
      
   КонецЦикла;
   
   ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки);
   
   ТабличныйДокумент.АвтоМасштаб = Истина;
   
   Возврат ТабличныйДокумент;

КонецФункции // ПечатнаяФорма()

// Процедура формирования предварительной печатной формы документа (образец)
//
// Вызывается из карточки "Организации" для просмотра размещения логотипов
//
Функция ПечатьПредварительныйПросмотрСчетаНаОплату(Организация, ОбъектыПечати, ИмяМакета)
   
   Перем Ошибки;
   
   ТабличныйДокумент = Новый ТабличныйДокумент;
   
   ЗначениеДаты = ТекущаяДатаСеанса();
   
   Шапка = Новый Структура;
   Шапка.Вставить("СуммаВключаетНДС",   Истина);
   Шапка.Вставить("ВалютаДокумента",   Константы.НациональнаяВалюта.Получить());
   Шапка.Вставить("ДатаДокумента",      ЗначениеДаты);
   Шапка.Вставить("Номер",          "00000000001");
   Шапка.Вставить("Организация",       Организация);
   Шапка.Вставить("БанковскийСчет",   ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Организация, "БанковскийСчетПоУмолчанию"));
   Шапка.Вставить("Префикс",          ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Организация, "Префикс"));
   Шапка.Вставить("ПредставлениеПолучателя", "Поле содержит информацию покупателя: полное наименование, ИНН, КПП, юридический адрес, телефоны.");
   
   Запасы = Новый Структура;
   Запасы.Вставить("НомерСтроки",         1);
   Запасы.Вставить("Запас",            "Запас для предварительного просмотра");
   Запасы.Вставить("Артикул",            "АРТ-0000001");
   Запасы.Вставить("ЕдиницаИзмерения",      Справочники.КлассификаторЕдиницИзмерения.шт);
   Запасы.Вставить("Количество",         1);
   Запасы.Вставить("Цена",               118);
   Запасы.Вставить("Сумма",            118);
   Запасы.Вставить("СуммаНДС",            18);
   Запасы.Вставить("ВсегоНДС",            18);
   Запасы.Вставить("НДС",                "В том числе НДС:");
   Запасы.Вставить("Характеристика",      Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
   Запасы.Вставить("ПроцентСкидкиНаценки",   0);
   
   НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
   
   ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_" + ИмяМакета + "_" + ИмяМакета;
   
   Макет = УправлениеПечатью.ПолучитьМакет("Документ.СчетНаОплату.ПФ_MXL_" + ИмяМакета);
   
   СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, , ?(ЗначениеЗаполнено(Шапка.БанковскийСчет), Шапка.БанковскийСчет, Неопределено));
   
   
   //Если используется пользовательский макет - этих секций не было
   Если Макет.Области.Найти("ЗаглавиеСЛоготипом") <> Неопределено
      И Макет.Области.Найти("ЗаглавиеБезЛоготипа") <> Неопределено Тогда
      
      ДанныеКартинки = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Организация.ФайлЛоготип);
      Если ЗначениеЗаполнено(ДанныеКартинки.ДвоичныеДанные) Тогда
         
         ОбластьМакета = Макет.ПолучитьОбласть("ЗаглавиеСЛоготипом");
         ОбластьМакета.Рисунки.Логотип.Картинка = Новый Картинка(ДанныеКартинки.ДвоичныеДанные);
         
      Иначе // Если картинки не выбраны печатаем обычный заголовок
         
         ОбластьМакета = Макет.ПолучитьОбласть("ЗаглавиеБезЛоготипа");
         
      КонецЕсли;
      
      ТабличныйДокумент.Вывести(ОбластьМакета);
      
   Иначе
      
      ТекстСообщения = НСтр("ru ='ВНИМАНИЕ! Возможно используется пользовательский макет. Штатный механизм печати счетов может работать некоректно.'");
      ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, , ТекстСообщения);
      
   КонецЕсли;
   
   ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
   Если ЗначениеЗаполнено(СведенияОбОрганизации.Банк) Тогда
      ОбластьМакета.Параметры.БанкПолучателяПредставление = СведенияОбОрганизации.Банк.Наименование + " " + СведенияОбОрганизации.Банк.Город;
   КонецЕсли;
   
   ОбластьМакета.Параметры.ИНН = СведенияОбОрганизации.ИНН;
   ОбластьМакета.Параметры.КПП = СведенияОбОрганизации.КПП;
   ОбластьМакета.Параметры.ПредставлениеПоставщика = СведенияОбОрганизации.ПолноеНаименование;
   ОбластьМакета.Параметры.БИКБанкаПолучателя = СведенияОбОрганизации.БИК;
   ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = СведенияОбОрганизации.КоррСчет;
   ОбластьМакета.Параметры.СчетПолучателяПредставление = СведенияОбОрганизации.НомерСчета;
   
   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   Если Шапка.ДатаДокумента < Дата('20110101') Тогда
      НомерДокумента = УправлениеНебольшойФирмойСервер.ПолучитьНомерНаПечать(Шапка.Номер, Шапка.Префикс);
   Иначе
      НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.Номер, Истина, Истина);
   КонецЕсли;      
   
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.ТекстЗаголовка = "Счет на оплату № "
                                 + НомерДокумента
                                 + " от "
                                 + Формат(Шапка.ДатаДокумента, "ДЛФ=DD");
                                 
   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.ПредставлениеПоставщика = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.Заполнить(Шапка);
   ТабличныйДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Строка");
   ОбластьМакета.Параметры.Заполнить(Запасы);
   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Итого");

   ОбластьМакета.Параметры.Всего = УправлениеНебольшойФирмойСервер.ФорматСумм(Запасы.Сумма, Шапка.ВалютаДокумента);

   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
   ОбластьМакета.Параметры.Заполнить(Запасы);
   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
   ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований "
                                 + Строка(Запасы.Количество)
                                 + ", на сумму "
                                 + УправлениеНебольшойФирмойСервер.ФорматСумм(Запасы.Сумма, Шапка.ВалютаДокумента);
                                                            
   ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(Запасы.Сумма, Шапка.ВалютаДокумента);
   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   Если Макет.Области.Найти("ПодвалСчетаСФаксимильнойПечатью") <> Неопределено Тогда
      ДанныеКартинки = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Организация.ФайлФаксимильнаяПечать);
      Если ЗначениеЗаполнено(ДанныеКартинки.ДвоичныеДанные) Тогда
         ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчетаСФаксимильнойПечатью");
         ОбластьМакета.Рисунки.ФаксимильнаяПечать.Картинка = Новый Картинка(ДанныеКартинки.ДвоичныеДанные);
      Иначе
         ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
         ОбластьМакета.Параметры.Заполнить(Шапка);
      КонецЕсли;

      ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчетаСФаксимильнойПечатью");
      ОбластьМакета.Рисунки.ФаксимильнаяПечать.Картинка = Новый Картинка(ДанныеКартинки.ДвоичныеДанные);
      
   Иначе
      
      ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
      // Добавлять второе предупреждение не нужно, так как предупреждение добавлено при попытке вывести заголовок.
      ОбластьМакета.Параметры.Заполнить(Шапка);
      
   КонецЕсли;
   
   ТабличныйДокумент.Вывести(ОбластьМакета);
   
   УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Организация);
   
   ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки);
   
   ТабличныйДокумент.АвтоМасштаб = Истина;
   
   Возврат ТабличныйДокумент;
   
КонецФункции //ПечатьПредварительныйПросмотрСчетаНаОплату()

// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
//   ИменаМакетов    - Строка    - Имена макетов, перечисленные через запятую
//   МассивОбъектов  - Массив    - Массив ссылок на объекты которые нужно распечатать
//   ПараметрыПечати - Структура - Структура дополнительных параметров печати
//
// ИСХОДЯЩИЕ:
//   КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
//   ПараметрыВывода       - Структура        - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

   ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
   
   ЗаполнитьПараметрыЭлектроннойПочты = Истина;
   
   // Пробная печать
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПредварительныйПросмотрПечатнойФормыСчетНаОплату") Тогда
      
      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПредварительныйПросмотрПечатнойФормыСчетНаОплату", "Счет на оплату", ПечатьПредварительныйПросмотрСчетаНаОплату(МассивОбъектов, ОбъектыПечати, "СчетНаОплату"));
      
      ЗаполнитьПараметрыЭлектроннойПочты = Ложь;
      
   КонецЕсли;
   
   // Счет на оплату
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаОплату") Тогда
      
      ТабличныйДокумент = ?(ПараметрыПечати.Факсимилия,
                        ПечатьСчетНаОплатуСФаксимильнойПодписью(МассивОбъектов, ОбъектыПечати, "СчетНаОплату"),
                        ПечатьСчетНаОплату(МассивОбъектов, ОбъектыПечати, "СчетНаОплату")
                        );
      
      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетНаОплату", "Счет на оплату", ТабличныйДокумент);
      
   КонецЕсли;

   // Счет на частичную оплату
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаЧастичнуюОплату") Тогда
      
      ТабличныйДокумент = ?(ПараметрыПечати.Факсимилия,
                        ПечатьСчетНаОплатуСФаксимильнойПодписью(МассивОбъектов, ОбъектыПечати, "СчетНаЧастичнуюОплату"),
                        ПечатьСчетНаОплату(МассивОбъектов, ОбъектыПечати, "СчетНаЧастичнуюОплату")
                        );
      
      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетНаЧастичнуюОплату", "Счет на оплату (частичная оплата)", ТабличныйДокумент);
   
   КонецЕсли;

    //1С-Минск 
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Счет") Тогда

      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Счет", "Счет на оплату", ПечатьСчета183(МассивОбъектов, ОбъектыПечати));

   КонецЕсли;
   
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Протокол") Тогда
      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Протокол", "Протокол согласования цен", ПечатьСчета183(МассивОбъектов, ОбъектыПечати, Ложь, Истина));
   КонецЕсли;   
   
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетПротокол") Тогда
      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетПротокол", "СчетПротокол", ПечатьСчета183(МассивОбъектов, ОбъектыПечати, Истина, Истина));
   КонецЕсли;
   //Конец 1С-Минск
   
   // параметры отправки печатных форм по электронной почте
   Если ЗаполнитьПараметрыЭлектроннойПочты Тогда
      
      УправлениеНебольшойФирмойСервер.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
      
   КонецЕсли;

КонецПроцедуры

Функция ПолучитьДанныеПечати(знач МассивДокументов, знач МассивИменМакетов) Экспорт
   
   ДанныеПоВсемОбъектам = Новый Соответствие;
   ОписаниеОбластей = Новый Соответствие;
   ДвоичныеДанныеМакетов = Новый Соответствие;
   ТипыМакетов = Новый Соответствие;
   
   Возврат Новый Структура("Данные, Макеты",
                     ДанныеПоВсемОбъектам,
                     Новый Структура("ОписаниеОбластей, ТипыМакетов, ДвоичныеДанныеМакетов",
                                 ОписаниеОбластей,
                                 ТипыМакетов,
                                 ДвоичныеДанныеМакетов));
   
КонецФункции

//1с-Минск

// Функция формирует табличный документ с печатной формой счета,
// разработанного методистами
//
// Возвращаемое значение:
//  Табличный документ - сформированная печатная форма
//
Функция ПечатьСчета183(МассивОбъектов ,ОбъектыПечати, ПечататьСчет = Истина, ПечататьПротокол = Ложь)

   Для Каждого ТабличныйДокумент Из МассивОбъектов Цикл
      ТабДокумент = Новый ТабличныйДокумент;
      Макет = ПолучитьМакет("ПФ_MXL_Счет183");
      
      Запрос = Новый Запрос;
      Запрос.УстановитьПараметр("ТекущийДокумент", ТабличныйДокумент.Ссылка);
      Запрос.УстановитьПараметр("ДатаДокумента", ТабличныйДокумент.Дата);
      Запрос.Текст =
      "ВЫБРАТЬ
      |   Заказ.Номер КАК НомерДокумента,
      |   Заказ.Ссылка КАК Ссылка,
      |   Заказ.Дата КАК ДатаДокумента,
      |   Заказ.Договор,
      |   Заказ.ВидЦен,
      |   Заказ.Организация,
      |   Заказ.Контрагент КАК Получатель,
      |   Заказ.Организация КАК Руководители,
      |   Заказ.Организация КАК Поставщик,
      |   Заказ.СуммаДокумента,
      |   Заказ.ВалютаДокумента,
      //   |   Заказ.УчитыватьНДС,
      |   Заказ.СуммаВключаетНДС,
      |   Заказ.Организация.НаименованиеПолное КАК ОрганизацияНаименование,
      |   Заказ.Организация.ИНН КАК ИНН,
      |   Заказ.Контрагент.НаименованиеПолное КАК КонтрагентНаименование,
      |   Заказ.Контрагент.ИНН,
      |   Заказ.Контрагент.БанковскийСчетПоУмолчанию.НомерСчета КАК КОБСНомерСчета,
      |   Заказ.Контрагент.БанковскийСчетПоУмолчанию.Банк.Наименование КАК КОБСБанкНаименование,
      |   Заказ.Контрагент.БанковскийСчетПоУмолчанию.Банк.Код КАК КОБСБанкКод,
      |   Заказ.ЦельПриобретения КАК ЦельПриобретения,
      |   Заказ.Организация.БанковскийСчетПоУмолчанию.Банк.Код КАК ООБСБанкКод,
      |   Заказ.Организация.БанковскийСчетПоУмолчанию.Банк.Наименование КАК ООБСБанкНаименование,
      |   Заказ.Организация.БанковскийСчетПоУмолчанию.НомерСчета КАК ООБСНомерСчета
      |ИЗ
      |   Документ.СчетНаОплату КАК Заказ
      |ГДЕ
      |   Заказ.Ссылка = &ТекущийДокумент";
      
      
      Шапка = Запрос.Выполнить().Выбрать();
      Шапка.Следующий();
      
      Запрос.Текст =
      "ВЫБРАТЬ
      |   Товары.Номенклатура КАК Номенклатура,
      |   Товары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
      |   Товары.Сумма КАК Сумма,
      |   Товары.СтавкаНДС КАК СтавкаНДС,
      |   Товары.СуммаНДС КАК СуммаНДС,
      |   Товары.Количество КАК Количество,
      |   Товары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
      |   0 КАК ЦенаИмпортераИзготовителя,
      |   Товары.Цена КАК Цена,
      |   Товары.Партия.СтранаВвоза КАК страна,
      |   Товары.Партия.ЦенаПервогоПоставщика,
      |   Товары.Характеристика,
      |   Товары.ПроцентСкидкиНаценки,
      |   Товары.Номенклатура.Артикул КАК Артикул,
      |   Товары.Содержание,
      |   Товары.Номенклатура.ПредставлениеУслуги Как ПредставлениеУслуги,
      |   Товары.Номенклатура.РегистрироватьКакУслугу Как РегистрироватьКакУслугу
      |ИЗ
      |   Документ.СчетНаОплату.Запасы КАК Товары
      |ГДЕ
      |   Товары.Ссылка = &ТекущийДокумент";
      
      
      ЗапросТовары = Запрос.Выполнить().Выгрузить();
      
      //***
      Запрос.Текст =
      "ВЫБРАТЬ
      |   СчетНаОплатуПлатежныйКалендарь.Ссылка,
      |   СчетНаОплатуПлатежныйКалендарь.НомерСтроки Как НомерСроки,
      |   СчетНаОплатуПлатежныйКалендарь.ДатаОплаты Как ДатаОплатыСроки,
      |   СчетНаОплатуПлатежныйКалендарь.ПроцентОплаты Как ПроцентОплатыСроки,
      |   СчетНаОплатуПлатежныйКалендарь.СуммаОплаты Как СуммаОплатыСроки,
      |   СчетНаОплатуПлатежныйКалендарь.СуммаНДСОплаты
      |ИЗ
      |   Документ.СчетНаОплату.ПлатежныйКалендарь КАК СчетНаОплатуПлатежныйКалендарь
      |ГДЕ
      |   СчетНаОплатуПлатежныйКалендарь.Ссылка = &ТекущийДокумент";
      
      
      ЗапросСроки = Запрос.Выполнить().Выгрузить();
      //**
      
      
      
      НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;   
      Если ПечататьСчет Тогда
         // Выводим шапку накладной
         ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
         ОбластьМакета.Параметры.Заполнить(Шапка);
         
         ОбластьМакета.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.НомерДокумента, Истина, Истина);
         ОбластьМакета.Параметры.ДатаДокумента  = Формат(Шапка.ДатаДокумента, "ДФ=""дд ММММ гггг""");
         СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, ,);
         СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.ДатаДокумента, ,);
         ОбластьМакета.Параметры.ЮрАдресОрганизации = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ЮридическийАдрес,");
         ОбластьМакета.Параметры.ТелефонОрганизации = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "Телефоны,");
         ОбластьМакета.Параметры.ЮрАдресКонтрагента = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ЮридическийАдрес,");
         ОбластьМакета.Параметры.ТелефонКонтрагента = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "Телефоны,");
                           
         ТабДокумент.Вывести(ОбластьМакета);
         
         ИтогоСумма     = 0;
         ИтогоНДС       = 0;
         ИтогоСуммаСНДС   = 0;
         
         ОбластьМакета = Макет.ПолучитьОбласть("Строка");
         
         Ном = 0;
         
         Если Шапка.ВалютаДокумента = Константы.ВалютаУчета.Получить() Тогда
            ОбластьМакета.Области.Цена.Формат      = "ЧЦ=19; ЧДЦ=0; ЧРГ=' '";
            ОбластьМакета.Области.СуммаНДС.Формат    = "ЧЦ=19; ЧДЦ=0; ЧРГ=' '";
            ОбластьМакета.Области.СуммаСНДС.Формат    = "ЧЦ=19; ЧДЦ=0; ЧРГ=' '";
            ОбластьМакета.Области.СуммаБезНДС.Формат= "ЧЦ=19; ЧДЦ=0; ЧРГ=' '";
         КонецЕсли;
         
         Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
            
            Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
               Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
               Продолжить;
            КонецЕсли;
            
            Ном = Ном + 1;
            
            ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
            
            ОбластьМакета.Параметры.ТоварНаименование = УправлениеНебольшойФирмойСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаСтрокТовары.ТоварНаименование, ВыборкаСтрокТовары.Характеристика, ВыборкаСтрокТовары.Артикул);
                                                    
            Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Содержание) Тогда
               
               ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.Содержание;   
               
            КонецЕсли;
            
            ОбластьМакета.Параметры.Номер = Ном;
            
            СуммаСНДС    = Окр((ВыборкаСтрокТовары.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрокТовары.СуммаНДС)), Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ, 2);
            СуммаНДС    = Окр (ВыборкаСтрокТовары.СуммаНДС, 2);
            СуммаБезНДС   = Окр(СуммаСНДС   - СуммаНДС,Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
            //Цена        = Окр(СуммаБезНДС/?(ВыборкаСтрокТовары.Количество=0,1,ВыборкаСтрокТовары.Количество), 0, 1);
            
            ОбластьМакета.Параметры.Цена        = Окр(ВыборкаСтрокТовары.Цена - ВыборкаСтрокТовары.Цена * ВыборкаСтрокТовары.ПроцентСкидкиНаценки / 100, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ, 2);
            ОбластьМакета.Параметры.Цена = УправлениеФормамиУНФРБСервер.ФорматСумм(ОбластьМакета.Параметры.Цена, Шапка.ВалютаДокумента);
            ОбластьМакета.Параметры.СуммаБезНДС = УправлениеФормамиУНФРБСервер.ФорматСумм(СуммаБезНДС, Шапка.ВалютаДокумента);
 
            ОбластьМакета.Параметры.СуммаСНДС = УправлениеФормамиУНФРБСервер.ФорматСумм(СуммаСНДС, Шапка.ВалютаДокумента);
            
            //***
            Если ВыборкаСтрокТовары.РегистрироватьКакУслугу Тогда
               ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ПредставлениеУслуги;   
               ОбластьМакета.Параметры.Количество = 1;
               ОбластьМакета.Параметры.Цена = ВыборкаСтрокТовары.Сумма;
            КонецЕсли;            
            //**

            
            ТабДокумент.Вывести(ОбластьМакета);
            
            ИтогоСумма       = ИтогоСумма    + СуммаБезНДС;
            ИтогоНДС         = ИтогоНДС      + СуммаНДС;
            ИтогоСуммаСНДС  = ИтогоСуммаСНДС+ СуммаСНДС;
            
         КонецЦикла;
         
         // Вывести Итого
         ОбластьМакета = Макет.ПолучитьОбласть("Итого");
         
         ОбластьМакета.Области.ИтогоСумма.Формат    = УправлениеФормамиУНФРБСервер.ФорматСумм(ИтогоСумма, Шапка.ВалютаДокумента);
         ОбластьМакета.Области.ИтогоНДС.Формат       = УправлениеФормамиУНФРБСервер.ФорматСумм(ИтогоНДС, Шапка.ВалютаДокумента);
         ОбластьМакета.Области.ИтогоСуммаСНДС.Формат = УправлениеФормамиУНФРБСервер.ФорматСумм(ИтогоСуммаСНДС, Шапка.ВалютаДокумента);
         ИтогоСуммаСНДС   = Окр(ИтогоСуммаСНДС,2);// для прописи
         ИтогоНДС      = Окр(ИтогоНДС,2);
                  
         //***
         //ОбластьМакета.Параметры.ИтогоСумма      = УправлениеФормамиУНФРБСервер.ФорматСумм(ИтогоСумма, Шапка.ВалютаДокумента);
         //ОбластьМакета.Параметры.ИтогоНДС      = УправлениеФормамиУНФРБСервер.ФорматСумм(ИтогоНДС, Шапка.ВалютаДокумента);
         //ОбластьМакета.Параметры.ИтогоСуммаСНДС   = УправлениеФормамиУНФРБСервер.ФорматСумм(ИтогоСуммаСНДС, Шапка.ВалютаДокумента);
         
         ОбластьМакета.Параметры.ИтогоСумма      = ИтогоСумма;
         ОбластьМакета.Параметры.ИтогоНДС      = ИтогоНДС;
         ОбластьМакета.Параметры.ИтогоСуммаСНДС   = ИтогоСуммаСНДС;
         //**
         ТабДокумент.Вывести(ОбластьМакета);
         
         //***Вывод по срокам
         Если ЗапросСроки.Количество()>0 Тогда
            ОбластьМакета = Макет.ПолучитьОбласть("ШапкаСроки");
            ТабДокумент.Вывести(ОбластьМакета);
            
            ОбластьМакета = Макет.ПолучитьОбласть("СтрокаСроки");
            Для каждого ВыборкаСтрокСроки Из ЗапросСроки Цикл
               ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокСроки);
               ТабДокумент.Вывести(ОбластьМакета);
            КонецЦикла;
         КонецЕсли;
         // Вывести подвал
         ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
         ОбластьМакета.Параметры.ИтогоНДСП = УправлениеНебольшойФирмойСервер.СформироватьСуммуПрописью(ИтогоНДС, Шапка.ВалютаДокумента);
         ОбластьМакета.Параметры.ИтогоСуммаСНДСП = УправлениеНебольшойФирмойСервер.СформироватьСуммуПрописью(ИтогоСуммаСНДС, Шапка.ВалютаДокумента);
         
         //***
         Если ИтогоНДС = 0 Тогда
            ОбластьМакета.Параметры.ИтогоНДСП = "Без НДС (на основании гл.34 раздела VII Особенной Части Налогового Кодекса РБ)."
         КонецЕсли;
         //**
         
         Руководители = УправлениеНебольшойФирмойСервер.ОтветственныеЛицаОрганизационнойЕдиницы(Шапка.Руководители, Шапка.ДатаДокумента);
         Руководитель = Руководители.ФИОРуководителя;
         Бухгалтер    = Руководители.ФИОГлавногоБухгалтера;
         
         ОбластьМакета.Параметры.Руководитель = Руководитель;
         //***
         //ОбластьМакета.Параметры.ГлБухгалтер    = Бухгалтер;         
         //**
         
         //***
         Если ТабличныйДокумент.Подпись Тогда
            ДанныеКартинки = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Шапка.Организация.ФайлФаксимильнаяПечать);
            Если ЗначениеЗаполнено(ДанныеКартинки.ДвоичныеДанные) Тогда
               ОбластьМакета.Рисунки.ФаксимильнаяПечать.Картинка = Новый Картинка(ДанныеКартинки.ДвоичныеДанные);            
            КонецЕсли; 
         КонецЕсли;
         //**
         
         ТабДокумент.Вывести(ОбластьМакета);
                  
      КонецЕсли;
      
      Если ПечататьПротокол Тогда// Печать протокола согласования цен
         // Выводим шапку накладной
         ОбластьМакета   = Макет.ПолучитьОбласть("ШапкаП");
         ОбластьМакета.Параметры.Заполнить(Шапка);
         
         ОбластьМакета.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.НомерДокумента, Истина, Истина);
         ОбластьМакета.Параметры.ДатаДокумента  = Формат(Шапка.ДатаДокумента, "ДФ=""дд ММММ гггг""");
         СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, ,);
         СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.ДатаДокумента, ,);
         ОбластьМакета.Параметры.ЮрАдресОрганизации = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ЮридическийАдрес,");
         ОбластьМакета.Параметры.ТелефонОрганизации = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "Телефоны,");
         ОбластьМакета.Параметры.ЮрАдресКонтрагента = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ЮридическийАдрес,");
         ОбластьМакета.Параметры.ТелефонКонтрагента = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "Телефоны,");
         
         ТабДокумент.Вывести(ОбластьМакета);
         
         Ном = 0;
         // Выводим строки
         ОбластьМакета   = Макет.ПолучитьОбласть("СтрокаП");
         Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
            
            Если ВыборкаСтрокТовары.ЕдиницаИзмерения = "--" Тогда
               Продолжить;// Цены на услуги в протоколе не отражаются
            КонецЕсли;
            
            Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
               Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
               Продолжить;
            КонецЕсли;
            
            Ном = Ном + 1;
            
            ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
            
            ОбластьМакета.Параметры.ТоварНаименование = УправлениеНебольшойФирмойСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаСтрокТовары.ТоварНаименование, ВыборкаСтрокТовары.Характеристика, ВыборкаСтрокТовары.Артикул);
            
            Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Содержание) Тогда

               ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.Содержание;
               
            КонецЕсли;

            ОбластьМакета.Параметры.Номер = Ном;
            
            //ОбластьМакета.Параметры.СтранаПроисхождения = СокрЛП(ВыборкаСтрокТовары.Страна);
            
            СуммаСНДС  = Окр((ВыборкаСтрокТовары.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрокТовары.СуммаНДС)),Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
            Количество = ВыборкаСтрокТовары.Количество;
            СуммаНДС   = Окр(ВыборкаСтрокТовары.СуммаНДС,Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
            Сумма      = Окр(ВыборкаСтрокТовары.Сумма,Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
            Цена       = Окр(ВыборкаСтрокТовары.Цена, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ,2);
            
            
            СтруктураДанных = Новый Структура;
            СтруктураДанных.Вставить("ВидЦен", Шапка.ВидЦен);
            СтруктураДанных.Вставить("ДатаОбработки", Шапка.ДатаДокумента);
            СтруктураДанных.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);
            СтруктураДанных.Вставить("Характеристика", ВыборкаСтрокТовары.Характеристика);
            СтруктураДанных.Вставить("Коэффициент", 1);
            СтруктураДанных.Вставить("ВалютаДокумента", Шапка.ВалютаДокумента);
            СтруктураДанных.Вставить("СуммаВключаетНДС", Шапка.СуммаВключаетНДС);
            
            ОбластьМакета.Параметры.Скидка = Окр(ВыборкаСтрокТовары.Цена * ВыборкаСтрокТовары.Количество - ВыборкаСтрокТовары.Сумма, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ, 2);
            ОбластьМакета.Параметры.ЦенаСоСкидкой = Окр(Цена - Цена * ВыборкаСтрокТовары.ПроцентСкидкиНаценки / 100, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ, 2);
            ОбластьМакета.Параметры.Цена = УправлениеФормамиУНФРБСервер.ФорматСумм(Цена, Шапка.ВалютаДокумента);
            ОбластьМакета.Параметры.Скидка = УправлениеФормамиУНФРБСервер.ФорматСумм(ОбластьМакета.Параметры.Скидка, Шапка.ВалютаДокумента);
            ОбластьМакета.Параметры.ЦенаСоСкидкой = УправлениеФормамиУНФРБСервер.ФорматСумм(ОбластьМакета.Параметры.ЦенаСоСкидкой, Шапка.ВалютаДокумента);
            ТабДокумент.Вывести(ОбластьМакета);
            
         КонецЦикла;
         
         // Вывести Подвал                  
         ОбластьМакета = Макет.ПолучитьОбласть("ПодвалП");
         ТабДокумент.Вывести(ОбластьМакета);
         
      КонецЕсли;
      УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);   
   КонецЦикла;

   ТабДокумент.АвтоМасштаб = Истина;
   
   Возврат ТабДокумент;

КонецФункции // ПечатьСчета()

Оффлайн LexaK

  • *****
  • Регистрация: 2012-05-16
  • Сообщений: 2564
  • РЕПУТАЦИЯ: 820
  • КПД: 32%
  • Профессия: Программист 1С
вообще такие длинные тексты, наверно лучше прикреплять, как вложенные файлы.

в вашем коде не нашел где в макет выводится СуммаНДС, попробуйте добавить такие строчки в вашу программу
    //это кусок вашего кода по формированию и выводу строки отчета
    ОбластьМакета.Параметры.Скидка = Окр(ВыборкаСтрокТовары.Цена * ВыборкаСтрокТовары.Количество - ВыборкаСтрокТовары.Сумма, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ, 2);
    ОбластьМакета.Параметры.ЦенаСоСкидкой = Окр(Цена - Цена * ВыборкаСтрокТовары.ПроцентСкидкиНаценки / 100, Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ, 2);
    ОбластьМакета.Параметры.Цена = УправлениеФормамиУНФРБСервер.ФорматСумм(Цена, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.Скидка = УправлениеФормамиУНФРБСервер.ФорматСумм(ОбластьМакета.Параметры.Скидка, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.ЦенаСоСкидкой = УправлениеФормамиУНФРБСервер.ФорматСумм(ОбластьМакета.Параметры.ЦенаСоСкидкой, Шапка.ВалютаДокумента);
   
    //добавьте эти строчки
    ОбластьМакета.Параметры.СуммаНДС = УправлениеФормамиУНФРБСервер.ФорматСумм(СуммаНДС , Шапка.ВалютаДокумента);
    Сообщить("СуммаНДС: " + СуммаНДС); //тестовая печать, в окне сообщений увидите реальное значение Суммы НДС, после отладки удалите,

    ТабДокумент.Вывести(ОбластьМакета);

Помогло? - Нажми СПАСИБО (под аватаром) !!!
                       :)

Оффлайн mixqn

  • *****
  • Регистрация: 2012-08-15
  • Сообщений: 1348
  • РЕПУТАЦИЯ: 167
  • КПД: 12%
  • Who is John Galt?
  • Профессия: Программист 1С
Шапка.ВалютаДокумента.ПорядокОкругленияДЧВ - тут какое значение?
вообще, код объемный, изучать его довольно трудоемко. еще раз посоветую воспользоваться отладчиком. установите точку останова и проверьте, что вы передаете в макет.
Добавлено: 01 Июл 2016, 13:31

ну или да, можно добавить вывод сообщения. по сути рекомендация аналогичная - нужно проверить, какое значение вы пытаетесь вывести в макет.

Оффлайн Валерий Жур

  • *
  • Регистрация: 2016-07-01
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
Спасибо, большое!
Провел отладку, значение передается 9,65 (верное)
Однако в макете все ровно 10.
Понимаю что проблема с настройкой ячейки (либо еще что-то)
Какие параметры рекомендуете  проверить ?

Оффлайн Kironten

  • *****
  • Регистрация: 2013-08-12
  • Сообщений: 906
  • РЕПУТАЦИЯ: 187
  • КПД: 21%
  • Профессия: Ученик 1С
Спасибо, большое!
Провел отладку, значение передается 9,65 (верное)
Однако в макете все ровно 10.
Понимаю что проблема с настройкой ячейки (либо еще что-то)
Какие параметры рекомендуете  проверить ?


Теги:
 

Как убрать с формы кнопку Файлы. её нет в конфигураторе

Автор feeltasteРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 155
Последний ответ 03 Мар 2021, 09:06
от antoneus
Как вывести в табличную часть формы ТекущуюДату?

Автор LedgikРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 428
Последний ответ 24 Фев 2019, 11:28
от Etherial
Как???? Получить значение элемента управляемой формы?

Автор tiberianРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1864
Последний ответ 23 Авг 2019, 09:01
от LexaK
Заполнение формы табличной части документа из справочника

Автор Funt432286Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 914
Последний ответ 09 Ноя 2017, 13:30
от ilyay
Открытие формы кнопкой

Автор SheriffРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 1082
Последний ответ 19 Фев 2018, 07:31
от Sheriff

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Последние вакансии

* Том 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
65 Сообщений
LexaK
62 Сообщений
antoneus antoneus
31 Сообщений
Ивашка
26 Сообщений
neek666
23 Сообщений
KATERINA 861
19 Сообщений
SSC
15 Сообщений
alexandr_ll
13 Сообщений
Алексей_1985_06
11 Сообщений
pouyo
8 Сообщений

* Кто онлайн

  • Точка Гостей: 173
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Инструменты

* Дополнительно

Поиск