Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 20:54

ВПФ_1137

Автор MineAllMine, 20 апр 2015, 17:50

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

MineAllMine

Всем доброго времени суток
После обновления на 3.0.39.60 началась ругань с внешней формой счета-фактуры выданной 1137
пишет

Поле Объекта не обнаружено (КППпоставщика)ui;;t;

подскажите, пожалуйста, куда копать
ЦитироватьФункция СведенияОВнешнейОбработке() Экспорт
   
   ПараметрыРегистрации = Новый Структура;
   
   МассивНазначений = Новый Массив;
   МассивНазначений.Добавить("Документ.СчетФактураВыданный");
   МассивНазначений.Добавить("Документ.СчетФактураПолученный");
   
   ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
   ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
   ПараметрыРегистрации.Вставить("Наименование", НСтр("ru = ' _ВПФ Счет фактура постановление'"));
   ПараметрыРегистрации.Вставить("Версия", "1.0");
   ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
   ПараметрыРегистрации.Вставить("Информация", НСтр("ru = ' _ВПФ Счет фактура постановление.'"));   
   ТаблицаКоманд = ПолучитьТаблицуКоманд();
   
   ДобавитьКоманду(ТаблицаКоманд,
      НСтр("ru = ' _ВПФ Счет фактура постановление 1137'"),
      " _ВПФ Счет фактура постановление 1137",
      "ВызовСерверногоМетода",
      Истина,
      "ПечатьMXL");
      
   ДобавитьКоманду(ТаблицаКоманд,
      НСтр("ru = ' _ВПФ Счет фактура постановление 451'"),
      " _ВПФ Счет фактура постановление 451",
      "ВызовСерверногоМетода",
      Истина,
      "ПечатьMXL");   
      
   ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
   
   Возврат ПараметрыРегистрации;
   
КонецФункции // СведенияОВнешнейОбработке()

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм,ОбъектыПечати, ПараметрыВывода) Экспорт

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


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


Функция ПечатьСчетовФактур(МассивОбъектов, ОбъектыПечати, ТекстЗапросаПоСчетамФактурам) Экспорт
   
   УстановитьПривилегированныйРежим(Истина);
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.АвтоМасштаб         = Истина;
   ТабДокумент.ПолеСверху         = 0;
   ТабДокумент.ПолеСнизу         = 0;
   ТабДокумент.ОриентацияСтраницы   = ОриентацияСтраницы.Ландшафт;
   
   СисИнфо = Новый СистемнаяИнформация;
   Если ПустаяСтрока(СисИнфо.ИнформацияПрограммыПросмотра) Тогда
      ТабДокумент.ПолеСлева          = 0;
      ТабДокумент.ПолеСправа         = 0;
   Иначе
      ТабДокумент.ПолеСлева          = 10;
      ТабДокумент.ПолеСправа         = 10;
   КонецЕсли;
   
   ТабДокумент.ИмяПараметровПечати   = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451";

   Макет = ПолучитьМакет("ПФ_MXL_СчетФактура451");

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
   Запрос.УстановитьПараметр("НачалоПримененияПостановления1137", УчетНДСБП.ПолучитьДатуНачалаДействияПостановления1137());
   Запрос.Текст   = ТекстЗапросаПоСчетамФактурам;
   Результаты      = Запрос.ВыполнитьПакет();

   ПервыйДокумент = Истина;

   ВыборкаСФ   = Результаты[0].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетФактура");
   
   ПлатежноРасчетныеДокументы   = Неопределено;
   Если Результаты.Количество() > 1 И НЕ Результаты[1].Пустой() Тогда
      ПлатежноРасчетныеДокументы   = Результаты[1].Выгрузить();
      ПлатежноРасчетныеДокументы.Индексы.Добавить("СчетФактура");
   КонецЕсли;
   
   ДанныеСчетаФактуры = Новый Структура("СчетФактура, ВидСчетаФактуры, Контрагент, ДоговорКонтрагента, ИспользуетсяПостановлениеНДС1137");
   ДанныеСчетаФактуры.ИспользуетсяПостановлениеНДС1137 = Ложь;
   
   Пока ВыборкаСФ.Следующий() Цикл

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

      // Запомним номер строки, с которой начали выводить текущий документ.
      НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;

      // Вывод шапки

      ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
      ДанныеШапки   = ПодготовитьДанныеШапкиСчетаФактуры(ВыборкаСФ, Реквизиты, ПлатежноРасчетныеДокументы);
      ОбластьМакета.Параметры.Заполнить(Реквизиты);
      ОбластьМакета.Параметры.Заполнить(ДанныеШапки);
      ПроставитьПрочеркиВПустыеПоляСчетаФактуры(ОбластьМакета);
      ТабДокумент.Вывести(ОбластьМакета);

      // Вывод заголовка таблицы

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

      // Вывод табличной части

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

      Для каждого СтрокаДокумента Из ТаблицаДокумента Цикл

         ОбластьМакета.Параметры.Заполнить(СтрокаДокумента);
         Если ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс Тогда
            ОбластьМакета.Параметры.СуммаБезНДС  = "--";
         КонецЕсли;   
         ПроставитьПрочеркиВПустыеПоляСчетаФактуры(ОбластьМакета);
         ТабДокумент.Вывести(ОбластьМакета);

      КонецЦикла;

      // Вывод итоговых сумм

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

      // Вывод подвала

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

      // В табличном документе зададим имя области, в которую был выведен объект.
      // Нужно для возможности печати покомплектно.
      УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент,
         НомерСтрокиНачало, ОбъектыПечати, ВыборкаСФ.СчетФактура);

   КонецЦикла;

   Возврат ТабДокумент;

КонецФункции

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

   КонецЦикла;

   Возврат ТабДокумент;

КонецФункции

Функция ТекстЗапросаПечатьСчетовФактур(ИспользуетсяПостановлениеНДС1137 = Истина, ДляУниверсальногоПередаточногоДокумента = Ложь) Экспорт

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

Функция ПодготовитьДанныеШапкиСчетаФактуры(ВыборкаСФ, Реквизиты, ПлатежноРасчетныеДокументы)

   ДанныеШапки = Новый Структура;

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

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

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

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

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

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

    Возврат ДанныеШапки;

КонецФункции

// Проставляет прочерки в незаполненных полях печатной формы счета-фактуры
//
Процедура ПроставитьПрочеркиВПустыеПоляСчетаФактуры(ОбластьМакета)

   Для т = 0 По ОбластьМакета.Параметры.Количество() - 1 Цикл

      ТекПараметр = ОбластьМакета.Параметры.Получить(т);

      Если (Найти(ТекПараметр, "Продавец:") <> 0)
         И (СокрЛП(ТекПараметр) = "Продавец:") Тогда
         ОбластьМакета.Параметры.Установить(т, "Продавец: ----");

      ИначеЕсли (Найти(ТекПараметр, "Адрес:") <> 0)
         И (СокрЛП(ТекПараметр) = "Адрес:") Тогда
         ОбластьМакета.Параметры.Установить(т, "Адрес: ----");

      ИначеЕсли (Найти(ТекПараметр, "Идентификационный номер продавца (ИНН):") <> 0)
         И (СокрЛП(ТекПараметр) = "Идентификационный номер продавца (ИНН):") Тогда
         ОбластьМакета.Параметры.Установить(т, "Идентификационный номер продавца (ИНН): ----");

      ИначеЕсли (Найти(ТекПараметр, "Грузоотправитель и его адрес:") <> 0)
         И (СокрЛП(ТекПараметр) = "Грузоотправитель и его адрес:") Тогда
         ОбластьМакета.Параметры.Установить(т, "Грузоотправитель и его адрес: ----");

      ИначеЕсли (Найти(ТекПараметр, "Грузополучатель и его адрес:") <> 0)
            И (СокрЛП(ТекПараметр) = "Грузополучатель и его адрес:") Тогда
         ОбластьМакета.Параметры.Установить(т, "Грузополучатель и его адрес: ----");

      ИначеЕсли (Найти(ТекПараметр, "К платежно-расчетному документу №") <> 0)
            И (СокрЛП(ТекПараметр) = "К платежно-расчетному документу №  от") Тогда
         ОбластьМакета.Параметры.Установить(т, "К платежно-расчетному документу № -- от --");

      ИначеЕсли (Найти(ТекПараметр, "Покупатель:") <> 0)
            И (СокрЛП(ТекПараметр) = "Покупатель:") Тогда
         ОбластьМакета.Параметры.Установить(т, "Покупатель: ----");

      ИначеЕсли (Найти(ТекПараметр, "Идентификационный номер покупателя (ИНН):") <> 0)
         И (СокрЛП(ТекПараметр) = "Идентификационный номер покупателя (ИНН):") Тогда
         ОбластьМакета.Параметры.Установить(т, "Идентификационный номер покупателя (ИНН): ----");

      ИначеЕсли НЕ ЗначениеЗаполнено(ТекПараметр) Тогда
         ОбластьМакета.Параметры.Установить(т, "--");

      КонецЕсли;

   КонецЦикла;

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

Процедура УстановкаМинимальныхПолейДляПечати(ТабличныйДокумент)

   // Принудительная установка минимальных полей
   Если ТабличныйДокумент.ПолеСлева < 10 Тогда
      ТабличныйДокумент.ПолеСлева = 10;
   КонецЕсли;
   
   // Проверка на веб-клиент
   СисИнфо = Новый СистемнаяИнформация;
   ЗначениеПоляСправа = ?(ПустаяСтрока(СисИнфо.ИнформацияПрограммыПросмотра), 5, 10);
      
   Если ТабличныйДокумент.ПолеСправа < ЗначениеПоляСправа Тогда
      ТабличныйДокумент.ПолеСправа = ЗначениеПоляСправа;
   КонецЕсли;

   Если ТабличныйДокумент.ПолеСверху < 5 Тогда
      ТабличныйДокумент.ПолеСверху = 5;
   КонецЕсли;

   Если ТабличныйДокумент.ПолеСнизу < 5 Тогда
      ТабличныйДокумент.ПолеСнизу = 5;
   КонецЕсли;    

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

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

Процедура ВывестиСчетФактуруВТабличныйДокумент(ТабДокумент, Макет, ВыборкаСФ, ЭтоУниверсальныйПередаточныйДокумент = Ложь)
   
   ТаблицаДокумента = ВыборкаСФ.ТаблицаДокумента;
   
   // Вывод шапки

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

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

   // Вывод заголовка таблицы

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

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

   ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ВместеСоСледующим = Истина;
   
   // Вывод итоговых сумм

   ОбластьМакета = Макет.ПолучитьОбласть("Итого");
   Если ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
      ИЛИ ВыборкаСФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
      ОбластьМакета.Параметры.ИтогоСтоимость = "--";
   Иначе
      ОбластьМакета.Параметры.ИтогоСтоимость = ТаблицаДокумента.Итог("Стоимость");
   КонецЕсли;
   
   Если НДСНеВыставляетя Тогда
      ОбластьМакета.Параметры.ИтогоСуммаНДС = "--";
   ИначеЕсли СчетФактураБезНДС Тогда
      ОбластьМакета.Параметры.ИтогоСуммаНДС = "без НДС";
   Иначе
      ОбластьМакета.Параметры.ИтогоСуммаНДС = ТаблицаДокумента.Итог("СуммаНДС");
   КонецЕсли;
   
   ОбластьМакета.Параметры.ИтогоВсего = ТаблицаДокумента.Итог("Всего");
   ТабДокумент.Вывести(ОбластьМакета);

   // Вывод подвала
   КоличествоЛистов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
      НСтр("ru = 'Документ составлен на%1%2 %3'"), Символы.ПС, КоличествоСтраниц,
      ОбщегоНазначенияБПКлиентСервер.ФормаМножественногоЧисла(
         НСтр("ru = 'листе'"), НСтр("ru = 'листах'"), НСтр("ru = 'листах'"), КоличествоСтраниц));
   
   ДанныеШапки.Вставить("КоличествоЛистов", КоличествоЛистов);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
   ОбластьМакета.Параметры.Заполнить(ДанныеШапки);
   ТабДокумент.Вывести(ОбластьМакета);
   
КонецПроцедуры

Функция ПодготовитьДанныеШапкиСчетаФактуры1137(ВыборкаСФ, Реквизиты, ПлатежноРасчетныеДокументы, ДополнитьДаннымиУПД)

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

   ДанныеШапки.Вставить("Поставщик", Реквизиты.Поставщик);

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

   ДанныеШапки.Вставить("КППпоставщика", КППпоставщика);
   
   СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Реквизиты.Покупатель, ВыборкаСФ.Дата);
   
   // Наименование покупателя
   ДанныеШапки.Вставить("Покупатель", Реквизиты.Покупатель);
   ДанныеШапки.Вставить("ПредставлениеПокупателя", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПокупателе, "НаименованиеДляПечатныхФорм,"));
   
   // Адрес покупателя
   ДанныеШапки.Вставить("АдресПокупателя", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес,"));
   
   // ИНН и КПП покупателя
   КППпокупателя = ?(ВыборкаСФ.ЭтоСчетФактураВыданный И ЗначениеЗаполнено(ВыборкаСФ.КППСчетаФактуры), ВыборкаСФ.КППСчетаФактуры, Реквизиты.КППпокупателя);
   ДанныеШапки.Вставить("ИННпокупателя", Реквизиты.ИННпокупателя);

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

КонецЕсли;

      Грузоотправитель = Реквизиты.Грузоотправитель;   
   Иначе
      Грузоотправитель = Неопределено;
      ПредставлениеГрузоотправителя = "--";
   КонецЕсли;
   ДанныеШапки.Вставить("Грузоотправитель", Грузоотправитель);
   ДанныеШапки.Вставить("ПредставлениеГрузоотправителя", ПредставлениеГрузоотправителя);

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

КонецФункции

// Возвращает структуру из 2 таблиц для печати счета-фактуры:
// - Реквизиты - реквизиты шапки
// - ТаблицаДокумента - строки табличных частей.
//   Если СФ по договору в у.е. печатается в рублях, таблица содержит суммы, соответствующие
//   суммам бухгалтерских проводок, то есть скорректированные с учетом курсов зачтенных авансов
//
// Параметры:
// ДокументОснование - ДокументСсылка
//   В модуле менеджера документа должна быть экспортная функция
//   ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц)
// СчетФактура - ДокументСсылка.СчетФактураВыданный - распечатываемый счет-фактура
//   Используется при печати счета-фактуры по документу ОказаниеУслуг
// ВидСчетаФактура - ПеречислениеСсылка.ВидСчетаФактурыВыставленного или .ВидСчетаФактурыПолученного - реквизит счета-фактуры
// ИспользуетсяПостановлениеНДС1137 - Булево - применяется ли на дату счета-фактуры Постановление 1137 от 26.12.2011 (Истина)
//   или применяется Постановление 914 (Ложь)
//
Функция ПодготовитьДанныеДляПечатиСчетовФактур(ДокументОснование, ДанныеСчетаФактуры) Экспорт

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

   НомераТаблиц = Новый Структура;

   Запрос.Текст = Документы[ДокументОснование.Метаданные().Имя].ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц)
      + ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц);
   
   Результат = Запрос.ВыполнитьПакет();

   Если Результат[НомераТаблиц.Реквизиты].Пустой()
      ИЛИ Результат[НомераТаблиц.ТаблицаДокумента].Пустой() Тогда
      
      ДанныеДляПечати.Вставить("Реквизиты",        Неопределено);
      ДанныеДляПечати.Вставить("ТаблицаДокумента", Неопределено);

      Возврат ДанныеДляПечати;
      
   КонецЕсли;   
         
   ТаблицаРеквизиты = Результат[НомераТаблиц.Реквизиты].Выгрузить();
   ТаблицаДокумента = Результат[НомераТаблиц.ТаблицаДокумента].Выгрузить();
   Реквизиты = ТаблицаРеквизиты[0];

   РасчетыВУсловныхЕдиницах = ?(ТипЗнч(Реквизиты.РасчетыВУсловныхЕдиницах) = Тип("Булево"), Реквизиты.РасчетыВУсловныхЕдиницах, Ложь);
   
   НуженПересчетВРубли = РасчетыВУсловныхЕдиницах
      И Реквизиты.Валюта <> ВалютаРеглУчета
      И (ДанныеСчетаФактуры.ИспользуетсяПостановлениеНДС1137
      ИЛИ УчетнаяПолитика.ФормироватьСчетФактуруПоУЕвРублях(Реквизиты.Организация, Реквизиты.ДатаОснования));

   Если НуженПересчетВРубли Тогда
      ТаблицаРеквизиты.ЗаполнитьЗначения(ВалютаРеглУчета, "Валюта");   
   КонецЕсли;

   Для каждого СтрокаДокумента Из ТаблицаДокумента Цикл
      
      Если НуженПересчетВРубли Тогда
         
         СтрокаДокумента.Всего       = СтрокаДокумента.ВсегоРуб;
         СтрокаДокумента.СуммаНДС    = СтрокаДокумента.НДСРуб;
         
         СтрокаДокумента.Цена = 0;
         
      КонецЕсли;   
      
      // Определяем окончательную сумму без НДС с учетом всех корректировок и цену
      СтрокаДокумента.СуммаБезНДС = СтрокаДокумента.Всего - СтрокаДокумента.СуммаНДС;
   
      Если СтрокаДокумента.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
          ИЛИ СтрокаДокумента.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
          ИЛИ СтрокаДокумента.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда
         СтрокаДокумента.СуммаБезНДС = СтрокаДокумента.Всего;
         Если СтрокаДокумента.Количество <> 0 Тогда
            СтрокаДокумента.Цена = Окр(СтрокаДокумента.СуммаБезНДС / СтрокаДокумента.Количество, 2);
         КонецЕсли;
      КонецЕсли;
      
      Если НЕ ЗначениеЗаполнено(СтрокаДокумента.ЕдиницаИзмерения) Тогда
         СтрокаДокумента.Количество = 0;
         СтрокаДокумента.Цена = 0;
      ИначеЕсли СтрокаДокумента.Количество = 0 Тогда
         СтрокаДокумента.ЕдиницаИзмерения = "";
         СтрокаДокумента.Цена = 0;
      ИначеЕсли СтрокаДокумента.Цена = 0 Тогда
         СтрокаДокумента.Цена = Окр(СтрокаДокумента.СуммаБезНДС / СтрокаДокумента.Количество, 2);
      КонецЕсли;
      
   КонецЦикла;
   
   ТаблицаРеквизиты.Колонки.Добавить("ДокументОснование", Документы.ТипВсеСсылки());
   ТаблицаРеквизиты.ЗаполнитьЗначения(ДокументОснование, "ДокументОснование");
   
   ДанныеДляПечати.Вставить("Реквизиты",        ТаблицаРеквизиты);
   ДанныеДляПечати.Вставить("ТаблицаДокумента", ТаблицаДокумента);

   Возврат ДанныеДляПечати;

КонецФункции

Процедура ДозаполнитьСтрокуСчетаФактуры1137(ОбластьМакета, ВидСчетаФактуры)

   Если ОбластьМакета.Параметры.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
      ОбластьМакета.Параметры.СтавкаНДС = "без НДС";
      ОбластьМакета.Параметры.СуммаНДС  = "без НДС";
   КонецЕсли;
      
   // Проставляем прочерки в незаполненные графы в соответствии с Постановлением 1137
   Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
      ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
      
      ОбластьМакета.Параметры.ЕдиницаИзмерения    = "--";
      ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
      
      ОбластьМакета.Параметры.Количество = "--";
      ОбластьМакета.Параметры.Цена       = "--";
      ОбластьМакета.Параметры.Стоимость  = "--";
      ОбластьМакета.Параметры.Акциз      = "--";
      
      ОбластьМакета.Параметры.СтранаПроисхожденияКод = "--";
      ОбластьМакета.Параметры.ПредставлениеСтраны    = "--";
      ОбластьМакета.Параметры.ПредставлениеГТД       = "--";
      
   Иначе
      
      Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмерения) Тогда
         ОбластьМакета.Параметры.ЕдиницаИзмерения    = "--";
         ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
      КонецЕсли;
      Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмеренияКод) Тогда
         ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
      КонецЕсли;
      Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.Количество) Тогда
         ОбластьМакета.Параметры.Количество = "--";
      КонецЕсли;
      Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.Цена) Тогда
         ОбластьМакета.Параметры.Цена = "--";
      КонецЕсли;
      Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ПредставлениеСтраны) Тогда
         ОбластьМакета.Параметры.СтранаПроисхожденияКод = "--";
         ОбластьМакета.Параметры.ПредставлениеСтраны    = "--";
         ОбластьМакета.Параметры.ПредставлениеГТД       = "--";
      КонецЕсли;
      
   КонецЕсли;

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

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

Функция ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц)

   НомераТаблиц.Вставить("ТаблицаДокумента", НомераТаблиц.Количество());

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

   Возврат ТекстЗапроса + ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета();

КонецФункции

mashencev_anton

Поле Объекта не обнаружено (КППпоставщика)ui;;t;

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

MineAllMine

Цитата: mashencev_anton от 20 апр 2015, 22:18
Поле Объекта не обнаружено (КППпоставщика)ui;;t;

Значит этот реквизит либо переименовали либо удалили вообще в новой версии. посмотри как теперь этот реквизит называется
как я понимаю это где-то в конфигурации искать надо?

ls600

Вам нужно сравнить старую версию и новую версию конфигурации. и смотреть отличие.

Теги:
Рейтинг@Mail.ru

Поиск