Имя: Пароль:
1C
 
ВПФ работает через форму, но не работает при загрузке в конфу
0 Max57
 
15.11.23
10:28
Всем привет. Делаю сортировку в печатной форме УПД в КА 2.5.
При работе через форму все работает, а если загрузить в конфигурацию появляется такая ошибка:

"В обработчике печати не был сформирован табличный документ для: УПДВнешний
{ОбщийМодуль.УправлениеПечатью.Модуль(1728)}:ВызватьИсключение(ТекстСообщенияОбОшибке);
{ОбщаяФорма.ПечатьДокументов.Форма(530)}:УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
{ОбщаяФорма.ПечатьДокументов.Форма(49)}:КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(236)}:ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Форма);
{ОбщийМодуль.УправлениеПечатьюКлиент.Модуль(143)}:ВыполнитьОбработкуОповещения(ОписаниеПроцедурыЗавершения, СписокДокументов);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(32)}:УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыНазначения, Форма);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(491)}:МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы(
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(269)}:ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}:МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}:ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(257)}:ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(35)}:ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(8943)}:ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);"

Подскажите, пожалуйста, в чем ошибка и как её исправить? В процедуре печать?
Код прикладываю:


// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ

Функция СведенияОВнешнейОбработке() экспорт
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); //Указываем документ к которому делаем внешнюю печ. форму
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "УПД_ССортировкой"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
    ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "Эту ВПФ мы сделали для того что бы посмотреть возможности БСП ");
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд, "УПД (с сортировкой как в распоряжении)", "УПДВнешний", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    
    Возврат ПараметрыРегистрации;
    //**********************************************************************************************************8
    
КонецФункции
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ
// Формирует структуру с параметрами регистрации регистрации обработки в информационной базе
//
// Параметры:
//    ОбъектыНазначенияФормы - Массив - Массив строк имен объектов метаданных в формате:
//                    <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>].
//                    или строка с именем объекта метаданных
//    НаименованиеОбработки - строка - Наименование обработки, которым будет заполнено наименование элемента справочника по умолчанию.
//                            Необязательно, по умолчанию синоним или представление объекта
//    Информация  - строка - Краткая информация или описание обработки.
//                            Необязательно, по умолчанию комментарий объекта
//    Версия - строка - Версия обработки в формате “<старший номер>.<младший номер>” используется при загрузке обработок в информационную базу.
//
//
// Возвращаемое значение:
//        Структура
//
Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0.0")
    
    Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
        ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
        ОбъектыНазначенияФормы = Новый Массив;
        ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
    КонецЕсли;
    
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы);
    
    Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда
        НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление();
    КонецЕсли;
    ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);
    
    Если Не ЗначениеЗаполнено(Информация) Тогда
        Информация = ЭтотОбъект.Метаданные().Комментарий;
    КонецЕсли;
    ПараметрыРегистрации.Вставить("Информация", Информация);
    
    ПараметрыРегистрации.Вставить("Версия", Версия);
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

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

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

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

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


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

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

    // ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
    Если ЕстьЭлектронноеАктирование Тогда
        Запрос.Текст = Запрос.Текст + ЭлектронноеАктированиеЕИСУТ.ТекстЗапросаДанныеДляПечатиСчетовФактур("МассивОснований");
        Запрос.УстановитьПараметр("ГосударственныйКонтрактЕИС", Контракт);
        Если ТипЗнч(МассивОснований[0]) = Тип("ДокументСсылка.СчетФактураВыданный")
                Или ТипЗнч(МассивОснований[0]) = Тип("ДокументСсылка.СчетФактураВыданныйАванс") Тогда
            Запрос.УстановитьПараметр("ЭтапИсполненияКонтрактаЕИС", МассивОснований[0].ДокументОснование.ЭтапГосконтрактаЕИС);
        Иначе
            Запрос.УстановитьПараметр("ЭтапИсполненияКонтрактаЕИС", МассивОснований[0].ЭтапГосконтрактаЕИС);            
        КонецЕсли;        
    КонецЕсли;
    // Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

    
    МассивРезультатов         = Запрос.ВыполнитьПакет();
    КоличествоРезультатов     = МассивРезультатов.Количество();


    // ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
    Если ЕстьЭлектронноеАктирование Тогда    
        КоличествоРезультатов     = КоличествоРезультатов - 5;
    КонецЕсли;
    // Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

    
    Если ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда
        РезультатПоКонтрагентам   = МассивРезультатов[КоличествоРезультатов - 10];
        РезультатПоШапке          = МассивРезультатов[КоличествоРезультатов - 9];
        РезультатПоИсходнымДанным = МассивРезультатов[КоличествоРезультатов - 8];
        РезультатПоТабличнойЧасти = МассивРезультатов[КоличествоРезультатов - 7];
        
        МаркировкаДо = МассивРезультатов[КоличествоРезультатов - 5].Выгрузить();
        МаркировкаДо = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(МаркировкаДо);
        Если МаркировкаДо.Количество() = 0 Тогда // Коды переданы через документ прямого обмена.
            Маркировка = МаркировкаДо.СкопироватьКолонки();
        Иначе
            Маркировка = МассивРезультатов[КоличествоРезультатов - 6].Выгрузить();
            Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка);
        КонецЕсли;
        
        РезультатПоПоставщикам    = МассивРезультатов[КоличествоРезультатов - 4];
        
        Прослеживаемость = МассивРезультатов[КоличествоРезультатов - 2];
        ПрослеживаемыеКомплектующие = УчетПрослеживаемыхТоваровЛокализация.ПрослеживаемыеКомплектующиеДляПечатиДанных(
                                        МассивРезультатов[КоличествоРезультатов - 1]);
        
        СтруктураДанныхДляПечати = Новый Структура;
        СтруктураДанныхДляПечати.Вставить("РезультатПоШапке"              , РезультатПоШапке);
        СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти"     , РезультатПоТабличнойЧасти);
        СтруктураДанныхДляПечати.Вставить("РезультатПоИсходнымДанным"     , РезультатПоИсходнымДанным);
        СтруктураДанныхДляПечати.Вставить("РезультатПоКонтрагентам"       , РезультатПоКонтрагентам);
        СтруктураДанныхДляПечати.Вставить("Маркировка"                    , Маркировка);
        СтруктураДанныхДляПечати.Вставить("МаркировкаДо"                  , МаркировкаДо);
        СтруктураДанныхДляПечати.Вставить("РезультатПоПоставщикам"        , РезультатПоПоставщикам);
        СтруктураДанныхДляПечати.Вставить("НомерСформированВСчетеФактуре" , Истина);
        СтруктураДанныхДляПечати.Вставить("Прослеживаемость"              , Прослеживаемость);
        СтруктураДанныхДляПечати.Вставить("ПрослеживаемыеКомплектующие"   , ПрослеживаемыеКомплектующие);
        
    Иначе
        РезультатПоКонтрагентам   = МассивРезультатов[КоличествоРезультатов - 9];
        РезультатПоШапке          = МассивРезультатов[КоличествоРезультатов - 8];
        РезультатПоИсходнымДанным = МассивРезультатов[КоличествоРезультатов - 7];
        РезультатПоТабличнойЧасти = МассивРезультатов[КоличествоРезультатов - 6];
        
        Маркировка                = МассивРезультатов[КоличествоРезультатов - 5].Выгрузить();
        Маркировка                = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка);
        
        РезультатПоПоставщикам    = МассивРезультатов[КоличествоРезультатов - 4];
        
        Прослеживаемость = МассивРезультатов[КоличествоРезультатов - 2];
        ПрослеживаемыеКомплектующие = УчетПрослеживаемыхТоваровЛокализация.ПрослеживаемыеКомплектующиеДляПечатиДанных(
                                        МассивРезультатов[КоличествоРезультатов - 1]);
        
        СтруктураДанныхДляПечати = Новый Структура;
        СтруктураДанныхДляПечати.Вставить("РезультатПоШапке"              , РезультатПоШапке);
        СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти"     , РезультатПоТабличнойЧасти);
        СтруктураДанныхДляПечати.Вставить("РезультатПоИсходнымДанным"     , РезультатПоИсходнымДанным);
        СтруктураДанныхДляПечати.Вставить("РезультатПоКонтрагентам"       , РезультатПоКонтрагентам);
        СтруктураДанныхДляПечати.Вставить("Маркировка"                    , Маркировка);
        СтруктураДанныхДляПечати.Вставить("РезультатПоПоставщикам"        , РезультатПоПоставщикам);
        СтруктураДанныхДляПечати.Вставить("НомерСформированВСчетеФактуре" , Истина);
        СтруктураДанныхДляПечати.Вставить("Прослеживаемость"              , Прослеживаемость);
        СтруктураДанныхДляПечати.Вставить("ПрослеживаемыеКомплектующие"   , ПрослеживаемыеКомплектующие);
    
    КонецЕсли;
    
    Если ЗаполнятьПлатежноРасчетныеДокументы Тогда
        СтруктураДанныхДляПечати.Вставить("ПлатежноРасчетныеДокументы", ПлатежноРасчетныеДокументы);
    КонецЕсли;


    // ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
    Если ЕстьЭлектронноеАктирование Тогда    
        ЭлектронноеАктированиеЕИСУТ.ПоместитьРезультатВыполненияЗапросаВДанныеДляПечати(
            МассивРезультатов, СтруктураДанныхДляПечати, КоличествоРезультатов);
    КонецЕсли;
    // Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

    
    Возврат СтруктураДанныхДляПечати;
    
КонецФункции

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


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

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

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

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

Процедура ЗаполнитьРеквизитыПодвалаУПД(ОбластьПодвала, ДанныеПечати, СведенияОбОрганизации, ДанныеКонтрагентов)
    
    ОбластьПодвала.Параметры.Заполнить(ДанныеПечати);
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("ФИОРуководителя", ДанныеПечати.Руководитель);
    Если СведенияОбОрганизации.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
        СтруктураПараметров.Вставить("ФИОРуководителяОрганизации", ДанныеПечати.Руководитель);
        СтруктураПараметров.Вставить("ФИОГлавногоБухгалтера", ДанныеПечати.ГлавныйБухгалтер);
    Иначе
        СтруктураПараметров.Вставить("ФИОПБОЮЛ", ДанныеПечати.Руководитель);
        СтруктураПараметров.Вставить("Свидетельство", СведенияОбОрганизации.Свидетельство);
    КонецЕсли;
    
    СтруктураПараметров.Вставить("ФИОКладовщика", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Кладовщик, ДанныеПечати.Дата));
    СтруктураПараметров.Вставить("ДолжностьКладовщика", ДанныеПечати.ДолжностьКладовщика);
    
    ПолнаяДатаДокумента = СтрЗаменить(Формат(ДанныеПечати.Дата, "ДЛФ=DD"),НСтр("ru = 'г.'", Метаданные.Языки.Русский.КодЯзыка),"");
    ДлинаСтроки = СтрДлина(ПолнаяДатаДокумента);
    ПозицияРазделителя = СтрНайти(ПолнаяДатаДокумента, " ");
    ПредставлениеДаты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='""%1"" %2года'", Метаданные.Языки.Русский.КодЯзыка),
        Лев(ПолнаяДатаДокумента, ПозицияРазделителя -1),
        Прав(ПолнаяДатаДокумента, ДлинаСтроки - ПозицияРазделителя));
    
    СтруктураПараметров.Вставить("ДатаДокумента", ПредставлениеДаты);
    
    ИННПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ИНН,", Ложь);
    Если ЗначениеЗаполнено(ДанныеПечати.КПППоставщика) Тогда
        ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН/КПП %2/%3'", Метаданные.Языки.Русский.КодЯзыка),
            СведенияОбОрганизации.ПолноеНаименование,
            ИННПоставщика,
            ДанныеПечати.КПППоставщика);
    ИначеЕсли ЗначениеЗаполнено(ИННПоставщика) Тогда
        ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН %2'", Метаданные.Языки.Русский.КодЯзыка),
            СведенияОбОрганизации.ПолноеНаименование,
            ИННПоставщика);
    Иначе
        ПредставлениеОрганизации = СведенияОбОрганизации.ПолноеНаименование;
    КонецЕсли;
    СтруктураПараметров.Вставить("ПредставлениеОрганизации", ПредставлениеОрганизации);
    
    ТаблицаКонтрагентов = ТаблицаКонтрагентовСчетаФактуры(ДанныеПечати, ДанныеКонтрагентов);
    ПредставлениеКонтрагента    = "";
    
    Для Каждого СтрокаТаблицы Из ТаблицаКонтрагентов Цикл
        СведенияОПокупателе = СтрокаТаблицы.СведенияОПокупателе;
        ПолноеНаименование = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование", Ложь);
        ИННПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ИНН", Ложь);
        Если Не ПустаяСтрока(СтрокаТаблицы.КПП) Тогда
            ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru='%1; %2, ИНН/КПП %3/%4'", Метаданные.Языки.Русский.КодЯзыка),
                ПредставлениеКонтрагента,
                ПолноеНаименование,
                ИННПокупателя,
                СтрокаТаблицы.КПП);
        ИначеЕсли ЗначениеЗаполнено(ИННПокупателя) Тогда
            ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru='%1; %2, ИНН %3'", Метаданные.Языки.Русский.КодЯзыка),
                ПредставлениеКонтрагента,
                ПолноеНаименование,
                ИННПокупателя);
        Иначе
            ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru='%1; %2'"),
                ПредставлениеКонтрагента,
                ПолноеНаименование);
        КонецЕсли;
    
    КонецЦикла;
    СтруктураПараметров.Вставить("ПредставлениеКонтрагента", Сред(ПредставлениеКонтрагента, 3));
    
    Если ЗначениеЗаполнено(ДанныеПечати.ДоверенностьНомер) И ЗначениеЗаполнено(ДанныеПечати.ДоверенностьДата)
        И (ЗначениеЗаполнено(ДанныеПечати.ДоверенностьВыдана) Или ЗначениеЗаполнено(ДанныеПечати.ДоверенностьЛицо)) Тогда
        
        ТекстОснования = СокрЛП(ДанныеПечати.Основание) + "; "
            + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'по доверенности №%1 от %2, выданной %3 %4'", Метаданные.Языки.Русский.КодЯзыка),
                ДанныеПечати.ДоверенностьНомер,
                Формат(ДанныеПечати.ДоверенностьДата, "ДЛФ=DD"),
                ДанныеПечати.ДоверенностьВыдана,
                ДанныеПечати.ДоверенностьЛицо);
        СтруктураПараметров.Вставить("Основание", ТекстОснования);
        
    КонецЕсли;
    
    ОбластьПодвала.Параметры.Заполнить(СтруктураПараметров);
    
КонецПроцедуры

Процедура ЗаполнитьРеквизитыПодвалаУПД2_5(ОбластьПодвала, ОбластьПодвалаНакладной, ДанныеПечати, СведенияОбОрганизации, ДанныеКонтрагентов)
    
    ОбластьПодвалаНакладной.Параметры.Заполнить(ДанныеПечати);
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("ФИООтветственного", ДанныеПечати.Руководитель);
    Если СведенияОбОрганизации.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
        СтруктураПараметров.Вставить("ФИОРуководителя", ДанныеПечати.Руководитель);
        СтруктураПараметров.Вставить("ФИОГлавногоБухгалтера", ДанныеПечати.ГлавныйБухгалтер);
    Иначе
        СтруктураПараметров.Вставить("ФИОПБОЮЛ", ДанныеПечати.Руководитель);
        СтруктураПараметров.Вставить("Свидетельство", СведенияОбОрганизации.Свидетельство);
    КонецЕсли;
    
    ОбластьПодвала.Параметры.Заполнить(СтруктураПараметров);
        
    СтруктураПараметров.Вставить("ФИОКладовщика", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Кладовщик, ДанныеПечати.Дата));
    СтруктураПараметров.Вставить("ДолжностьКладовщика", ДанныеПечати.ДолжностьКладовщика);
    СтруктураПараметров.Вставить("ДолжностьОтветственного", ДанныеПечати.ДолжностьРуководителя);
    
    ПолнаяДатаДокумента = СтрЗаменить(Формат(ДанныеПечати.Дата, "ДЛФ=DD"),НСтр("ru = 'г.'", Метаданные.Языки.Русский.КодЯзыка),"");
    ДлинаСтроки = СтрДлина(ПолнаяДатаДокумента);
    ПозицияРазделителя = СтрНайти(ПолнаяДатаДокумента, " ");
    ПредставлениеДаты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='""%1"" %2года'", Метаданные.Языки.Русский.КодЯзыка),
        Лев(ПолнаяДатаДокумента, ПозицияРазделителя -1),
        Прав(ПолнаяДатаДокумента, ДлинаСтроки - ПозицияРазделителя));
    
    СтруктураПараметров.Вставить("ДатаОтгрузкиПередачи", ПредставлениеДаты);
    
    ИННПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ИНН,", Ложь);
    Если ЗначениеЗаполнено(ДанныеПечати.КПППоставщика) Тогда
        ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН/КПП %2/%3'", Метаданные.Языки.Русский.КодЯзыка),
            СведенияОбОрганизации.ПолноеНаименование,
            ИННПоставщика,
            ДанныеПечати.КПППоставщика);
    ИначеЕсли ЗначениеЗаполнено(ИННПоставщика) Тогда
        ПредставлениеОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, ИНН %2'", Метаданные.Языки.Русский.КодЯзыка),
            СведенияОбОрганизации.ПолноеНаименование,
            ИННПоставщика);
    Иначе
        ПредставлениеОрганизации = СведенияОбОрганизации.ПолноеНаименование;
    КонецЕсли;
    СтруктураПараметров.Вставить("ПредставлениеОрганизации", ПредставлениеОрганизации);
    
    ТаблицаКонтрагентов = ТаблицаКонтрагентовСчетаФактуры(ДанныеПечати, ДанныеКонтрагентов);
    ПредставлениеКонтрагента    = "";
    
    Для Каждого СтрокаТаблицы Из ТаблицаКонтрагентов Цикл
        СведенияОПокупателе = СтрокаТаблицы.СведенияОПокупателе;
        ПолноеНаименование = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование", Ложь);
        ИННПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ИНН", Ложь);
        Если Не ПустаяСтрока(СтрокаТаблицы.КПП) Тогда
            ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru='%1; %2, ИНН/КПП %3/%4'", Метаданные.Языки.Русский.КодЯзыка),
                ПредставлениеКонтрагента,
                ПолноеНаименование,
                ИННПокупателя,
                СтрокаТаблицы.КПП);
        ИначеЕсли ЗначениеЗаполнено(ИННПокупателя) Тогда
            ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru='%1; %2, ИНН %3'", Метаданные.Языки.Русский.КодЯзыка),
                ПредставлениеКонтрагента,
                ПолноеНаименование,
                ИННПокупателя);
        Иначе
            ПредставлениеКонтрагента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru='%1; %2'"),
                ПредставлениеКонтрагента,
                ПолноеНаименование);
        КонецЕсли;
    
    КонецЦикла;
    СтруктураПараметров.Вставить("ПредставлениеКонтрагента", Сред(ПредставлениеКонтрагента, 3));
    
    Если ЗначениеЗаполнено(ДанныеПечати.ДоверенностьНомер) И ЗначениеЗаполнено(ДанныеПечати.ДоверенностьДата)
        И (ЗначениеЗаполнено(ДанныеПечати.ДоверенностьВыдана) Или ЗначениеЗаполнено(ДанныеПечати.ДоверенностьЛицо)) Тогда
        
        ТекстОснования = СокрЛП(ДанныеПечати.Основание) + "; "
            + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'по доверенности №%1 от %2, выданной %3 %4'", Метаданные.Языки.Русский.КодЯзыка),
                ДанныеПечати.ДоверенностьНомер,
                Формат(ДанныеПечати.ДоверенностьДата, "ДЛФ=DD"),
                ДанныеПечати.ДоверенностьВыдана,
                ДанныеПечати.ДоверенностьЛицо);
        СтруктураПараметров.Вставить("Основание", ТекстОснования);
        
    КонецЕсли;
    
    ОбластьПодвалаНакладной.Параметры.Заполнить(СтруктураПараметров);
    
КонецПроцедуры

// Параметры:
//     ТабличныйДокумент - ТабличныйДокумент
//     ДанныеДляПечати - Структура:
//         * РезультатПоШапке             - РезультатЗапроса
//         * РезультатПоТабличнойЧасти     - РезультатЗапроса
//         * РезультатПоКонтрагентам     - РезультатЗапроса
//         * РезультатПоИсходнымДанным     - РезультатЗапроса
//         * РезультатПоПоставщикам     - РезультатЗапроса
//    ОбъектыПечати - СписокЗначений - список объектов печати
//
Процедура ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати) Экспорт
    
    ВыводитьСерии = Константы.ВыводитьСерииВПечатныхФормах.Получить()
                    И ДанныеДляПечати.РезультатПоТабличнойЧасти.Колонки.Найти("СерияНаименование") <> Неопределено;
    ИспользоватьПечатныеФормыСФ2_5 = Ложь;
    
    МакетУПД = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент");
    МакетУПД_625 = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент_625");
    МакетУПД_981 = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент981");
    МакетУПД_534 = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент534_ru");
    МакетУПД_534_2_5 = УправлениеПечатью.МакетПечатнойФормы(
                        "ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент534");
    МакетУПД_534Прослеж_2_5 = УправлениеПечатью.МакетПечатнойФормы(
                        "ОбщийМакет.ПФ_MXL_УниверсальныйПередаточныйДокумент534Прослеж");
    
    ОпцииПечати = Новый Структура;
    ОпцииПечати.Вставить("НомерСформированВСчетеФактуре", ДанныеДляПечати.Свойство("НомерСформированВСчетеФактуре"));
    ОпцииПечати.Вставить("ИспользоватьПечатныеФормыСФ2_5", ИспользоватьПечатныеФормыСФ2_5);
    
    ДанныеПечати        = ДанныеДляПечати.РезультатПоШапке.Выбрать();
    ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Если ДанныеДляПечати.Свойство("РезультатПоКонтрагентам") Тогда
        ВыборкаКонтрагентов = ДанныеДляПечати.РезультатПоКонтрагентам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Иначе
        ВыборкаКонтрагентов = Неопределено;
    КонецЕсли;
    Если ДанныеДляПечати.Свойство("РезультатПоИсходнымДанным") Тогда
        ВыборкаОснований = ДанныеДляПечати.РезультатПоИсходнымДанным.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Иначе
        ВыборкаОснований = Неопределено;
    КонецЕсли;
    ПрослеживаемыеОС = Неопределено;
    ПрослеживаемыеКомплектующие = Неопределено;
    ЕстьПрослеживаемыеТоварыВТабличнойЧасти = Ложь;
    Если ДанныеДляПечати.Свойство("Прослеживаемость") Тогда
        ПрослеживаемыеОС = ДанныеДляПечати.Прослеживаемость.Выгрузить();
        Если ПрослеживаемыеОС.Количество() > 0 Тогда
            ЕстьПрослеживаемыеТоварыВТабличнойЧасти = Истина;
        Иначе
            ПрослеживаемыеОС = Неопределено;
        КонецЕсли;
    КонецЕсли;
    Если ДанныеДляПечати.Свойство("ПрослеживаемыеКомплектующие") Тогда
        ПрослеживаемыеКомплектующие = ДанныеДляПечати.ПрослеживаемыеКомплектующие;
        Если ПрослеживаемыеКомплектующие.Количество() > 0 Тогда
            ЕстьПрослеживаемыеТоварыВТабличнойЧасти = Истина;
        Иначе
            ПрослеживаемыеКомплектующие = Неопределено;
        КонецЕсли;
    КонецЕсли;
    
    ЕстьПостановление534 = ЛОЖЬ;
    ЕстьПостановление981 = ЛОЖЬ;
    ЕстьПостановление1137_625 = ЛОЖЬ;
    ЕстьПостановление1137 = ЛОЖЬ;
    
    ПервыйДокумент = Истина;
    Пока ДанныеПечати.Следующий() Цикл
        
        Если ДанныеПечати.СтатусУПД = 2
            И ЗначениеЗаполнено(ДанныеПечати.НалогообложениеНДС)
            И ДанныеПечати.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС
            И НЕ ДанныеПечати.ЭтоПередачаНаКомиссию
            И ДанныеПечати.ТребуетсяНаличиеСФ Тогда
            
            Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru = 'Для документа %1 не введен %2'"),
                ДанныеПечати.Ссылка,
                ДанныеПечати.ПредставлениеДокумента);
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                Текст,
                ДанныеПечати.Ссылка,
                ,
                "ТекстСчетФактура");
                
            Продолжить;
        КонецЕсли;
        
        Если ДействуетПостановление534(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
            ИспользоватьПечатныеФормыСФ2_5 = ПолучитьФункциональнуюОпцию("ИспользоватьПечатныеФормыСФ2_5");
            Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                ОпцииПечати.ИспользоватьПечатныеФормыСФ2_5 = ИспользоватьПечатныеФормыСФ2_5;
                Макет = ?(ЗначениеЗаполнено(ДанныеПечати.ЕстьПрослеживаемыеТовары) И ДанныеПечати.ЕстьПрослеживаемыеТовары Или ЕстьПрослеживаемыеТоварыВТабличнойЧасти, МакетУПД_534Прослеж_2_5, МакетУПД_534_2_5);
            Иначе
                Макет = МакетУПД_534;
            КонецЕсли;
            ЕстьПостановление534 = Истина;
        ИначеЕсли ДействуетПостановление981(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
            Макет = МакетУПД_981;
            ЕстьПостановление981 = Истина;
        ИначеЕсли ВедетсяУчетНДСПоФЗ56(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
            Макет = МакетУПД_625;
            ЕстьПостановление1137_625 = Истина;
        Иначе
            Макет = МакетУПД;
            ЕстьПостановление1137 = Истина;
        КонецЕсли;
        Макет.КодЯзыка = Метаданные.Языки.Русский.КодЯзыка;
        
        Если ЕстьПостановление1137_625 И ЕстьПостановление1137 Тогда
            
            Текст = НСтр("ru = 'Недоступна одновременная печать универсальных передаточных документов,
                |сформированных до и после начала применения постановления Правительства РФ №625 от 25 мая 2017 г.'");
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                Текст,
                ДанныеПечати.Ссылка);
            
            ТабличныйДокумент.Очистить();
            Прервать;
            
        КонецЕсли;
        
        Если (ЕстьПостановление1137_625 ИЛИ ЕстьПостановление1137) И ЕстьПостановление981 Тогда
            
            Текст = НСтр("ru = 'Недоступна одновременная печать универсальных передаточных документов,
                |сформированных до и после начала применения постановления Правительства РФ №981 от 19 августа 2017 г.'");
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                Текст,
                ДанныеПечати.Ссылка);
            
            ТабличныйДокумент.Очистить();
            Прервать;
            
        ИначеЕсли (ЕстьПостановление1137_625 Или ЕстьПостановление1137 Или ЕстьПостановление981)
                И ЕстьПостановление534 Тогда
            
            ТекстСообщения = НСтр("ru = 'Недоступна одновременная печать универсальных передаточных документов,
            |сформированных до и после начала применения постановления Правительства РФ №534 от 2 апреля 2021 г.'");
            
            ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ДанныеПечати.Ссылка);
            
            ТабличныйДокумент.Очистить();
            Прервать;
            
        КонецЕсли;
        
        Если Не ПервыйДокумент Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        ПервыйДокумент = Ложь;
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
        
        Если ДанныеДляПечати.Свойство("РезультатПоПоставщикам")
            И ДанныеПечати.ПеревыставленныйСчетФактура Тогда
            ВыборкаПоставщиков = ДанныеДляПечати.РезультатПоПоставщикам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        КонецЕсли;
        
            
        // Выводим общие реквизиты шапки
        СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата);
        ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
        ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьШапка,
            ДанныеПечати.Ссылка);
        
        ЗаполнитьРеквизитыШапкиУПД(ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов, ОбластьШапка, ВыборкаПоставщиков, ОпцииПечати);
        
        НомерСтраницы = 1;
        
        // Инициализация итогов в документе
        Если ИспользоватьПечатныеФормыСФ2_5 Тогда
            ИтоговыеСуммы = СтруктураИтоговыеСуммы2_5();
        Иначе
            ИтоговыеСуммы = СтруктураИтоговыеСуммы();
        КонецЕсли;
        
        // Создаем массив для проверки вывода
        МассивВыводимыхОбластей = Новый Массив;
        
        // Выводим многострочную часть документа
        ОбластьСтрокаСтандарт = Макет.ПолучитьОбласть("Строка");
        ОбластьИтого = Макет.ПолучитьОбласть("Итого");
        ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
        Если ИспользоватьПечатныеФормыСФ2_5 Тогда
            ОбластьПодвалНакладной = Макет.ПолучитьОбласть("ПодвалНакладной");
        КонецЕсли;
        
        Если ИспользоватьПечатныеФормыСФ2_5 Тогда
            ЗаполнитьРеквизитыПодвалаУПД2_5(ОбластьПодвал, ОбластьПодвалНакладной, ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов);
        Иначе
            ЗаполнитьРеквизитыПодвалаУПД(ОбластьПодвал, ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов);
        КонецЕсли;
        
        Если ДанныеДляПечати.РезультатПоШапке.Колонки.Найти("ВыводитьКодНоменклатуры") <> Неопределено Тогда
            ВыводитьКодНоменклатуры = ДанныеПечати.ВыводитьКодНоменклатуры;
        Иначе
            ВыводитьКодНоменклатуры = Истина;
        КонецЕсли;
        
        СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
        ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
            
        ИспользоватьНаборы = Ложь;
        Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоДокументам, "ЭтоНабор") Тогда
            ИспользоватьНаборы = Истина;
            Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                ОбластьСтрокаНабор         = Макет.ПолучитьОбласть("Строка");
                ОбластьСтрокаКомплектующие = Макет.ПолучитьОбласть("Строка");
            Иначе
                ОбластьСтрокаНабор         = Макет.ПолучитьОбласть("СтрокаНабор");
                ОбластьСтрокаКомплектующие = Макет.ПолучитьОбласть("СтрокаКомплектующие");
            КонецЕсли;
        КонецЕсли;
        
        ВыводитьКодыТНВЭД = ВыводитьКодыТНВЭД(ДанныеПечати, ЕстьПостановление981 Или ЕстьПостановление534);
        
        ОперацияОблагаетсяНДСУПокупателя = Ложь;
        Если ДанныеПечати.СтатусУПД = 1
        И ДанныеПечати.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя Тогда
            ОперацияОблагаетсяНДСУПокупателя = Истина;
        КонецЕсли;
        
        СтрокаТовары = ВыборкаПоДокументам.Выбрать();
        КоличествоСтрок = 0;
        Пока СтрокаТовары.Следующий() Цикл
            Если Не НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда
                КоличествоСтрок = КоличествоСтрок + 1;
            КонецЕсли;
        КонецЦикла;
        СтрокаТовары.Сбросить();
        
        Если ЕстьПостановление534 Тогда
            Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                ОбластьШапка.Параметры.ДокументыОбОтгрузке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                        НСтр("ru = '№ п/п %1 № %2 от %3'"),
                        ?(КоличествоСтрок = 1, "1" , "1-" + Формат(КоличествоСтрок, "ЧГ=0")),
                        ОбластьШапка.Параметры.Номер,
                        ОбластьШапка.Параметры.Дата);
            Иначе
                ОбластьШапка.Параметры.ПоДокументуОтгрузки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                        НСтр("ru = '№ п/п %1 № %2 от %3'"),
                        ?(КоличествоСтрок = 1, "1" , "1-" + Формат(КоличествоСтрок, "ЧГ=0")),
                        ОбластьШапка.Параметры.Номер,
                        ОбластьШапка.Параметры.Дата);
            КонецЕсли;
        КонецЕсли;
        ТабличныйДокумент.Вывести(ОбластьШапка);
        
        // Выводим заголовок таблицы
        ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
        ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
        
        ТолькоСтавкаБезНДС = Истина;
        НомерСтроки = 0;
        Пока СтрокаТовары.Следующий() Цикл
            
                Если ПрослеживаемыеОС <> Неопределено Тогда
                    ПрослеживаемыеТоварыСтрокаТовары = ПрослеживаемыеОС.НайтиСтроки(Новый Структура("НомерСтрокиСФ", СтрокаТовары.НомерСтроки));
                ИначеЕсли ПрослеживаемыеКомплектующие <> Неопределено Тогда
                    ПрослеживаемыеТоварыСтрокаТовары = ПрослеживаемыеКомплектующие.НайтиСтроки(Новый Структура("НомерГТД", СтрокаТовары.НомерГТД));
                Иначе
                    ПрослеживаемыеТоварыСтрокаТовары = Неопределено;
                КонецЕсли;
            
            Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ОтчетКомиссионера")
                ИЛИ ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациями") Тогда
                Если СтрокаТовары.Покупатель <> ДанныеПечати.Покупатель
                    И СтрокаТовары.Покупатель <> НЕОПРЕДЕЛЕНО Тогда
                        Продолжить;
                КонецЕсли;
            КонецЕсли;
            
            Если СтрокаТовары.Количество = 0
                И СтрокаТовары.СуммаСНДС = 0 Тогда
                Продолжить;
            КонецЕсли;
            
            Если НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда
                ОбластьСтрока = ОбластьСтрокаНабор;
            ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                ОбластьСтрока = ОбластьСтрокаКомплектующие;
            Иначе
                ОбластьСтрока = ОбластьСтрокаСтандарт;
            КонецЕсли;
            
            ПараметрыПечати = Новый Структура("Корректировочный,СчетФактураНаАванс", Ложь, Ложь);
            
            Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                    ЗаполнитьРеквизитыСтрокиТовара2_5(СтрокаТовары, ПрослеживаемыеТоварыСтрокаТовары, ОбластьСтрока, Неопределено, ПараметрыПечати, , ВыводитьКодыТНВЭД, ВыводитьСерии);
                Иначе
                    ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьСтрока, Неопределено, , ВыводитьКодыТНВЭД, ВыводитьСерии);
                КонецЕсли;
            Иначе
                НомерСтроки = НомерСтроки + 1;
                Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                    ЗаполнитьРеквизитыСтрокиТовара2_5(СтрокаТовары, ПрослеживаемыеТоварыСтрокаТовары, ОбластьСтрока, НомерСтроки, ПараметрыПечати, , ВыводитьКодыТНВЭД, ВыводитьСерии);
                Иначе
                    ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьСтрока, НомерСтроки, , ВыводитьКодыТНВЭД, ВыводитьСерии);
                КонецЕсли;
                ПроставитьПрочеркиВПустыеПоляСтроки(ОбластьСтрока);
            КонецЕсли;
            
            СтруктураПараметров = Новый Структура;
            Если ОперацияОблагаетсяНДСУПокупателя Тогда
                СтруктураПараметров.Вставить("СтавкаНДС", НСтр("ru='НДС исчисляется налоговым агентом'", Метаданные.Языки.Русский.КодЯзыка));
                Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                    СтруктураПараметров.Вставить("Всего", "--");
                Иначе
                    СтруктураПараметров.Вставить("СуммаСНДС", "--");
                КонецЕсли;
                ТолькоСтавкаБезНДС = Ложь;
            ИначеЕсли СтрокаТовары.СтавкаНДС = Справочники.СтавкиНДС.БезНДС Тогда
                СтруктураПараметров.Вставить("СтавкаНДС", НСтр("ru='без НДС'", Метаданные.Языки.Русский.КодЯзыка));
                СтруктураПараметров.Вставить("СуммаНДС", НСтр("ru='без НДС'", Метаданные.Языки.Русский.КодЯзыка));
            ИначеЕсли СтрокаТовары.СтавкаНДС = УчетНДСЛокализация.СтавкаНДСПоПеречислению(Перечисления.СтавкиНДС.НДС0) Тогда
                СтруктураПараметров.Вставить("СуммаНДС", 0);
                ТолькоСтавкаБезНДС = Ложь;
            Иначе
                ТолькоСтавкаБезНДС = Ложь;
            КонецЕсли;
            Если Не НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                    СтруктураПараметров.Вставить("Акциз", НСтр("ru='без
                    |акциза'", Метаданные.Языки.Русский.КодЯзыка));
                Иначе
                    СтруктураПараметров.Вставить("Акциз", НСтр("ru='без акциза'", Метаданные.Языки.Русский.КодЯзыка));
                КонецЕсли;
            КонецЕсли;
            ОбластьСтрока.Параметры.Заполнить(СтруктураПараметров);
            
            МассивВыводимыхОбластей.Очистить();
            МассивВыводимыхОбластей.Добавить(ОбластьСтрока);
            
            Если НомерСтроки = КоличествоСтрок Тогда
                МассивВыводимыхОбластей.Добавить(ОбластьИтого);
                МассивВыводимыхОбластей.Добавить(ОбластьПодвал);
                Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                    МассивВыводимыхОбластей.Добавить(ОбластьПодвалНакладной);
                КонецЕсли;
            КонецЕсли;
            
            Если НомерСтроки <> 1 И НЕ ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
                
                НомерСтраницы = НомерСтраницы + 1;
                ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                
                ОбластьНумерацияЛистов = Макет.ПолучитьОбласть("НумерацияЛистов");
                Если ОпцииПечати.НомерСформированВСчетеФактуре Тогда
                    ОбластьНумерацияЛистов.Параметры.Номер = ДанныеПечати.Номер;
                Иначе
                    ОбластьНумерацияЛистов.Параметры.Номер = НомерСчетаФактурыНаПечать(ДанныеПечати.Номер, ДанныеПечати.ИндексПодразделения);
                КонецЕсли;
                Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                    ОбластьНумерацияЛистов.Параметры.НомерЛиста = НомерСтраницы;
                Иначе
                    ОбластьНумерацияЛистов.Параметры.НомерСтраницы = НомерСтраницы;
                    ОбластьНумерацияЛистов.Параметры.Дата = Формат(ДанныеПечати.Дата, "ДЛФ=ДД; ДП=--");
                КонецЕсли;
                
                ТабличныйДокумент.Вывести(ОбластьНумерацияЛистов);
                ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
                
            КонецЕсли;
            
            ТабличныйДокумент.Вывести(ОбластьСтрока);
            
            Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                    РассчитатьИтоговыеСуммы2_5(ИтоговыеСуммы, СтрокаТовары, ПрослеживаемыеТоварыСтрокаТовары);
                Иначе
                    РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары);
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        // Выводим итоги по документу
        ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, НомерСтроки,
                            ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(ДанныеПечати.Организация));
        
        Если ТолькоСтавкаБезНДС Тогда
            ИтоговыеСуммы.ИтогоСуммаНДС = НСтр("ru='без НДС'", Метаданные.Языки.Русский.КодЯзыка);
        КонецЕсли;
        
        Если ОперацияОблагаетсяНДСУПокупателя Тогда
            Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                ИтоговыеСуммы.Вставить("ИтогоВсего", "--");
                ИтоговыеСуммы.Вставить("ИтогоВсегоНаСтранице", "--");
            Иначе
                ИтоговыеСуммы.Вставить("ИтогоСуммаСНДС", "--");
                ИтоговыеСуммы.Вставить("ИтогоСуммаСНДСНаСтранице", "--");
            КонецЕсли;
        КонецЕсли;
        
        ОбластьИтого.Параметры.Заполнить(ИтоговыеСуммы);
        ПроставитьПрочеркиВПустыеПоляСтроки(ОбластьИтого);
        ТабличныйДокумент.Вывести(ОбластьИтого);
        
        // Если строка таблицы одна, то проверим поместится ли все на одной странице
        Если КоличествоСтрок = 1 Тогда
            МассивВыводимыхОбластей = Новый Массив;
            МассивВыводимыхОбластей.Добавить(ОбластьПодвал);
            Если ИспользоватьПечатныеФормыСФ2_5 Тогда
                МассивВыводимыхОбластей.Добавить(ОбластьПодвалНакладной);
            КонецЕсли;
            Если Не ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
                НомерСтраницы = НомерСтраницы + 1;
            КонецЕсли;
        КонецЕсли;
        
        КоличествоСтраниц = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Документ составлен на %1 %2'", Метаданные.Языки.Русский.КодЯзыка),
            НомерСтраницы,
            ОбщегоНазначенияУТКлиентСервер.ФормаМножественногоЧисла(
                НСтр("ru = 'листе'", Метаданные.Языки.Русский.КодЯзыка),
                НСтр("ru = 'листах'", Метаданные.Языки.Русский.КодЯзыка),
                НСтр("ru = 'листах'", Метаданные.Языки.Русский.КодЯзыка), НомерСтраницы));
        Если ИспользоватьПечатныеФормыСФ2_5 Тогда
            СтруктураПараметров = Новый Структура("КоличествоЛистов", КоличествоСтраниц);
        Иначе
            СтруктураПараметров = Новый Структура("КоличествоСтраниц", КоличествоСтраниц);
        КонецЕсли;
        ОбластьПодвал.Параметры.Заполнить(СтруктураПараметров);
        
        Если ИспользоватьПечатныеФормыСФ2_5 Тогда
            УдалитьВсеОбластиФаксимиле(ОбластьПодвал);
            УдалитьВсеОбластиФаксимиле(ОбластьПодвалНакладной);
        КонецЕсли;
        
        ТабличныйДокумент.Вывести(ОбластьПодвал);
        Если ИспользоватьПечатныеФормыСФ2_5 Тогда
            ТабличныйДокумент.Вывести(ОбластьПодвалНакладной);
        КонецЕсли;
        
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
            ДанныеПечати.Ссылка);
            
            ТЗ = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выгрузить();  ////Макс
        
    КонецЦикла;
    
КонецПроцедуры

#КонецОбласти    

Процедура УдалитьВсеОбластиФаксимиле(ОбластьМакета)
    
    МассивИменПоказателей = МассивИменПоказателейФаксимиле();
    Для Каждого ЗначениеПоказателя Из МассивИменПоказателей Цикл
        ОчиститьОбластьФаксимиле(ОбластьМакета, ЗначениеПоказателя);
    КонецЦикла;
    
КонецПроцедуры  

Процедура ОчиститьОбластьФаксимиле(ОбластьМакета, ИмяОбласти)
    
    ОбластьФаксимиле = ОбластьМакета.Области.Найти(ИмяОбласти);
    Если ОбластьФаксимиле <> Неопределено Тогда
        ОбластьМакета.Рисунки.Удалить(ОбластьФаксимиле.Имя);
    КонецЕсли;
    
КонецПроцедуры

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

Процедура ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, ВсегоНомеров, ВалютаРегламентированногоУчета)
    
    ИтоговыеСуммы.Вставить("КоличествоПорядковыхНомеровЗаписейПрописью", ЧислоПрописью(ВсегоНомеров, ,",,,,,,,,0"));
    Если ИтоговыеСуммы.Свойство("ИтогоВсего") Тогда
        ИтоговыеСуммы.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(ИтоговыеСуммы.ИтогоВсего, ВалютаРегламентированногоУчета));
    Иначе
        ИтоговыеСуммы.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(ИтоговыеСуммы.ИтогоСуммаСНДС, ВалютаРегламентированногоУчета));
    КонецЕсли;
    
КонецПроцедуры

Процедура РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары)
    
    СтруктураСуммПоСтроке = СтруктураРесурсовДляИтогов();
    
    ЗаполнитьЗначенияСвойств(СтруктураСуммПоСтроке, СтрокаТовары);
    ОкруглитьДоЦелого(СтруктураСуммПоСтроке.КоличествоМест);
    Для Каждого Элемент Из СтруктураСуммПоСтроке Цикл
        Если ЗначениеЗаполнено(Элемент.Значение) Тогда
            ИтоговыеСуммы["Итого"+Элемент.Ключ+"НаСтранице"] = ИтоговыеСуммы["Итого"+Элемент.Ключ+"НаСтранице"] + Элемент.Значение;
            ИтоговыеСуммы["Итого"+Элемент.Ключ] = ИтоговыеСуммы["Итого"+Элемент.Ключ] + Элемент.Значение;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

Процедура РассчитатьИтоговыеСуммы2_5(ИтоговыеСуммы, СтрокаТовары, ПрослеживаемыеТовары = Неопределено)
    
    СтруктураСуммПоСтроке = СтруктураИтоговыеСуммы2_5();
    
    ЗаполнитьЗначенияСвойств(СтруктураСуммПоСтроке, СтрокаТовары);
    СтруктураСуммПоСтроке.ИтогоСтоимость = СтрокаТовары.СуммаБезНДС;
    СтруктураСуммПоСтроке.ИтогоСуммаНДС  = СтрокаТовары.СуммаНДС;
    СтруктураСуммПоСтроке.ИтогоВсего     = СтрокаТовары.СуммаСНДС;
    
    ОкруглитьДоЦелого(СтруктураСуммПоСтроке.КоличествоМест);
    Для Каждого Элемент Из СтруктураСуммПоСтроке Цикл
        Если ЗначениеЗаполнено(Элемент.Значение) Тогда
            Если Элемент.Ключ = "КоличествоПрослежУвеличение" Тогда
                Если ПрослеживаемыеТовары <> Неопределено И ПрослеживаемыеТовары.Количество() > 0 Тогда
                    Для Каждого СтрокаПрослеживаемость Из ПрослеживаемыеТовары Цикл
                        ИтоговыеСуммы["КоличествоПрослежУвеличениеВсего"] = ИтоговыеСуммы["КоличествоПрослежУвеличениеВсего"] + Элемент.Значение * СтрокаПрослеживаемость.Количество;
                    КонецЦикла;
                Иначе
                    ИтоговыеСуммы["КоличествоПрослежУвеличениеВсего"] = ИтоговыеСуммы["КоличествоПрослежУвеличениеВсего"] + Элемент.Значение;
                КонецЕсли;
            ИначеЕсли Элемент.Ключ = "КоличествоПрослежУменьшение" Тогда
                Если ПрослеживаемыеТовары <> Неопределено И ПрослеживаемыеТовары.Количество() > 0 Тогда
                    Для Каждого СтрокаПрослеживаемость Из ПрослеживаемыеТовары Цикл
                        ИтоговыеСуммы["КоличествоПрослежУменьшениеВсего"] = ИтоговыеСуммы["КоличествоПрослежУменьшениеВсего"] + Элемент.Значение * СтрокаПрослеживаемость.Количество;
                    КонецЦикла;
                Иначе
                    ИтоговыеСуммы["КоличествоПрослежУменьшениеВсего"] = ИтоговыеСуммы["КоличествоПрослежУменьшениеВсего"] + Элемент.Значение;
                КонецЕсли;
            Иначе
                ИтоговыеСуммы[Элемент.Ключ] = ИтоговыеСуммы[Элемент.Ключ] + Элемент.Значение;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

Процедура ОкруглитьДоЦелого(ОкругляемоеЧисло)
    Если ЗначениеЗаполнено(ОкругляемоеЧисло) Тогда
        Если ОкругляемоеЧисло <> Цел(ОкругляемоеЧисло) Тогда
            ОкругляемоеЧисло = Цел(ОкругляемоеЧисло) + 1;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Функция СтруктураРесурсовДляИтогов()
    
    Структура = Новый Структура;
    
    Структура.Вставить("СуммаБезНДС",       0);
    Структура.Вставить("СуммаНДС",          0);
    Структура.Вставить("СуммаСНДС",         0);
    Структура.Вставить("Количество",        0);
    Структура.Вставить("КоличествоМест",    0);
    Структура.Вставить("КоличествоПринято", 0);
    Структура.Вставить("МассаБрутто",       0);
    Структура.Вставить("МассаНетто",        0);
    Структура.Вставить("Сумма",             0);
    
    Структура.Вставить("РазницаБезНДСУвеличение", 0);
    Структура.Вставить("РазницаБезНДСУменьшение", 0);
    Структура.Вставить("РазницаНДСУвеличение",    0);
    Структура.Вставить("РазницаНДСУменьшение",    0);
    Структура.Вставить("РазницаСНДСУвеличение",   0);
    Структура.Вставить("РазницаСНДСУменьшение",   0);
    
    Возврат Структура;
    
КонецФункции

Процедура ПроставитьПрочеркиВПустыеПоляСтроки(ОбластьМакета)

    Для Сч = 0 По ОбластьМакета.Параметры.Количество() - 1 Цикл
        
        ТекПараметр = ОбластьМакета.Параметры.Получить(Сч);
        
        Если НЕ ЗначениеЗаполнено(ТекПараметр) Тогда
            ОбластьМакета.Параметры.Установить(Сч, "--");
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры

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

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

Функция ВыводитьКодыТНВЭД(ДанныеПечати, ДействуетПостановление981)
    ПараметрыВывода = Новый Структура("ВыводитьВСтроке, ВыводитьВКолонке");
    
    ПараметрыВывода.ВыводитьВСтроке = ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.СчетФактураВыданный")
        И УчетНДСРФ.СтранаЯвляетсяЧленомТаможенногоСоюза(ДанныеПечати.СтранаРегистрации, ДанныеПечати.Дата)
        И ДанныеПечати.Дата >= УчетНДСУП.НастройкиУчета().ДатаРазделенияЭкспорта;
    ПараметрыВывода.ВыводитьВКолонке = ПараметрыВывода.ВыводитьВСтроке И ДействуетПостановление981;
    
    Возврат ПараметрыВывода
    
КонецФункции

Функция СтруктураИтоговыеСуммы()
    
    Структура = Новый Структура;
    
    СтруктураРесурсовДляИтогов = СтруктураРесурсовДляИтогов();
    
    Для Каждого Элемент Из СтруктураРесурсовДляИтогов Цикл
        Структура.Вставить("Итого"+Элемент.Ключ+"НаСтранице", 0);
        Структура.Вставить("Итого"+Элемент.Ключ, 0);
    КонецЦикла;
    
    Возврат Структура;
    
КонецФункции

Функция СтруктураИтоговыеСуммы2_5()
    
    Структура = Новый Структура;
    
    Структура.Вставить("ИтогоСтоимость",    0);
    Структура.Вставить("ИтогоСуммаНДС",     0);
    Структура.Вставить("ИтогоВсего",        0);
    Структура.Вставить("Количество",        0);
    Структура.Вставить("КоличествоМест",    0);
    Структура.Вставить("КоличествоПринято", 0);
    Структура.Вставить("МассаБрутто",       0);
    Структура.Вставить("МассаНетто",        0);
    Структура.Вставить("Сумма",             0);
    
    Структура.Вставить("РазницаБезНДСУвеличение", 0);
    Структура.Вставить("РазницаБезНДСУменьшение", 0);
    Структура.Вставить("РазницаНДСУвеличение",    0);
    Структура.Вставить("РазницаНДСУменьшение",    0);
    Структура.Вставить("РазницаСНДСУвеличение",   0);
    Структура.Вставить("РазницаСНДСУменьшение",   0);
    Структура.Вставить("КоличествоПрослежУвеличение", 0);
    Структура.Вставить("КоличествоПрослежУменьшение", 0);
    Структура.Вставить("КоличествоПрослежУвеличениеВсего", 0);
    Структура.Вставить("КоличествоПрослежУменьшениеВсего", 0);
    
    Возврат Структура;
    
КонецФункции

Функция ВедетсяУчетНДСПоФЗ56(ДатаДокумента, ДатаИсправления)
    
    НачалоПримененияФЗ56 = '20170701';
    
    Дата = ?(ЗначениеЗаполнено(ДатаИсправления),ДатаИсправления,ДатаДокумента);
    
    Если Дата < НачалоПримененияФЗ56 Тогда
        Возврат Ложь;
    Иначе
        Возврат Истина;
    КонецЕсли;
    
КонецФункции

Функция ДействуетПостановление981(ДатаДокумента, ДатаИсправления)
    
    НачалоПрименения = '20171001';
    
    Дата = ?(ЗначениеЗаполнено(ДатаИсправления),ДатаИсправления,ДатаДокумента);
    
    Если Дата < НачалоПрименения Тогда
        Возврат Ложь;
    Иначе
        Возврат Истина;
    КонецЕсли;
    
КонецФункции

Функция ДействуетПостановление534(ДатаДокумента, ДатаИсправления)
    
    Возврат ?(ЗначениеЗаполнено(ДатаИсправления), ДатаИсправления, ДатаДокумента) >= '20210701';
    
КонецФункции

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

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

Функция ТаблицаПоставщиковСчетаФактуры(ДанныеПечати, ДанныеПоставщиков)
    
    ТаблицаПоставщиков = Новый ТаблицаЗначений;

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

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

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

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

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

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

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

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

Функция ТекстЗапросаДанныхПрослеживаемость()
    
    ТекстЗапроса = РеализацияУслугПрочихАктивовЛокализация.ТекстЗапросаДанныхПрослеживаемость();
    
    Возврат ТекстЗапроса;
    
КонецФункции

Функция ТекстЗапросаИсходныхДокументовДляПечатиСчетаФактуры()
    
    ТекстЗапроса =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    СчетаФактурыОснования.Ссылка КАК Ссылка,
    |    ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура, ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка)) КАК ИсходныйДокумент,
    |    ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера, """") КАК НомерСчетаФактуры,
    |    ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата, СчетФактураТовары.ПредыдущийСчетФактура.Дата) КАК ДатаСчетаФактуры,
    |    ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления, """") КАК НомерИсправленияСчетаФактуры,
    |    ВЫБОР
    |        КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление
    |            ТОГДА ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.Дата, ДАТАВРЕМЯ(1, 1, 1))
    |        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
    |    КОНЕЦ КАК ДатаИсправленияСчетаФактуры
    |ИЗ
    |    СчетаФактурыОснования КАК СчетаФактурыОснования
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК СчетФактураТовары
    |        ПО СчетаФактурыОснования.Ссылка = СчетФактураТовары.Ссылка
    |
    |УПОРЯДОЧИТЬ ПО
    |    Ссылка,
    |    ИсходныйДокумент
    |ИТОГИ ПО
    |    Ссылка
    |;
    |////////////////////////////////////////////////////////////////////////////
    |";
    
    Возврат ТекстЗапроса;
    
КонецФункции


Функция ТекстЗапросаДанныхМаркировки(ЗаполнитьДанныеШтрихкодовДляУКДДо = Ложь)

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

    Возврат ТекстЗапроса;
    
КонецФункции

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

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

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

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

    СчетаФактуры = Таблица.ВыгрузитьКолонку("СчетФактура"); // - Массив из ДокументСсылка.СчетФактураВыданный
    СчетаФактуры = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СчетаФактуры);
    Для Каждого СФ Из СчетаФактуры Цикл
        Если ТипЗнч(СФ) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
            РеквизитыСФ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СФ, "Исправление, Перевыставленный, Корректировочный, РучнаяКорректировкаСуммДокумента");
            Если (РеквизитыСФ.Исправление Или РеквизитыСФ.Перевыставленный) И Не РеквизитыСФ.Корректировочный Или РеквизитыСФ.РучнаяКорректировкаСуммДокумента Тогда
                // представления сохранены в ТЧ ДокументыОснования
                СчетаФактурыСНомерами.Добавить(СФ);
            Иначе
                СтрокиПоСФ = Таблица.НайтиСтроки(Новый Структура("СчетФактура",СФ));
                ТаблицаПоСФ = Таблица.Скопировать(СтрокиПоСФ,);
                ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПолучитьПорядковыеНомераСтрок(ТаблицаПоСФ), ТаблицаИтог);
            КонецЕсли;
        Иначе
            СтрокиПоСФ = Таблица.НайтиСтроки(Новый Структура("СчетФактура",СФ));
            ТаблицаПоСФ = Таблица.Скопировать(СтрокиПоСФ,);
            ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПолучитьПорядковыеНомераСтрок(ТаблицаПоСФ), ТаблицаИтог);
        КонецЕсли;
    КонецЦикла;
    
    Результат = Новый ТаблицаЗначений();
    Результат.Колонки.Добавить("СчетФактура", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный,ДокументСсылка.СчетФактураКомиссионеру"));
    Результат.Колонки.Добавить("ПредставлениеСтроки5а", Новый ОписаниеТипов("Строка"));
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Таблица", ТаблицаИтог);
    Запрос.УстановитьПараметр("СчетаФактурыСНомерами", СчетаФактурыСНомерами);
    
    Запрос.Текст = "ВЫБРАТЬ
    |    Т.СчетФактура КАК СчетФактура,
    |    Т.ДокументОснование КАК ДокументОснование,
    |    Т.НомерСтрокиСФ КАК ПорядковыеНомераСтрок
    |ПОМЕСТИТЬ ПорядковыеНомера
    |ИЗ
    |    &Таблица КАК Т
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ПорядковыеНомера.СчетФактура КАК СчетФактура,
    |    ВЫРАЗИТЬ(ПорядковыеНомера.ПорядковыеНомераСтрок КАК СТРОКА(100)) КАК ПорядковыеНомераСтрок,
    |    ДанныеПервичныхДокументов.Номер,
    |    ДанныеПервичныхДокументов.Дата
    |ИЗ
    |    (ВЫБРАТЬ
    |        ПорядковыеНомера.СчетФактура,
    |        ВЫБОР
    |            КОГДА КорректировкаРеализации.ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеОшибок)
    |                ТОГДА КорректировкаРеализации.ДокументОснование
    |                ИНАЧЕ ПорядковыеНомера.ДокументОснование
    |        КОНЕЦ КАК ДокументОснование,
    |        ПорядковыеНомера.ПорядковыеНомераСтрок
    |    ИЗ
    |        ПорядковыеНомера КАК ПорядковыеНомера
    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации КАК КорректировкаРеализации
    |            ПО ПорядковыеНомера.ДокументОснование = КорректировкаРеализации.Ссылка
    |
    |    ОБЪЕДИНИТЬ ВСЕ
    |
    |    ВЫБРАТЬ
    |        СчетФактураВыданныйДокументыОснования.Ссылка,
    |        ВЫБОР
    |            КОГДА ТИПЗНАЧЕНИЯ (СчетФактураВыданныйДокументыОснования.ДокументОснование) = ТИП(Документ.КорректировкаРеализации)
    |                    И ВЫРАЗИТЬ(СчетФактураВыданныйДокументыОснования.ДокументОснование КАК Документ.КорректировкаРеализации).ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеОшибок)
    |                ТОГДА ВЫРАЗИТЬ(СчетФактураВыданныйДокументыОснования.ДокументОснование КАК Документ.КорректировкаРеализации).ДокументОснование
    |            КОГДА СчетФактураВыданныйДокументыОснования.Ссылка.Перевыставленный
    |                ТОГДА ЕСТЬNULL(СчетФактураПолученныйДокументыОснования.ДокументОснование, СчетФактураВыданныйДокументыОснования.ДокументОснование)
    |                ИНАЧЕ СчетФактураВыданныйДокументыОснования.ДокументОснование
    |        КОНЕЦ,
    |        СчетФактураВыданныйДокументыОснования.ПорядковыеНомераСтрок
    |    ИЗ
    |        Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования
    |            ПО СчетФактураВыданныйДокументыОснования.СчетФактураПолученныйОтПродавца = СчетФактураПолученныйДокументыОснования.Ссылка
    |    ГДЕ
    |        СчетФактураВыданныйДокументыОснования.Ссылка В (&СчетаФактурыСНомерами)
    |    ) КАК ПорядковыеНомера
    |
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
    |        ПО ПорядковыеНомера.СчетФактура.Организация = ДанныеПервичныхДокументов.Организация
    |        И ПорядковыеНомера.ДокументОснование = ДанныеПервичныхДокументов.Документ
    |УПОРЯДОЧИТЬ ПО
    |    Номер
    |ИТОГИ
    |ПО
    |    СчетФактура";
    
    ВыборкаПоСФ = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПоСФ.Следующий() Цикл
        
        НоваяСтрока = Результат.Добавить();
        НоваяСтрока.СчетФактура = ВыборкаПоСФ.СчетФактура;
        
        ПредставленияДокументов = Новый Массив;
        Выборка = ВыборкаПоСФ.Выбрать();
        Пока Выборка.Следующий() Цикл
            
            ПредставленияДокументов.Добавить(
                СтрШаблон(
                    НСтр("ru = '№ п/п %1 № %2 от %3'"),
                    Выборка.ПорядковыеНомераСтрок,
                    Выборка.Номер,
                    Формат(Выборка.Дата, "ДЛФ=D")));
            
        КонецЦикла;
        
        НоваяСтрока.ПредставлениеСтроки5а = СтрСоединить(ПредставленияДокументов, ";");
    КонецЦикла;
    
    Возврат Результат;
    
КонецФункции

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

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

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

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

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

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

Функция КонецРасчетаДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц)
    
    Запрос = Новый Запрос();
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЕСТЬNULL(МАКСИМУМ(Расчеты.Период), ДАТАВРЕМЯ(1,1,1)) КАК Период
    |ИЗ
    |    РегистрНакопления.РасчетыСКлиентами КАК Расчеты
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов
    |        ПО Расчеты.Регистратор = ТаблицаДокументов.ДокументОснование
    |ГДЕ
    |    Расчеты.Активность
    |    И Расчеты.АналитикаУчетаПоПартнерам.Организация = ТаблицаДокументов.Организация
    |ИМЕЮЩИЕ
    |    МАКСИМУМ(Расчеты.Период) ЕСТЬ НЕ NULL";
    
    Результат = Запрос.Выполнить();
    
    Если Не Результат.Пустой() Тогда
        ТаблицаПериод = Результат.Выгрузить();
        КонецРасчета = КонецМесяца(ТаблицаПериод[0].Период) + 1;
    Иначе
        КонецРасчета = КонецМесяца(ТекущаяДатаСеанса())+1;
    КонецЕсли;
    
    Возврат КонецРасчета;
    
КонецФункции

Процедура СформироватьВременнуюТаблицуТоваровДляПечати(МенеджерВременныхТаблиц, МассивОснований, ПараметрыПечати) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    
    ТипыОснований = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОснований);
    
    ТекстОбщейТаблицыТовары   = "";
    ТекстыОбщейТаблицыТоваров = Новый Массив;
    ПервыйТип                 = Истина;
    ЕстьНаборы                = Ложь;
    
    Для Каждого ТипОснования Из ТипыОснований Цикл
        
        ПараметрыЗаполнения = ПродажиСервер.ПараметрыЗаполненияВременнойТаблицыТоваров();
        ПараметрыЗаполнения.ПересчитыватьВВалютуРегл = Не ПараметрыПечати.ПечатьВВалюте;
        ПараметрыЗаполнения.АктуализироватьРасчеты   = Ложь;
        ПараметрыЗаполнения.ДляСчетаФактуры          = Истина;
        
        ИмяОбъекта = Сред(ТипОснования.Ключ, 10);
        
        Если ИмяОбъекта = "ВозвратТоваровПоставщику"
                Или ИмяОбъекта = "ВыкупВозвратнойТарыКлиентом"
                Или ИмяОбъекта = "ЗаписьКнигиПродаж"
                Или ИмяОбъекта = "ПередачаТоваровМеждуОрганизациями"
                Или ИмяОбъекта = "РеализацияТоваровУслуг"
                Или ИмяОбъекта = "КорректировкаРеализации"
                Или ИмяОбъекта = "ВыкупТоваровХранителем" Тогда
            ПараметрыЗаполнения.ВключаяНомераГТД = Истина;
        КонецЕсли;
        
        Если ИмяОбъекта = "КорректировкаРеализации" Тогда
            ПараметрыЗаполнения.ВключаяДоКорректировки = Истина;
        КонецЕсли;
        
        МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(ИмяОбъекта);
        Если МенеджерОбъекта = Неопределено Тогда
            МенеджерОбъекта = Документы[ИмяОбъекта];
        КонецЕсли;    
        Если ИмяОбъекта = "ОтчетПоКомиссииМеждуОрганизациями" Тогда
            МенеджерОбъекта.ПоместитьВременнуюТаблицуТоваровПоВознаграждению(МенеджерВременныхТаблиц, ПараметрыЗаполнения);
        Иначе
            МенеджерОбъекта.ПоместитьВременнуюТаблицуТоваров(МенеджерВременныхТаблиц, ПараметрыЗаполнения);
        КонецЕсли;
        
        Если ИмяОбъекта = "КорректировкаРеализации"
                Или ИмяОбъекта = "ВозвратТоваровОтКлиента"
                Или ИмяОбъекта = "ВозвратТоваровМеждуОрганизациями"
                Тогда
            МенеджерОбъекта.ПреобразоватьВременнуюТаблицуТоваровДляСчетаФактуры(МенеджерВременныхТаблиц);
        КонецЕсли;
        
        ТекстЗапроса =
        "ВЫБРАТЬ
        |    ТаблицаДокумента.Ссылка                                    КАК Ссылка,
        |    ТаблицаДокумента.НомерСтроки                               КАК НомерСтроки,
        |    ТаблицаДокумента.Номенклатура                              КАК Номенклатура,
        |    ТаблицаДокумента.Номенклатура.Родитель                               КАК ГР1,
        |//ДанныеНоменклатурыПартнера
        |    ТаблицаДокумента.Характеристика                            КАК Характеристика,
        |    ТаблицаДокумента.Серия                                     КАК Серия,
        |    ТаблицаДокумента.Упаковка                                  КАК Упаковка,
        |    ТаблицаДокумента.НомерГТД                                  КАК НомерГТД,
        |//ДанныеТНВЭД
        |    ТаблицаДокумента.Количество                                КАК Количество,
        |    ТаблицаДокумента.КоличествоУпаковок                        КАК КоличествоУпаковок,
        |    ТаблицаДокумента.КоличествоПоРНПТ                          КАК КоличествоПоРНПТ,
        |    ТаблицаДокумента.СуммаБезНДС                               КАК СуммаБезНДС,
        |    ТаблицаДокумента.СтавкаНДС                                 КАК СтавкаНДС,
        |    ТаблицаДокумента.СуммаНДС                                  КАК СуммаНДС,
        |    %Содержание                                                КАК Содержание,
        |//ДанныеКомиссионера
        |//ДанныеНабора
        |//ДанныеКорректировки
        |//ДанныеСФ
        |    ТаблицаДокумента.ЭтоТовар                                  КАК ЭтоТовар,
        |    ТаблицаДокумента.ВернутьМногооборотнуюТару                 КАК ВернутьМногооборотнуюТару
        |//ОператорПОМЕСТИТЬ
        |ИЗ
        |    " + ИмяОбъекта + "ТаблицаТоваров КАК ТаблицаДокумента";
        
        Если ИмяОбъекта = "АктВыполненныхРабот"
                Или ИмяОбъекта = "СчетФактураВыданный"
                Или ИмяОбъекта = "РеализацияТоваровУслуг"
                Или ИмяОбъекта = "КорректировкаРеализации" Тогда
            ТекстЗамены = "    ТаблицаДокумента.НоменклатураПартнера             КАК НоменклатураПартнера,";
        Иначе
            ТекстЗамены = "    ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка) КАК НоменклатураПартнера,";
        КонецЕсли;        
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеНоменклатурыПартнера", ТекстЗамены);
        
        Если ИмяОбъекта = "АктВыполненныхРабот"
                Или ИмяОбъекта = "КорректировкаРеализации"
                Или ИмяОбъекта = "РеализацияУслугПрочихАктивов"
                Или ИмяОбъекта = "СчетФактураВыданный"
                Или ИмяОбъекта = "ЗаписьКнигиПродаж" Тогда
            ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%Содержание", "ТаблицаДокумента.Содержание");
        Иначе
            ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%Содержание", """""");
        КонецЕсли;
        
        Если ИмяОбъекта = "ОтчетКомиссионера" Тогда
            ТекстЗамены =
            "    ТаблицаДокумента.Покупатель                    КАК Покупатель,
            |    ТаблицаДокумента.НомерСчетаФактурыКомиссионера КАК НомерСчетаФактуры,";
        ИначеЕсли ИмяОбъекта = "РеализацияТоваровУслуг" Тогда
            ТекстЗамены =
            "    ТаблицаДокумента.Покупатель                    КАК Покупатель,
            |    ТаблицаДокумента.НомерСчетаФактурыКомиссионера КАК НомерСчетаФактуры,";
        Иначе
            ТекстЗамены =
            "    ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Покупатель,
            |    """"                                          КАК НомерСчетаФактуры,";
        КонецЕсли;
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеКомиссионера", ТекстЗамены);
        
        Если ИмяОбъекта = "АктВыполненныхРабот"
            Или ИмяОбъекта = "РеализацияТоваровУслуг"
            Или ИмяОбъекта = "КорректировкаРеализации"
            ИЛИ ИмяОбъекта = "СчетФактураВыданный" Тогда
            ЕстьНаборы = Истина;
            ТекстЗамены =
            "    ТаблицаДокумента.ВариантКомплектацииНоменклатуры             КАК ВариантКомплектацииНоменклатуры,
            |    ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах   КАК ВариантПредставленияНабораВПечатныхФормах,
            |    ТаблицаДокумента.ВариантРасчетаЦеныНабора                    КАК ВариантРасчетаЦеныНабора,
            |    ТаблицаДокумента.НоменклатураНабора                          КАК НоменклатураНабора,
            |    ТаблицаДокумента.ХарактеристикаНабора                        КАК ХарактеристикаНабора,";
        Иначе
            ТекстЗамены =
            "    НЕОПРЕДЕЛЕНО                                                 КАК ВариантКомплектацииНоменклатуры,
            |    НЕОПРЕДЕЛЕНО                                                 КАК ВариантПредставленияНабораВПечатныхФормах,
            |    НЕОПРЕДЕЛЕНО                                                 КАК ВариантРасчетаЦеныНабора,
            |    &ПустаяНоменклатура                                          КАК НоменклатураНабора,
            |    НЕОПРЕДЕЛЕНО                                                 КАК ХарактеристикаНабора,";
        КонецЕсли;
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеНабора", ТекстЗамены);
        
        Если ИмяОбъекта = "КорректировкаРеализации" Или ИмяОбъекта = "ВозвратТоваровОтКлиента" Или ИмяОбъекта = "ВозвратТоваровМеждуОрганизациями"
                Или ИмяОбъекта = "СчетФактураВыданный" Тогда
            ТекстЗамены =
            "    ТаблицаДокумента.КоличествоДо                                КАК КоличествоДо,
            |    ТаблицаДокумента.КоличествоУпаковокДо                        КАК КоличествоУпаковокДо,
            |    ТаблицаДокумента.КоличествоПоРНПТДо                          КАК КоличествоПоРНПТДо,
            |    ТаблицаДокумента.КоличествоПоРНПТУвеличение                  КАК КоличествоПоРНПТУвеличение,
            |    ТаблицаДокумента.КоличествоПоРНПТУменьшение                  КАК КоличествоПоРНПТУменьшение,
            |    ТаблицаДокумента.СуммаБезНДСДо                               КАК СуммаБезНДСДо,
            |    ТаблицаДокумента.СуммаНДСДо                                  КАК СуммаНДСДо,
            |    ТаблицаДокумента.РазницаБезНДСУвеличение                     КАК РазницаБезНДСУвеличение,
            |    ТаблицаДокумента.РазницаБезНДСУменьшение                     КАК РазницаБезНДСУменьшение,
            |    ТаблицаДокумента.РазницаНДСУвеличение                        КАК РазницаНДСУвеличение,
            |    ТаблицаДокумента.РазницаНДСУменьшение                        КАК РазницаНДСУменьшение,
            |    ТаблицаДокумента.РазницаСНДСУвеличение                       КАК РазницаСНДСУвеличение,
            |    ТаблицаДокумента.РазницаСНДСУменьшение                       КАК РазницаСНДСУменьшение,";
        Иначе
            ТекстЗамены =
            "    0                                                            КАК КоличествоДо,
            |    0                                                            КАК КоличествоУпаковокДо,
            |    0                                                            КАК КоличествоПоРНПТДо,
            |    0                                                            КАК КоличествоПоРНПТУвеличение,
            |    0                                                            КАК КоличествоПоРНПТУменьшение,
            |    0                                                            КАК СуммаБезНДСДо,
            |    0                                                            КАК СуммаНДСДо,
            |    0                                                            КАК РазницаБезНДСУвеличение,
            |    0                                                            КАК РазницаБезНДСУменьшение,
            |    0                                                            КАК РазницаНДСУвеличение,
            |    0                                                            КАК РазницаНДСУменьшение,
            |    0                                                            КАК РазницаСНДСУвеличение,
            |    0                                                            КАК РазницаСНДСУменьшение,";
        КонецЕсли;
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеКорректировки", ТекстЗамены);
        
        Если ИмяОбъекта = "ЗаписьКнигиПродаж"
            Или ИмяОбъекта = "РеализацияТоваровУслуг"
            Или ИмяОбъекта = "СчетФактураВыданный"
            Или ИмяОбъекта = "РеализацияУслугПрочихАктивов"
            Или ИмяОбъекта = "КорректировкаРеализации" Тогда
            ТекстЗамены = "    ТаблицаДокумента.КодТНВЭД             КАК КодТНВЭД,";
        Иначе
            ТекстЗамены = "    ЗНАЧЕНИЕ(Справочник.КлассификаторТНВЭД.ПустаяСсылка) КАК КодТНВЭД,";
        КонецЕсли;
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеТНВЭД", ТекстЗамены);
        
        Если ИмяОбъекта = "ОтчетКомитентуОЗакупках" Тогда
            ТекстЗамены = "    ТаблицаДокумента.СсылкаСФ             КАК СсылкаСФ,";
        Иначе
            ТекстЗамены = "    НЕОПРЕДЕЛЕНО                          КАК СсылкаСФ,";
        КонецЕсли;
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеСФ", ТекстЗамены);
        
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
            "//ОператорПОМЕСТИТЬ", ?(ПервыйТип, "ПОМЕСТИТЬ ТаблицаТоваров", ""));
        
        КолонкиВТ = МенеджерВременныхТаблиц.Таблицы[ИмяОбъекта + "ТаблицаТоваров"].Колонки; //КолонкиВременнойТаблицыЗапроса
        Если КолонкиВТ.Найти("НомерСтрокиИсходногоСФ") = Неопределено Тогда
            ТекстЗапроса =
                СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос(
                    ТекстЗапроса, "0", "НомерСтрокиИсходногоСФ");
        Иначе
            ТекстЗапроса =
                СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос(
                    ТекстЗапроса, "ТаблицаДокумента.НомерСтрокиИсходногоСФ", "НомерСтрокиИсходногоСФ");
        КонецЕсли;
        
        ТекстыОбщейТаблицыТоваров.Добавить(ТекстЗапроса);
        
        ПервыйТип = Ложь;
        
    КонецЦикла;
    
    ТекстОбщейТаблицыТовары =
        СтрСоединить(ТекстыОбщейТаблицыТоваров, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
    
    ТекстОбщейТаблицыТовары = ТекстОбщейТаблицыТовары + "
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |";
    
    ТекстТаблицыНаборов =
    "ВЫБРАТЬ
    |    ТаблицаТоваров.Ссылка                                             КАК Ссылка,
    |    ТаблицаТоваров.НоменклатураНабора                                 КАК НоменклатураНабора,
    |    ТаблицаТоваров.ХарактеристикаНабора                               КАК ХарактеристикаНабора,
    |    ТаблицаТоваров.СтавкаНДС                                          КАК СтавкаНДС,
    |    МАКСИМУМ(ТаблицаТоваров.КодТНВЭД)                                 КАК КодТНВЭД,
    |    МИНИМУМ(ТаблицаТоваров.НомерСтроки)                               КАК НомерСтроки,
    |    МИНИМУМ(ТаблицаТоваров.НомерСтрокиИсходногоСФ)                    КАК НомерСтрокиИсходногоСФ,
    |    СУММА(ТаблицаТоваров.СуммаБезНДСДо)                               КАК СуммаБезНДСДо,
    |    СУММА(ТаблицаТоваров.СуммаНДСДо)                                  КАК СуммаНДСДо,
    |    СУММА(ТаблицаТоваров.РазницаБезНДСУвеличение)                     КАК РазницаБезНДСУвеличение,
    |    СУММА(ТаблицаТоваров.РазницаБезНДСУменьшение)                     КАК РазницаБезНДСУменьшение,
    |    СУММА(ТаблицаТоваров.РазницаНДСУвеличение)                        КАК РазницаНДСУвеличение,
    |    СУММА(ТаблицаТоваров.РазницаНДСУменьшение)                        КАК РазницаНДСУменьшение,
    |    СУММА(ТаблицаТоваров.РазницаСНДСУвеличение)                       КАК РазницаСНДСУвеличение,
    |    СУММА(ТаблицаТоваров.РазницаСНДСУменьшение)                       КАК РазницаСНДСУменьшение,
    |    СУММА(ТаблицаТоваров.СуммаБезНДС)                                 КАК СуммаБезНДС,
    |    СУММА(ТаблицаТоваров.СуммаНДС)                                    КАК СуммаНДС,
    |    ТаблицаТоваров.СсылкаСФ                                           КАК СсылкаСФ,
    |    ТаблицаТоваров.Покупатель                                         КАК Покупатель,
    |    ТаблицаТоваров.НомерСчетаФактуры                                  КАК НомерСчетаФактуры
    |ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
    |ИЗ
    |    ТаблицаТоваров КАК ТаблицаТоваров
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
    |        ПО ДанныеНоменклатуры.Ссылка = ТаблицаТоваров.Номенклатура
    |
    |ГДЕ
    |    ТаблицаТоваров.НоменклатураНабора <> &ПустаяНоменклатура
    |    И (ДанныеНоменклатуры.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
    |        ИЛИ НЕ ТаблицаТоваров.ВернутьМногооборотнуюТару)
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаТоваров.Ссылка,
    |    ТаблицаТоваров.НоменклатураНабора,
    |    ТаблицаТоваров.ХарактеристикаНабора,
    |    ТаблицаТоваров.СтавкаНДС,
    |    ТаблицаТоваров.СсылкаСФ,
    |    ТаблицаТоваров.Покупатель,
    |    ТаблицаТоваров.НомерСчетаФактуры
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ТаблицаТоваров.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ТоварыРазличные
    |ИЗ
    |    ТаблицаТоваров КАК ТаблицаТоваров
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Товары.Ссылка                                    КАК Ссылка,
    |    Товары.ВариантКомплектацииНоменклатуры           КАК ВариантКомплектацииНоменклатуры,
    |    Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
    |    Товары.ВариантРасчетаЦеныНабора                  КАК ВариантРасчетаЦеныНабора,
    |    Товары.НоменклатураНабора,
    |    Товары.ХарактеристикаНабора,
    |    Товары.Номенклатура,
    |    Товары.Характеристика,
    |    ВЫБОР КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
    |        И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика ТОГДА
    |        ИСТИНА
    |    ИНАЧЕ
    |        ЛОЖЬ
    |    КОНЕЦ КАК ОсновнаяКомплектующая,
    |    Товары.СтавкаНДС КАК СтавкаНДС,
    |    ВЫБОР
    |        КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
    |                И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика
    |            ТОГДА Товары.НомерГТД
    |        ИНАЧЕ NULL
    |    КОНЕЦ КАК НомерГТД,
    |    0 КАК КоличествоПоУмолчанию,
    |    Товары.КоличествоДо КАК КоличествоДо,
    |    Товары.Количество КАК Количество,
    |    Товары.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо,
    |    Товары.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
    |    Товары.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
    |    Товары.КоличествоПоРНПТ КАК КоличествоПоРНПТ
    |ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
    |ИЗ
    |    ТаблицаТоваров КАК Товары
    |
    |ГДЕ
    |    Товары.НоменклатураНабора <> &ПустаяНоменклатура
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ТоварыРазличные.Ссылка                                                                  КАК Ссылка,
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка                                           КАК ВариантКомплектацииНоменклатуры,
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора                  КАК ВариантРасчетаЦеныНабора,
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец                                  КАК НоменклатураНабора,
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика                            КАК ХарактеристикаНабора,
    |    ВариантыКомплектацииНоменклатурыТовары.Номенклатура   КАК Номенклатура,
    |    ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
    |    ЛОЖЬ КАК ОсновнаяКомплектующая,
    |    НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
    |    NULL КАК НомерГТД,
    |    СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество) КАК КоличествоПоУмолчанию,
    |    0 КАК КоличествоДо,
    |    0 КАК Количество,
    |    0 КАК КоличествоПоРНПТДо,
    |    0 КАК КоличествоПоРНПТУвеличение,
    |    0 КАК КоличествоПоРНПТУменьшение,
    |    0 КАК КоличествоПоРНПТ
    |ИЗ
    |    Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
    |        ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРазличные КАК ТоварыРазличные
    |        ПО ИСТИНА
    |ГДЕ
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Т.ВариантКомплектацииНоменклатуры ИЗ ТаблицаТоваров КАК Т)
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыРазличные.Ссылка,
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка,
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец,
    |    ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика,
    |    ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
    |    ВариантыКомплектацииНоменклатурыТовары.Характеристика,
    |    ВариантыКомплектацииНоменклатурыТовары.Упаковка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Таблица.Ссылка,
    |    Таблица.ВариантКомплектацииНоменклатуры,
    |    Таблица.ВариантРасчетаЦеныНабора,
    |    Таблица.ВариантПредставленияНабораВПечатныхФормах,
    |    Таблица.НоменклатураНабора,
    |    Таблица.ХарактеристикаНабора,
    |    Таблица.Номенклатура,
    |    Таблица.Характеристика,
    |    МАКСИМУМ(Таблица.НомерГТД) КАК НомерГТД,
    |    МАКСИМУМ(Таблица.СтавкаНДС) КАК СтавкаНДС,
    |    МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая,
    |    СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
    |    СУММА(Таблица.КоличествоДо) КАК КоличествоДо,
    |    СУММА(Таблица.Количество) КАК Количество,
    |    СУММА(Таблица.КоличествоПоРНПТДо) КАК КоличествоПоРНПТДо,
    |    СУММА(Таблица.КоличествоПоРНПТУвеличение) КАК КоличествоПоРНПТУвеличение,
    |    СУММА(Таблица.КоличествоПоРНПТУменьшение) КАК КоличествоПоРНПТУменьшение,
    |    СУММА(Таблица.КоличествоПоРНПТ) КАК КоличествоПоРНПТ
    |ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
    |ИЗ
    |    ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
    |
    |СГРУППИРОВАТЬ ПО
    |    Таблица.Ссылка,
    |    Таблица.ВариантКомплектацииНоменклатуры,
    |    Таблица.ВариантРасчетаЦеныНабора,
    |    Таблица.ВариантПредставленияНабораВПечатныхФормах,
    |    Таблица.НоменклатураНабора,
    |    Таблица.ХарактеристикаНабора,
    |    Таблица.Номенклатура,
    |    Таблица.Характеристика
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Результат.Ссылка,
    |    Результат.ВариантКомплектацииНоменклатуры,
    |    Результат.ВариантРасчетаЦеныНабора,
    |    Результат.ВариантПредставленияНабораВПечатныхФормах,
    |    Результат.НоменклатураНабора,
    |    Результат.ХарактеристикаНабора,
    |    МАКСИМУМ(ВЫБОР
    |            КОГДА Результат.ОсновнаяКомплектующая
    |                ТОГДА Результат.СтавкаНДС
    |            ИНАЧЕ null
    |        КОНЕЦ) КАК СтавкаНДС,
    |    МАКСИМУМ(Результат.НомерГТД) КАК НомерГТД,
    |    ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
    |            КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая
    |                ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
    |            ИНАЧЕ null
    |        КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество,
    |    ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
    |            КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая
    |                ТОГДА Результат.КоличествоДо / Результат.КоличествоПоУмолчанию
    |            ИНАЧЕ null
    |        КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК КоличествоДо,
    |    МАКСИМУМ(Результат.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
    |    МАКСИМУМ(Результат.КоличествоПоРНПТДо) КАК КоличествоПоРНПТДо,
    |    МАКСИМУМ(Результат.КоличествоПоРНПТУвеличение) КАК КоличествоПоРНПТУвеличение,
    |    МАКСИМУМ(Результат.КоличествоПоРНПТУменьшение) КАК КоличествоПоРНПТУменьшение,
    |    МАКСИМУМ(ВЫБОР
    |            КОГДА Результат.КоличествоПоУмолчанию <> 0
    |                ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
    |            ИНАЧЕ null
    |        КОНЕЦ) КАК КоэффициентМаксимум,
    |    ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
    |            КОГДА Результат.КоличествоПоУмолчанию <> 0
    |                ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
    |            ИНАЧЕ null
    |        КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК КоэффициентМинимум
    |ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
    |ИЗ
    |    ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
    |СГРУППИРОВАТЬ ПО
    |    Результат.Ссылка,
    |    Результат.ВариантКомплектацииНоменклатуры,
    |    Результат.ВариантРасчетаЦеныНабора,
    |    Результат.ВариантПредставленияНабораВПечатныхФормах,
    |    Результат.НоменклатураНабора,
    |    Результат.ХарактеристикаНабора
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры,
    |
    |    ВЫБОР КОГДА ДанныеОснований.ХозяйственнаяОперация В (&ХозяйственныеОперацииПередачаНаКомиссию)
    |            И ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = &ВариантТолькоНабор ТОГДА
    |        &ВариантНаборИКомплектующие
    |    ИНАЧЕ
    |        ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
    |    КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
    |
    |    ВЫБОР КОГДА ДанныеОснований.ХозяйственнаяОперация В (&ХозяйственныеОперацииПередачаНаКомиссию) ТОГДА
    |        ВЫБОР КОГДА
    |            ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = &ВариантТолькоНабор ТОГДА
    |                &ВариантНаборИКомплектующие
    |            ИНАЧЕ
    |                ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
    |            КОНЕЦ = &ВариантНаборИКомплектующие
    |            И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В (
    |                ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам),
    |                ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям)) ТОГДА
    |
    |            ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих)
    |        ИНАЧЕ
    |            ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
    |        КОНЕЦ
    |    ИНАЧЕ
    |        ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
    |    КОНЕЦ КАК ВариантРасчетаЦеныНабора,
    |
    |    Таблица.Ссылка                            КАК Ссылка,
    |    Таблица.НоменклатураНабора                КАК НоменклатураНабора,
    |    Таблица.ХарактеристикаНабора              КАК ХарактеристикаНабора,
    |    Таблица.НомерСтроки                       КАК НомерСтроки,
    |    Таблица.НомерСтрокиИсходногоСФ            КАК НомерСтрокиИсходногоСФ,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТ, 1) КАК КоличествоПоРНПТ,
    |    ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.КоэффициентМинимум = ВременнаяТаблицаНаборыДополнительно.КоэффициентМаксимум ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ПолныйНабор,
    |    Таблица.СуммаБезНДС                       КАК СуммаБезНДС,
    |    Таблица.СуммаНДС                          КАК СуммаНДС,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоДо, 1) КАК КоличествоУпаковокДо,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоДо, 1) КАК КоличествоДо,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТДо, 1) КАК КоличествоПоРНПТДо,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТУвеличение, 1) КАК КоличествоПоРНПТУвеличение,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТУменьшение, 1) КАК КоличествоПоРНПТУменьшение,
    |    Таблица.СуммаБезНДСДо                     КАК СуммаБезНДСДо,
    |    Таблица.СуммаНДСДо                        КАК СуммаНДСДо,
    |    Таблица.РазницаБезНДСУвеличение           КАК РазницаБезНДСУвеличение,
    |    Таблица.РазницаБезНДСУменьшение           КАК РазницаБезНДСУменьшение,
    |    Таблица.РазницаНДСУвеличение              КАК РазницаНДСУвеличение,
    |    Таблица.РазницаНДСУменьшение              КАК РазницаНДСУменьшение,
    |    Таблица.РазницаСНДСУвеличение             КАК РазницаСНДСУвеличение,
    |    Таблица.РазницаСНДСУменьшение             КАК РазницаСНДСУменьшение,
    |    Таблица.КодТНВЭД                          КАК КодТНВЭД,
    |    Таблица.СтавкаНДС                         КАК СтавкаНДС,
    |    ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.НомерГТД, ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка)) КАК НомерГТД,
    |    Таблица.СсылкаСФ                          КАК СсылкаСФ,
    |    Таблица.Покупатель                        КАК Покупатель,
    |    Таблица.НомерСчетаФактуры                 КАК НомерСчетаФактуры
    |ПОМЕСТИТЬ ВременнаяТаблицаНаборы
    |ИЗ
    |    ВременнаяТаблицаНаборыПодготовка КАК Таблица
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
    |        ПО Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
    |        И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
    |        И Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
    |    
    |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаДанныхДокументов КАК ДанныеОснований
    |    ПО ДанныеОснований.Ссылка = Таблица.Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |";
    
    ТекстРезультирующейТаблицы =
    "ВЫБРАТЬ
    |    ТаблицаТоваров.Ссылка                                    КАК Ссылка,
    |    ТаблицаТоваров.НомерСтроки                               КАК НомерСтроки,
    |    ТаблицаТоваров.НомерСтрокиИсходногоСФ                    КАК НомерСтрокиИсходногоСФ,
    |    ТаблицаТоваров.Номенклатура                              КАК Номенклатура,
    |    ТаблицаТоваров.НоменклатураПартнера                      КАК НоменклатураПартнера,
    |    ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА
    |        ДанныеНоменклатуры.НаименованиеПолное
    |    ИНАЧЕ
    |        ТаблицаТоваров.Содержание
    |    КОНЕЦ                                                    КАК НоменклатураНаименование,
    |    ВЫБОР КОГДА &КолонкаКодов = ""Артикул"" ТОГДА
    |        ДанныеНоменклатуры.Артикул
    |    ИНАЧЕ
    |        ДанныеНоменклатуры.Код
    |    КОНЕЦ                                                    КАК НоменклатураКод,
    |    ТаблицаТоваров.КодТНВЭД                                  КАК КодТНВЭД,
    |    ВЫБОР
    |        КОГДА ДанныеНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
    |                И ТаблицаТоваров.ВернутьМногооборотнуюТару
    |            ТОГДА ИСТИНА
    |        ИНАЧЕ ЛОЖЬ
    |    КОНЕЦ                                                    КАК ЭтоВозвратнаяТара,
    |    ВЫБОР
    |        КОГДА &ВыводитьБазовыеЕдиницыИзмерения И ТаблицаТоваров.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
    |                И ТаблицаТоваров.Номенклатура <> НЕОПРЕДЕЛЕНО
    |            ТОГДА ДанныеНоменклатуры.ЕдиницаИзмерения
    |        ИНАЧЕ &ТекстЗапросаЕдиницаИзмерения
    |    КОНЕЦ                                                    КАК ЕдиницаИзмерения,
    |    ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА
    |        ТаблицаТоваров.Характеристика
    |    ИНАЧЕ
    |        """"
    |    КОНЕЦ                                                    КАК Характеристика,
    |    ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА
    |        ТаблицаТоваров.Серия
    |    ИНАЧЕ
    |        ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
    |    КОНЕЦ                                                    КАК Серия,
    |
    |    ТаблицаТоваров.НомерГТД                                  КАК НомерГТД,
    |    ТаблицаТоваров.СтавкаНДС                                 КАК СтавкаНДС,
    |    ТаблицаТоваров.Упаковка                                  КАК Упаковка,
    |
    |//РеквизитыТаблицыНаборов
    |
    |    ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
    |        ТаблицаТоваров.Количество
    |    КОГДА ТаблицаТоваров.КоличествоУпаковок = 0 ТОГДА
    |        ТаблицаТоваров.Количество
    |    ИНАЧЕ
    |        ТаблицаТоваров.КоличествоУпаковок
    |    КОНЕЦ                                                    КАК Количество,
    |    ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
    |        ТаблицаТоваров.КоличествоДо
    |    КОГДА ТаблицаТоваров.КоличествоУпаковокДо = 0 ТОГДА
    |        ТаблицаТоваров.КоличествоДо
    |    ИНАЧЕ
    |        ТаблицаТоваров.КоличествоУпаковокДо
    |    КОНЕЦ                                                    КАК КоличествоДо,
    |    ТаблицаТоваров.КоличествоПоРНПТ                          КАК КоличествоПоРНПТ,
    |    ТаблицаТоваров.КоличествоПоРНПТДо                        КАК КоличествоПоРНПТДо,
    |    ТаблицаТоваров.КоличествоПоРНПТУвеличение                КАК КоличествоПоРНПТУвеличение,
    |    ТаблицаТоваров.КоличествоПоРНПТУменьшение                КАК КоличествоПоРНПТУменьшение,
    |    ВЫРАЗИТЬ(ВЫБОР КОГДА ТаблицаТоваров.Количество = 0 ТОГДА
    |        0
    |    КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
    |        ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.Количество
    |    КОГДА ТаблицаТоваров.КоличествоУпаковок = 0 ТОГДА
    |        ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.Количество
    |    ИНАЧЕ
    |        ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.КоличествоУпаковок
    |    КОНЕЦ КАК ЧИСЛО(21,8))                                   КАК Цена,
    |    ВЫБОР КОГДА ТаблицаТоваров.КоличествоДо = 0 ТОГДА
    |        0
    |    КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
    |        ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоДо
    |    КОГДА ТаблицаТоваров.КоличествоУпаковокДо = 0 ТОГДА
    |        ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоДо
    |    ИНАЧЕ
    |        ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоУпаковокДо
    |    КОНЕЦ                                                    КАК ЦенаДо,
    |    ТаблицаТоваров.СуммаБезНДС                               КАК СуммаБезНДС,
    |    ТаблицаТоваров.СуммаБезНДСДо                             КАК СуммаБезНДСДо,
    |    ТаблицаТоваров.СуммаНДС                                  КАК СуммаНДС,
    |    ТаблицаТоваров.СуммаНДСДо                                КАК СуммаНДСДо,
    |    ТаблицаТоваров.РазницаБезНДСУвеличение                   КАК РазницаБезНДСУвеличение,
    |    ТаблицаТоваров.РазницаБезНДСУменьшение                   КАК РазницаБезНДСУменьшение,
    |    ТаблицаТоваров.РазницаНДСУвеличение                      КАК РазницаНДСУвеличение,
    |    ТаблицаТоваров.РазницаНДСУменьшение                      КАК РазницаНДСУменьшение,
    |    ТаблицаТоваров.РазницаСНДСУвеличение                     КАК РазницаСНДСУвеличение,
    |    ТаблицаТоваров.РазницаСНДСУменьшение                     КАК РазницаСНДСУменьшение,
    |    ТаблицаТоваров.СсылкаСФ                                  КАК СсылкаСФ,
    |    ТаблицаТоваров.Покупатель                                КАК Покупатель,
    |    ТаблицаТоваров.НомерСчетаФактуры                         КАК НомерСчетаФактуры
    |
    |ПОМЕСТИТЬ ТаблицаТоваровДокументов
    |ИЗ
    |    ТаблицаТоваров КАК ТаблицаТоваров
    |//СоединениеТаблицыНаборов
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
    |        ПО ТаблицаТоваров.Номенклатура = ДанныеНоменклатуры.Ссылка
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК ДанныеУпаковки
    |        ПО НЕ &ВыводитьБазовыеЕдиницыИзмерения
    |            И ТаблицаТоваров.Упаковка = ДанныеУпаковки.Ссылка
    |ГДЕ
    |    ТаблицаТоваров.НоменклатураНабора = &ПустаяНоменклатура
    |    ИЛИ (ТаблицаТоваров.НоменклатураНабора <> &ПустаяНоменклатура
    |        И ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах В (
    |        &ВариантТолькоКомплектующие, &ВариантНаборИКомплектующие))";
    
    Если ЕстьНаборы Тогда
        
        ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//РеквизитыТаблицыНаборов",
        "    ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
        |        ВременнаяТаблицаНаборы.НомерСтроки
        |    ИНАЧЕ
        |        ТаблицаТоваров.НомерСтроки
        |    КОНЕЦ                                                    КАК НомерСтрокиНаборы,
        |    ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
        |        ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах
        |    ИНАЧЕ
        |        &ПустойВариантПредставленияНаборов
        |    КОНЕЦ                                                    КАК ВариантПредставленияНабораВПечатныхФормах,
        |    ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
        |        ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора
        |    ИНАЧЕ
        |        &ПустойВариантРасчетаЦенНаборов
        |    КОНЕЦ                                                    КАК ВариантРасчетаЦеныНабора,
        |    ТаблицаТоваров.НоменклатураНабора                        КАК НоменклатураНабора,
        |    ТаблицаТоваров.ХарактеристикаНабора                      КАК ХарактеристикаНабора,
        |    ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
        |        ИСТИНА
        |    ИНАЧЕ
        |        ЛОЖЬ
        |    КОНЕЦ                                                    КАК ЭтоКомплектующие,
        |    ЛОЖЬ                                                     КАК ЭтоНабор,
        |    ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
        |        ВременнаяТаблицаНаборы.ПолныйНабор
        |    ИНАЧЕ
        |        ЛОЖЬ
        |    КОНЕЦ                                                    КАК ПолныйНабор,");
        
        ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//СоединениеТаблицыНаборов",
        "        ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
        |        ПО ВременнаяТаблицаНаборы.НоменклатураНабора = ТаблицаТоваров.НоменклатураНабора
        |            И ВременнаяТаблицаНаборы.ХарактеристикаНабора = ТаблицаТоваров.ХарактеристикаНабора
        |            И ВременнаяТаблицаНаборы.Ссылка = ТаблицаТоваров.Ссылка
        |            И ВременнаяТаблицаНаборы.СтавкаНДС = ТаблицаТоваров.СтавкаНДС");
        
        ТекстРезультирующейТаблицы = ТекстРезультирующейТаблицы + "
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |" +
        
        "ВЫБРАТЬ
        |    ВременнаяТаблицаНаборы.Ссылка               КАК Ссылка,
        |    0                                           КАК НомерСтроки,
        |    ВременнаяТаблицаНаборы.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
        |    ВременнаяТаблицаНаборы.НоменклатураНабора   КАК Номенклатура,
        |    ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка) КАК НоменклатураПартнера,
        |    ДанныеНоменклатуры.НаименованиеПолное       КАК НоменклатураНаименование,
        |    ВЫБОР КОГДА &КолонкаКодов = ""Артикул"" ТОГДА
        |        ДанныеНоменклатуры.Артикул
        |    ИНАЧЕ
        |        ДанныеНоменклатуры.Код
        |    КОНЕЦ                                       КАК НоменклатураКод,
        |    ВременнаяТаблицаНаборы.КодТНВЭД             КАК КодТНВЭД,
        |    ЛОЖЬ                                        КАК ЭтоВозвратнаяТара,
        |    ДанныеНоменклатуры.ЕдиницаИзмерения         КАК ЕдиницаИзмерения,
        |    ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК Характеристика,
        |    ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
        |    ВременнаяТаблицаНаборы.НомерГТД             КАК НомерГТД,
        |    ВременнаяТаблицаНаборы.СтавкаНДС КАК СтавкаНДС,
        |    ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,        
        |    ВременнаяТаблицаНаборы.НомерСтроки КАК НомерСтрокиНаборы,
        |    ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
        |    ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора                  КАК ВариантРасчетаЦеныНабора,
        |    ВременнаяТаблицаНаборы.НоменклатураНабора                        КАК НоменклатураНабора,
        |    ВременнаяТаблицаНаборы.ХарактеристикаНабора                      КАК ХарактеристикаНабора,
        |    ЛОЖЬ                                                             КАК ЭтоКомплектующие,
        |    ИСТИНА                                                           КАК ЭтоНабор,
        |    ВременнаяТаблицаНаборы.ПолныйНабор                               КАК ПолныйНабор,
        |
        |    ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
        |        ВременнаяТаблицаНаборы.Количество
        |    ИНАЧЕ
        |        ВременнаяТаблицаНаборы.КоличествоУпаковок
        |    КОНЕЦ                                       КАК Количество,
        |    ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
        |        ВременнаяТаблицаНаборы.КоличествоДо
        |    ИНАЧЕ
        |        ВременнаяТаблицаНаборы.КоличествоУпаковокДо
        |    КОНЕЦ                                                    КАК КоличествоДо,
        |    ВременнаяТаблицаНаборы.КоличествоПоРНПТ                  КАК КоличествоПоРНПТ,
        |    ВременнаяТаблицаНаборы.КоличествоПоРНПТДо                КАК КоличествоПоРНПТДо,
        |    ВременнаяТаблицаНаборы.КоличествоПоРНПТУвеличение        КАК КоличествоПоРНПТУвеличение,
        |    ВременнаяТаблицаНаборы.КоличествоПоРНПТУменьшение        КАК КоличествоПоРНПТУменьшение,
        |    ВЫБОР КОГДА ВременнаяТаблицаНаборы.Количество = 0 ТОГДА
        |        0
        |    КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
        |        ВременнаяТаблицаНаборы.СуммаБезНДС / ВременнаяТаблицаНаборы.Количество
        |    ИНАЧЕ
        |        ВременнаяТаблицаНаборы.СуммаБезНДС / ВременнаяТаблицаНаборы.КоличествоУпаковок
        |    КОНЕЦ                                       КАК Цена,
        |    ВЫБОР КОГДА ВременнаяТаблицаНаборы.КоличествоДо = 0 ТОГДА
        |        0
        |    КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
        |        ВременнаяТаблицаНаборы.СуммаБезНДСДо / ВременнаяТаблицаНаборы.КоличествоДо
        |    ИНАЧЕ
        |        ВременнаяТаблицаНаборы.СуммаБезНДСДо / ВременнаяТаблицаНаборы.КоличествоУпаковокДо
        |    КОНЕЦ                                             КАК ЦенаДо,
        |    ВременнаяТаблицаНаборы.СуммаБезНДС                КАК СуммаБезНДС,
        |    ВременнаяТаблицаНаборы.СуммаБезНДСДо              КАК СуммаБезНДСДо,
        |    ВременнаяТаблицаНаборы.СуммаНДС                   КАК СуммаНДС,
        |    ВременнаяТаблицаНаборы.СуммаНДСДо                 КАК СуммаНДСДо,
        |    ВременнаяТаблицаНаборы.РазницаБезНДСУвеличение    КАК РазницаБезНДСУвеличение,
        |    ВременнаяТаблицаНаборы.РазницаБезНДСУменьшение    КАК РазницаБезНДСУменьшение,
        |    ВременнаяТаблицаНаборы.РазницаНДСУвеличение       КАК РазницаНДСУвеличение,
        |    ВременнаяТаблицаНаборы.РазницаНДСУменьшение       КАК РазницаНДСУменьшение,
        |    ВременнаяТаблицаНаборы.РазницаСНДСУвеличение      КАК РазницаСНДСУвеличение,
        |    ВременнаяТаблицаНаборы.РазницаСНДСУменьшение      КАК РазницаСНДСУменьшение,
        |    ВременнаяТаблицаНаборы.СсылкаСФ                   КАК СсылкаСФ,
        |    ВременнаяТаблицаНаборы.Покупатель                 КАК Покупатель,
        |    ВременнаяТаблицаНаборы.НомерСчетаФактуры          КАК НомерСчетаФактуры
        |
        |ИЗ
        |    ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
        |        ПО ВременнаяТаблицаНаборы.НоменклатураНабора = ДанныеНоменклатуры.Ссылка
        |
        |ГДЕ
        |    ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (
        |        &ВариантТолькоНабор, &ВариантНаборИКомплектующие)";
        
    Иначе
        
        ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//РеквизитыТаблицыНаборов",
        "    ТаблицаТоваров.НомерСтроки          КАК НомерСтрокиНаборы,
        |    &ПустойВариантПредставленияНаборов  КАК ВариантПредставленияНабораВПечатныхФормах,
        |    &ПустойВариантРасчетаЦенНаборов     КАК ВариантРасчетаЦеныНабора,
        |    ТаблицаТоваров.НоменклатураНабора   КАК НоменклатураНабора,
        |    ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
        |    ЛОЖЬ                                КАК ЭтоКомплектующие,
        |    ЛОЖЬ                                КАК ЭтоНабор,
        |    ЛОЖЬ                                КАК ПолныйНабор,");
        
    КонецЕсли;
    
    Запрос.Текст = ТекстОбщейТаблицыТовары +
        ?(ЕстьНаборы, ТекстТаблицыНаборов, "") +
        ТекстРезультирующейТаблицы;
    
    Запрос.Текст = СтрЗаменить(
        Запрос.Текст,
        "&ТекстЗапросаЕдиницаИзмерения",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
            "Ссылка",
            "ТаблицаТоваров.Упаковка",
            ?(ИмяОбъекта = "РеализацияУслугПрочихАктивов","","ТаблицаТоваров.Номенклатура")));
    
    Запрос.УстановитьПараметр("ВыводитьБазовыеЕдиницыИзмерения", Константы.ВыводитьБазовыеЕдиницыИзмерения.Получить());
    Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка());
    
    КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов().ИмяКолонки;
    Если Не ЗначениеЗаполнено(КолонкаКодов) Тогда
        КолонкаКодов = "Код";
    КонецЕсли;
    Запрос.УстановитьПараметр("КолонкаКодов", КолонкаКодов);
    
    Запрос.УстановитьПараметр("ВариантТолькоНабор", Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор);
    Запрос.УстановитьПараметр("ВариантТолькоКомплектующие",
        Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие);
    Запрос.УстановитьПараметр("ВариантНаборИКомплектующие",
        Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие);
    Запрос.УстановитьПараметр("ПустойВариантПредставленияНаборов",
        Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка());
    Запрос.УстановитьПараметр("ПустойВариантРасчетаЦенНаборов", Перечисления.ВариантыРасчетаЦенНаборов.ПустаяСсылка());
    
    МассивОперацийПередачаНаКомиссию = Новый Массив;
    МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту);
    МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
    МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссиюВДругуюОрганизацию);
    Запрос.УстановитьПараметр("ХозяйственныеОперацииПередачаНаКомиссию", МассивОперацийПередачаНаКомиссию);
    
    Запрос.УстановитьПараметр("МассивОснований", МассивОснований);
    Запрос.Текст = Запрос.Текст +
    "
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицаДокумента.Ссылка,
    |    ТаблицаДокумента.ШтрихкодУпаковки
    |ПОМЕСТИТЬ ШтрихкодыУпаковок
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК ТаблицаДокумента
    |ГДЕ
    |    ТаблицаДокумента.Ссылка В (&МассивОснований)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ТаблицаДокумента.Ссылка,
    |    ТаблицаДокумента.ШтрихкодУпаковки
    |ИЗ
    |    Документ.ВозвратТоваровПоставщику.ШтрихкодыУпаковок КАК ТаблицаДокумента
    |ГДЕ
    |    ТаблицаДокумента.Ссылка В (&МассивОснований)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ТаблицаДокумента.Ссылка,
    |    ТаблицаДокумента.ШтрихкодУпаковки
    |ИЗ
    |    Документ.КорректировкаРеализации.ШтрихкодыУпаковок КАК ТаблицаДокумента
    |ГДЕ
    |    ТаблицаДокумента.Ссылка В (&МассивОснований)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ТаблицаОснований.Ссылка,
    |    ТаблицаДокумента.ШтрихкодУпаковки
    |ИЗ
    |    Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
    |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации.ШтрихкодыУпаковок КАК ТаблицаДокумента
    |        ПО ТаблицаОснований.ДокументОснование = ТаблицаДокумента.Ссылка
    |ГДЕ
    |    ТаблицаОснований.Ссылка В (&МассивОснований)
    |    И (ТаблицаОснований.Ссылка.Корректировочный
    |            ИЛИ ТаблицаОснований.Ссылка.Исправление)
    |";
    
    Если ПараметрыПечати.Свойство("ЗаполнитьДанныеШтрихкодовДляУКДДо") И ПараметрыПечати.ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда
        Запрос.Текст = Запрос.Текст +
        "
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ТаблицаОснований.Ссылка,
        |    ТаблицаРеализации.ШтрихкодУпаковки,
        |    ТаблицаРеализации.Ссылка КАК ДокументРеализации
        |ПОМЕСТИТЬ ШтрихкодыУпаковокДо
        |ИЗ
        |    Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
        |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации КАК ТаблицаДокумента
        |        ПО ТаблицаОснований.ДокументОснование = ТаблицаДокумента.Ссылка
        |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК ТаблицаРеализации
        |        ПО ТаблицаДокумента.ДокументОснование = ТаблицаРеализации.Ссылка
        |ГДЕ
        |    ТаблицаОснований.Ссылка В (&МассивОснований)
        |    И (ТаблицаОснований.Ссылка.Корректировочный
        |            ИЛИ ТаблицаОснований.Ссылка.Исправление)";
    КонецЕсли;
    //для корректировочной и исправительной с/ф приходит документ-основание = с/ф
    //для обычной с/ф документ основание = реализация
    
    Запрос.Выполнить();
    
    ПараметрыПечати.ВыводитьНаборы = ЕстьНаборы;
    
КонецПроцедуры

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

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

Функция ПустойТекстЗапросаШапокОснований()
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    НЕОПРЕДЕЛЕНО                                               КАК Ссылка,
    |    ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка)  КАК ХозяйственнаяОперация,
    |    ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)                   КАК Валюта,
    |    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)              КАК Организация,
    |    ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка) КАК НалогообложениеНДС,
    |    ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)     КАК Подразделение,
    |    ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)                   КАК Склад,
    |    ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)              КАК Грузоотправитель,
    |    ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)              КАК Грузополучатель,
    |    ЛОЖЬ                                                       КАК РасчетыЧерезОтдельногоКонтрагента,
    |    НЕОПРЕДЕЛЕНО                                               КАК Номенклатура,
    |    """"                                                       КАК Содержание,
    |    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)              КАК Комиссионер,
    |    """"                                                       КАК Основание,
    |    ДАТАВРЕМЯ(1,1,1)                                           КАК ОснованиеДата,
    |    """"                                                       КАК ОснованиеНомер,
    |    НЕОПРЕДЕЛЕНО                                               КАК БанковскийСчетОрганизации,
    |    НЕОПРЕДЕЛЕНО                                               КАК БанковскийСчетКонтрагента,
    |    НЕОПРЕДЕЛЕНО                                               КАК БанковскийСчетГрузоотправителя,
    |    НЕОПРЕДЕЛЕНО                                               КАК БанковскийСчетГрузополучателя,
    |    """"                                                       КАК ДоверенностьНомер,
    |    ДАТАВРЕМЯ(1,1,1)                                           КАК ДоверенностьДата,
    |    """"                                                       КАК ДоверенностьВыдана,
    |    """"                                                       КАК ДоверенностьЛицо,
    |    """"                                                       КАК Менеджер,
    |    """"                                                       КАК Кладовщик,
    |    """"                                                       КАК ДолжностьКладовщика
    |ПОМЕСТИТЬ ТаблицаШапокДокументов";
    
    Возврат ТекстЗапроса;
    
КонецФункции

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

Функция СтрокаРасчетноПлатежныхДокументов(ПлатежноРасчетныеДокументы) Экспорт
    
    СтрокаНомеровИДата = "";
    Для Каждого СтрокаТаблицы Из ПлатежноРасчетныеДокументы Цикл
        СтрокаНомеровИДата = СтрокаНомеровИДата + ?(ПустаяСтрока(СтрокаНомеровИДата), "", ", ")
            + СтрокаТаблицы.НомерПлатежноРасчетногоДокумента
            + " от " + Формат(СтрокаТаблицы.ДатаПлатежноРасчетногоДокумента, "ДЛФ=D");
    КонецЦикла;
        
    Возврат СтрокаНомеровИДата;
    
КонецФункции

Процедура ЗаполнитьТаблицуПлатежноРасчетныхДокументовПоВыборке(ПлатежноРасчетныеДокументы, ДанныеВыборки)
    
    Выборка = ДанныеВыборки.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        НоваяСтрока = ПлатежноРасчетныеДокументы.Добавить();
        НоваяСтрока.НомерПлатежноРасчетногоДокумента = Выборка.НомерВходящегоДокумента;
        НоваяСтрока.ДатаПлатежноРасчетногоДокумента = Выборка.ДатаВходящегоДокумента;
        
    КонецЦикла;
    ПлатежноРасчетныеДокументы.Свернуть("ДатаПлатежноРасчетногоДокумента, НомерПлатежноРасчетногоДокумента", "");
    ПлатежноРасчетныеДокументы.Сортировать("ДатаПлатежноРасчетногоДокумента Возр, НомерПлатежноРасчетногоДокумента Возр");
    
КонецПроцедуры
1 Обработка
 
15.11.23
10:30
(0) Админы, может ограничение вам вставить на количество строк в посте?
2 DJ Anthon
 
15.11.23
10:33
насколько я помню, процедура печати в ВПФ должна быть примерно такая

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


КонецПроцедуры
3 DJ Anthon
 
15.11.23
10:33
где ПеремещениеТоваровВес - это идентификатор команды. кажись, у вас это УПДВнешний
4 Donkey_hot
 
15.11.23
10:34
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
    КоллекцияПечатныхФорм,
    "РеализацияТоваровУслуг", - кажется, здесь должно быть "УПДВнешний"
5 DJ Anthon
 
15.11.23
10:34
а вы указали "РеализацияТоваровУслуг"
6 Max57
 
15.11.23
10:44
(4) Спасибо, помогло, (3) Спасибо
Прошу прощения, что вставил весть текст модуля объекта