Имя: Пароль:
1C
1С v8
Внешняя печатная форма
0 jinny84
 
25.07.19
13:00
Создал внешнею печатную форму, в программа добавил, при нажатии кнопки печать выбираю её и нечего не происходит. Код ниже


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

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

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

// Функция формирует табличный документ с печатной формой накладной,
//
// Возвращаемое значение:
//  Табличный документ - печатная форма накладной
//
Функция ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати)
            
    УстановитьПривилегированныйРежим(Истина);
    
    ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб                = Истина;
    ТабличныйДокумент.РазмерКолонтитулаСверху    = 0;
    ТабличныйДокумент.РазмерКолонтитулаСнизу    = 0;
    ТабличныйДокумент.ОриентацияСтраницы        = ОриентацияСтраницы.Ландшафт;
    ТабличныйДокумент.ИмяПараметровПечати        = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов";
    
    Макет = ПолучитьМакет("ПФ_MXL_АктСверки");
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
    Запрос.Текст = ПолучитьТекстЗапросаДляФормированияПечатнойФормыАктСверки();
    
    Шапка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "АктСверки");
    
    ПервыйДокумент = Истина;
    
    Пока Шапка.Следующий() Цикл
        
        Если Не ПервыйДокумент Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        ПервыйДокумент = Ложь;
        // Запомним номер строки, с которой начали выводить текущий документ.
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
        
        // Получаем области:
        ОбластьЗаголовок    = Макет.ПолучитьОбласть("Заголовок");
        ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
        //сальдо начальное общее НЕ нужно выводить
        //ОбластьНачОстатки   = Макет.ПолучитьОбласть("НачОстатки");
        ОбластьДоговор      = Макет.ПолучитьОбласть("Договор");
        //ОбластьДоговорИтоги = Макет.ПолучитьОбласть("ДоговорИтоги");
        ОбластьОбороты      = Макет.ПолучитьОбласть("Обороты");
        //ОбластьОборотыИтог  = Макет.ПолучитьОбласть("ОборотыИтог");
        //сальдо конечное общее НЕ нужно выводить
        //ОбластьКонОстатки   = Макет.ПолучитьОбласть("КонОстатки");
        ОбластьПодвал       = Макет.ПолучитьОбласть("Подвал");
        
        ОбластьНачОстаткиДоговор   = Макет.ПолучитьОбласть("НачОстаткиДоговор");
        ОбластьКонОстаткиДоговор   = Макет.ПолучитьОбласть("КонОстаткиДоговор");
        // Заполняем шапку:
        СведенияОбОрганизации    = регламентированнаяотчетность.ПолучитьСведенияОПИФ(Шапка.Организация, Шапка.ДатаАктаСверки);
        ПредставлениеОрганизации = формированиепечатныхформ.ОписаниеПИФ(СведенияОбОрганизации, "ПолноеНаименование,");
        
        СведенияОКонтрагенте     = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Контрагент, Шапка.ДатаАктаСверки);
        ПредставлениеКонтрагента = ЭлектронноеВзаимодействиеПереопределяемый.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
        
        ОбластьЗаголовок.Параметры.НазваниеОрганизации     = ПредставлениеОрганизации;
        ОбластьЗаголовок.Параметры.НаименованиеКонтрагента = ПредставлениеКонтрагента;
        ДатаНачалаОтчета = ?(ЗначениеЗаполнено(Шапка.ДатаНачала), Шапка.ДатаНачала, Шапка.МинДата);
        
        ОписаниеПериода = ?(ЗначениеЗаполнено(ДатаНачалаОтчета),"за период: " + ПредставлениеПериода(НачалоДня( ДатаНачалаОтчета), КонецДня( Шапка.ДатаОкончания), "ФП = Истина"),"");
        
        ТекстЗаголовка = "взаимных расчетов " + ОписаниеПериода  + Символы.ПС
        + "между " + ПредставлениеОрганизации + Символы.ПС + "и " + ПредставлениеКонтрагента;
        ДоговорКонтрагента = Шапка.ДоговорКонтрагентаВШапке;
        Если ЗначениеЗаполнено(ДоговорКонтрагента) И НЕ ДоговорКонтрагента.ЭтоГруппа Тогда
            ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору " + ДоговорКонтрагента;
        КонецЕсли;
        
        ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;
        
        ДанныеПредставителяОрганизации = регламентированнаяотчетность.ПолучитьСведенияОПИФ(Шапка.Организация, Шапка.ПредставительОрганизации, Шапка.ДатаАктаСверки);
        ДанныеПредставителяКонтрагента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Шапка.ПредставительКонтрагента, "Должность, Фамилия, Имя, Отчество");
        ФИОПредставителя = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Фамилия), "",ДанныеПредставителяОрганизации.Фамилия
        + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Имя), "", " "+ ДанныеПредставителяОрганизации.Имя)
        + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Отчество), "", " "+ ДанныеПредставителяОрганизации.Отчество));
        
        СтрЗаголовокТаблица = "Мы, нижеподписавшиеся, " + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),
        "________________", ДанныеПредставителяОрганизации.Должность) + " " + ПредставлениеОрганизации
        + " " + ?(ФИОПредставителя <> "", ФИОПредставителя, "_______________________") + ", с одной стороны, "
        + "и " + ?(НЕ ЗначениеЗаполнено(Шапка.ПредставительКонтрагента) ИЛИ НЕ ЗначениеЗаполнено(ДанныеПредставителяКонтрагента.Должность),
        "________________", ДанныеПредставителяКонтрагента.Должность)
        + " " + ПредставлениеКонтрагента + " " + ?(НЕ ЗначениеЗаполнено(Шапка.ПредставительКонтрагента),
        "_______________________", Шапка.ПредставительКонтрагента) + ", с другой стороны, "
        + "составили настоящий акт сверки в том, что состояние взаимных расчетов по данным учета следующее:";
        
        ОбластьЗаголовок.Параметры.СтрЗаголовокТаблица = СтрЗаголовокТаблица;
        ОбластьЗаголовок.Параметры.ВалютаДокумента = Шапка.ВалютаДокумента;
        
        ТабличныйДокумент.Вывести(ОбластьЗаголовок);
        ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
        
        //ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(Шапка.ОстатокНаНачало > 0, Шапка.ОстатокНаНачало, 0);
        //ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(Шапка.ОстатокНаНачало < 0, -Шапка.ОстатокНаНачало, 0);
        
        
        //ТабличныйДокумент.Вывести(ОбластьНачОстатки);
        
        ОборотыДт = Шапка.СуммаДогДт;
        ОборотыКт = Шапка.СуммаДогКт;
        ОборотыДтКонтр = Шапка.СуммаДогДтКонтр;
        ОборотыКтКонтр = Шапка.СуммаДогКтКонтр;
        
        ФильтрСписокСчетов = Новый Массив();
        Для каждого СтрокаСчета Из Шапка.АктСверки.СписокСчетов Цикл
            Если ЗначениеЗаполнено(СтрокаСчета.Счет) И СтрокаСчета.УчаствуетВРасчетах Тогда
                ФильтрСписокСчетов.Добавить(СтрокаСчета.Счет);
            КонецЕсли;
        КонецЦикла;
        
        ОбходПоДоговорам = Шапка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Договор");
        
        Пока ОбходПоДоговорам.Следующий() И ЗначениеЗаполнено(ОбходПоДоговорам.Договор) Цикл
            
            Если Шапка.РазбитьПоДоговорам  Тогда
                //Выводим заголовок с договором
                ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор;
                ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор;
                ТабличныйДокумент.Вывести(ОбластьДоговор);
                
                //Получаем остатки по договору и выводим
                ЗапросПоДоговору = Новый Запрос;
                ЗапросПоДоговору.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
                
                ЗапросПоДоговору.УстановитьПараметр("ДатаНачала",    ?(НЕ ЗначениеЗаполнено(Шапка.ДатаНачала), Неопределено,
                Новый Граница (НачалоДня(Шапка.ДатаНачала), ВидГраницы.Исключая)));
                ЗапросПоДоговору.УстановитьПараметр("ДатаОкончания", ?(НЕ ЗначениеЗаполнено(Шапка.ДатаОкончания), Неопределено,
                Новый Граница(КонецДня(Шапка.ДатаОкончания), ВидГраницы.Включая)));
                ЗапросПоДоговору.УстановитьПараметр("Организация",   Шапка.Организация);
                ЗапросПоДоговору.УстановитьПараметр("Контрагент",    Шапка.Контрагент);
                ЗапросПоДоговору.УстановитьПараметр("Валюта",        ?(НЕ ЗначениеЗаполнено(Шапка.ВалютаДокумента)
                ИЛИ (Шапка.ВалютаДокумента = ВалютаРегламентированногоУчета), Неопределено,
                Шапка.ВалютаДокумента));
                ЗапросПоДоговору.УстановитьПараметр("ФильтрСписокСчетов", ФильтрСписокСчетов);
                
                АналитикаРасчетов = Новый Массив();
                АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
                АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
                ЗапросПоДоговору.УстановитьПараметр("АналитикаРасчетов",    АналитикаРасчетов);
                
                ЗапросПоДоговору.УстановитьПараметр("ДоговорКонтрагента", ОбходПоДоговорам.Договор);
                ЗапросПоДоговору.Текст =
                "ВЫБРАТЬ
                |    Управленческий.Ссылка КАК Счет
                |ПОМЕСТИТЬ ФильтрСписокСчетов
                |ИЗ
                |    ПланСчетов.Управленческий КАК Управленческий
                |ГДЕ
                |    Управленческий.Ссылка В ИЕРАРХИИ(&ФильтрСписокСчетов)
                |
                |ИНДЕКСИРОВАТЬ ПО
                |    Счет
                |;
                |
                |////////////////////////////////////////////////////////////////////////////////
                |ВЫБРАТЬ
                |    ДоговорыКонтрагентов.Ссылка КАК Договор
                |ПОМЕСТИТЬ ДоговораКонтрагента
                |ИЗ
                |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
                |ГДЕ
                |    ДоговорыКонтрагентов.Ссылка В ИЕРАРХИИ(&ДоговорКонтрагента)   И
                |     &ДоговорКонтрагента <> НЕОПРЕДЕЛЕНО
                |
                |ИНДЕКСИРОВАТЬ ПО
                |    Договор
                |;";
                ВыборкаВТ = ЗапросПоДоговору.Выполнить().Выбрать();
                
                ЗапросПоДоговору.Текст =
                ?(НЕ ЗначениеЗаполнено(Шапка.ДатаНачала),
                "ВЫБРАТЬ
                |    0 КАК ОстатокНаНачало,
                |    0 КАК ОстатокНаКонец",
                
                "ВЫБРАТЬ
                |    ВЫБОР
                |        КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                |            ТОГДА УправленческийОстаткиНаНачало.СуммаОстаток
                |        ИНАЧЕ УправленческийОстаткиНаНачало.ВалютнаяСуммаОстаток
                |    КОНЕЦ КАК ОстатокНаНачало,
                |    0 КАК ОстатокНаКонец
                |ИЗ
                |    РегистрБухгалтерии.Управленческий.Остатки(
                |            &ДатаНачала,
                |            Счет В
                |                (ВЫБРАТЬ
                |                    ФильтрСписокСчетов.Счет
                |                ИЗ
                |                    ФильтрСписокСчетов),
                |            &АналитикаРасчетов,
                |            ПИФ = &ПИФ
                |                И ВЫБОР
                |                    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                |                        ТОГДА ИСТИНА
                |                    ИНАЧЕ Валюта = &Валюта
                |                КОНЕЦ
                |                И Субконто1 = &Контрагент
                |                И ВЫБОР
                |                    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
                |                        ТОГДА ИСТИНА
                |                    ИНАЧЕ Субконто2 = &ДоговорКонтрагента
                |                КОНЕЦ) КАК УправленческийОстаткиНаНачало");
                
                ЗапросПоДоговору.Текст = ЗапросПоДоговору.Текст +
                "
                |
                |ОБЪЕДИНИТЬ ВСЕ
                |";
                
                ЗапросПоДоговору.Текст = ЗапросПоДоговору.Текст +
                "ВЫБРАТЬ
                |    0 КАК ОстатокНаНачало,
                |    ВЫБОР
                |        КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                |            ТОГДА УправленческийОстаткиНаНачало.СуммаОстаток
                |        ИНАЧЕ УправленческийОстаткиНаНачало.ВалютнаяСуммаОстаток
                |    КОНЕЦ КАК ОстатокНаКонец
                |ИЗ
                |    РегистрБухгалтерии.Управленческий.Остатки(
                |            &ДатаОкончания,
                |            Счет В
                |                (ВЫБРАТЬ
                |                    ФильтрСписокСчетов.Счет
                |                ИЗ
                |                    ФильтрСписокСчетов),
                |            &АналитикаРасчетов,
                |            ПИФ = &ПИФ
                |                И ВЫБОР
                |                    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                |                        ТОГДА ИСТИНА
                |                    ИНАЧЕ Валюта = &Валюта
                |                КОНЕЦ
                |                И Субконто1 = &Контрагент
                |                И ВЫБОР
                |                    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
                |                        ТОГДА ИСТИНА
                |                    ИНАЧЕ Субконто2 = &ДоговорКонтрагента
                |                КОНЕЦ) КАК УправленческийОстаткиНаНачало
                |ИТОГИ
                |    СУММА(ОстатокНаНачало),
                |    СУММА(ОстатокНаКонец)
                |ПО
                |    ОБЩИЕ";
                
                Выборка = ЗапросПоДоговору.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ОБЩИЕ");
                Выборка.Следующий();
                
                ОбластьНачОстаткиДоговор.Параметры.СуммаНачальныйОстатокДтДоговор = ?(Выборка.ОстатокНаНачало > 0, Выборка.ОстатокНаНачало, 0);
                ОбластьНачОстаткиДоговор.Параметры.СуммаНачальныйОстатокКтДоговор = ?(Выборка.ОстатокНаНачало < 0, -Выборка.ОстатокНаНачало, 0);
                ТабличныйДокумент.Вывести(ОбластьНачОстаткиДоговор);
                
                ОбластьКонОстаткиДоговор.Параметры.СуммаКонечныйОстатокДтДоговор = ?(Выборка.ОстатокНаКонец > 0, Выборка.ОстатокНаКонец, 0);
                ОбластьКонОстаткиДоговор.Параметры.СуммаКонечныйОстатокКтДоговор = ?(Выборка.ОстатокНаКонец < 0, -Выборка.ОстатокНаКонец, 0);
                
                //--
                ОбходПоДокументам=ОбходПоДоговорам.Выбрать();
            Иначе
                ОбходПоДокументам=ОбходПоДоговорам.Выбрать();
            КонецЕсли;
            
            //Создадим список документов по организации и контрагенту
            СписокДокументов = новый массив;
            СписокДокументовК = новый массив;
            НеБылВывод = истина;
            //--------------------------------------------
            Пока ОбходПоДокументам.Следующий() Цикл
                
                Если ОбходПоДокументам.Дата<>NULL Тогда
                    СписокДокументов.Добавить(новый структура("ДатаДокумента, РегистраторПредставление, Регистратор, СуммаОборотДт, СуммаОборотКт",
                    ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт));
                КонецЕсли;
                
                Если ОбходПоДокументам.ДатаК<>NULL Тогда
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр",
                    ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр));
                КонецЕсли;
            КонецЦикла;
            
            //Для упрощения вывода, сравним списки по количеству элементов, добавив пустые
            МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            Если СписокДокументов.Количество() < СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт","","","","",""));
                КонецЦикла;
            ИначеЕсли СписокДокументов.Количество() > СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр","","","",""));
                КонецЦикла;
            КонецЕсли;
            
            Для Инд = 0 По МаксИндекс Цикл
                НеБылВывод = ложь;
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
                ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);
                ТабличныйДокумент.Вывести(ОбластьОбороты);
            КонецЦикла;
            
            Если Шапка.РазбитьПоДоговорам Тогда
                //Выводим итоги по каждому договору
                //ОбластьДоговорИтоги.Параметры.Заполнить(ОбходПоДоговорам);
                //ТабличныйДокумент.Вывести(ОбластьДоговорИтоги);
                //++
                ТабличныйДокумент.Вывести(ОбластьКонОстаткиДоговор);
                //--
            Иначе
                Прервать;
            КонецЕсли;
            
        КонецЦикла;
        //--------------------------------------------
        //------------------------------------------
        //Если  НЕ СписокДокументов = неопределено тогда
            Если  ( СписокДокументовК.Количество()=0) или НеБылВывод тогда
            //Если Шапка.РазбитьПоДоговорам Тогда
            //    
                ВывестиДоговораБезОборотов(ТабличныйДокумент,Шапка,Макет,ФильтрСписокСчетов);
            //    
        КонецЕсли;
        
        Запрос1 = Новый Запрос;
        Запрос1.УстановитьПараметр("Ссылка", Шапка.АктСверки);
        Запрос1.УстановитьПараметр("Счет", ФильтрСписокСчетов);
        Запрос1.УстановитьПараметр("Субконто1",  Шапка.Контрагент);
        Запрос1.УстановитьПараметр("Организация",   Шапка.Организация);
        Запрос1.УстановитьПараметр("НачПер",    ?(НЕ ЗначениеЗаполнено(Шапка.ДатаНачала), Неопределено,
        Новый Граница (НачалоДня(Шапка.ДатаНачала), ВидГраницы.Включая)));
        Запрос1.УстановитьПараметр("КонПер", ?(НЕ ЗначениеЗаполнено(Шапка.ДатаОкончания), Неопределено,
        Новый Граница(КонецДня(Шапка.ДатаОкончания), ВидГраницы.Включая)));
        
        Запрос1.Текст = "ВЫБРАТЬ
                        |    АктСверкиВзаиморасчетовПоДаннымОрганизации.Договор
                        |ПОМЕСТИТЬ ВТ
                        |ИЗ
                        |    Документ.АктСверкиВзаиморасчетов.ПоДаннымОрганизации КАК АктСверкиВзаиморасчетовПоДаннымОрганизации
                        |ГДЕ
                        |    АктСверкиВзаиморасчетовПоДаннымОрганизации.Ссылка = &Ссылка
                        |
                        |ОБЪЕДИНИТЬ ВСЕ
                        |
                        |ВЫБРАТЬ
                        |    АктСверкиВзаиморасчетовПоДаннымКонтрагента.Договор
                        |ИЗ
                        |    Документ.АктСверкиВзаиморасчетов.ПоДаннымКонтрагента КАК АктСверкиВзаиморасчетовПоДаннымКонтрагента
                        |ГДЕ
                        |    АктСверкиВзаиморасчетовПоДаннымКонтрагента.Ссылка = &Ссылка
                        |;
                        |
                        |////////////////////////////////////////////////////////////////////////////////
                        |ВЫБРАТЬ
                        |    ВЫБОР
                        |        КОГДА ХозрасчетныйОстатки.Субконто2 ЕСТЬ NULL
                        |            ТОГДА ХозрасчетныйОстатки1.Субконто2
                        |        ИНАЧЕ ХозрасчетныйОстатки.Субконто2
                        |    КОНЕЦ КАК Субконто2,
                        |    ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокДт, 0) КАК СуммаОстатокДт,
                        |    ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокКт, 0) КАК СуммаОстатокКт,
                        |    ЕСТЬNULL(ХозрасчетныйОстатки1.СуммаОстатокДт, 0) КАК КонСуммаОстатокДт,
                        |    ЕСТЬNULL(ХозрасчетныйОстатки1.СуммаОстатокКт, 0) КАК КонСуммаОстатокКт
                        |ИЗ
                        |    РегистрБухгалтерии.Хозрасчетный.Остатки(
                        |            &НачПер,
                        |            Счет В ИЕРАРХИИ (&Счет),
                        |            ,
                        |            НЕ Субконто2 В
                        |                        (ВЫБРАТЬ РАЗЛИЧНЫЕ
                        |                            ВТ.Договор
                        |                        ИЗ
                        |                            ВТ КАК ВТ)
                        |                И Субконто1 = &Субконто1
                        |                И Организация = &Организация) КАК ХозрасчетныйОстатки
                        |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
                        |                &КонПер,
                        |                Счет В ИЕРАРХИИ (&Счет),
                        |                ,
                        |                НЕ Субконто2 В
                        |                            (ВЫБРАТЬ РАЗЛИЧНЫЕ
                        |                                ВТ.Договор
                        |                            ИЗ
                        |                                ВТ КАК ВТ)
                        |                    И Субконто1 = &Субконто1
                        |                    И Организация = &Организация) КАК ХозрасчетныйОстатки1
                        |        ПО ХозрасчетныйОстатки.Субконто2 = ХозрасчетныйОстатки1.Субконто2";
                      
        Результат = Запрос1.Выполнить();
        Выборка = Результат.Выбрать();
        ОблДоговор               = Макет.ПолучитьОбласть("Договор");
        ОблНачОстаткиДоговор   = Макет.ПолучитьОбласть("НачОстаткиДоговор");
        ОблКонОстаткиДоговор   = Макет.ПолучитьОбласть("КонОстаткиДоговор");
    
        Пока Выборка.Следующий() цикл
            Если ЗначениеЗаполнено(Выборка.Субконто2) тогда
                Если ТипЗнч(Выборка.Субконто2) = Тип("СправочникСсылка.ДоговорыКонтрагентов") тогда
                    ОблДоговор.Параметры.Договор = Выборка.Субконто2;
                    ТабличныйДокумент.Вывести(ОблДоговор);
                    ОблНачОстаткиДоговор.Параметры.СуммаНачальныйОстатокДтДоговор = ?(НЕ Выборка.СуммаОстатокДт = 0, Выборка.СуммаОстатокДт, 0);
                    ОблНачОстаткиДоговор.Параметры.СуммаНачальныйОстатокКтДоговор = ?(НЕ Выборка.СуммаОстатокКт = 0, Выборка.СуммаОстатокКт, 0);
                    ТабличныйДокумент.Вывести(ОблНачОстаткиДоговор);
                    ОблКонОстаткиДоговор.Параметры.СуммаКонечныйОстатокДтДоговор = ?(НЕ Выборка.КонСуммаОстатокДт = 0, Выборка.КонСуммаОстатокДт, 0);
                    ОблКонОстаткиДоговор.Параметры.СуммаКонечныйОстатокКтДоговор = ?(НЕ Выборка.СуммаОстатокКт = 0, Выборка.КонСуммаОстатокКт, 0);
                    ТабличныйДокумент.Вывести(ОблКонОстаткиДоговор);
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        
        ОстатокНаКонец = Шапка.ОстатокНаНачало + ОборотыДт -  ОборотыКт;
        //ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
        //ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);
        
        Если Шапка.СверкаСогласована тогда
            ОстатокНаКонецК = Шапка.ОстатокНаНачало - ОборотыДтКонтр +  ОборотыКтКонтр;
            //ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецК > 0, ОстатокНаКонецК, 0);
            //ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецК < 0, -ОстатокНаКонецК, 0);
        КонецЕсли;
        
        //сальдо конечное общее НЕ нужно выводить
        //ТабличныйДокумент.Вывести(ОбластьКонОстатки);
        
        // Результаты сверки НЕ НАДО ВЫВОДИТЬ!  УДАЛЕНА 18 СТРОКА ПОДВАЛА по данным организации
        //Если НЕ ЗначениеЗаполнено(Шапка.ДатаОкончания) Тогда
        //    РезультатыСверки = "<не указана дата сверки>";
        //ИначеЕсли НЕ ЗначениеЗаполнено(Шапка.Контрагент) Тогда
        //    РезультатыСверки = "<не указан контрагент>";
        //Иначе
        //    РезультатыСверки = "на " + Формат(Шапка.ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность ";
        //    
        //    Если ОстатокНаКонец > 0 Тогда
        //        РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеОрганизации + " "
        //        + Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
        //        + строка(Шапка.ВалютаДокумента)
        //        +" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, Шапка.ВалютаДокумента,Ложь)+")" ;
        //        
        //    ИначеЕсли ОстатокНаКонец < 0 Тогда
        //        РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеКонтрагента + " "
        //        + Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
        //        + строка(Шапка.ВалютаДокумента)
        //        +" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, Шапка.ВалютаДокумента,Ложь)+")" ;
        //        
        //    Иначе
        //        РезультатыСверки = РезультатыСверки + "отсутствует.";
        //    КонецЕсли;
        //КонецЕсли;
        //ОбластьПодвал.Параметры.РезультатыСверки = РезультатыСверки;
        //
        //Если Шапка.СверкаСогласована тогда
        //    ОбластьПодвал.Параметры.ПоДаннымКонтрагента = "По данным " + ПредставлениеКонтрагента;
        //    
        //    Если НЕ ЗначениеЗаполнено(Шапка.ДатаОкончания) Тогда
        //        РезультатыСверки = "<не указана дата сверки>";
        //    ИначеЕсли НЕ ЗначениеЗаполнено(Шапка.Контрагент) Тогда
        //        РезультатыСверки = "<не указан контрагент>";
        //    Иначе
        //        РезультатыСверки = "на " + Формат(Шапка.ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность ";
        //        
        //        Если ОстатокНаКонецК > 0 Тогда
        //            РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеОрганизации + " "
        //            + Формат(ОстатокНаКонецК, "ЧЦ=21; ЧДЦ=2") + " "
        //            + строка(Шапка.ВалютаДокумента)
        //            + " ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонецК, Шапка.ВалютаДокумента,Ложь)+")" ;
        //            
        //        ИначеЕсли ОстатокНаКонецК < 0 Тогда
        //            РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеКонтрагента + " "
        //            + Формат(-ОстатокНаКонецК, "ЧЦ=21; ЧДЦ=2") + " "
        //            + строка(Шапка.ВалютаДокумента)
        //            +" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонецК, Шапка.ВалютаДокумента,Ложь)+")" ;
        //            
        //            
        //        Иначе
        //            РезультатыСверки = РезультатыСверки + "отсутствует.";
        //        КонецЕсли;
        //    КонецЕсли;
        //    
        //    ОбластьПодвал.Параметры.РезультатыСверкиК = РезультатыСверки;
        //    
        //    Если Шапка.Расхождение <> 0 Тогда
        //        ИтогСверки = "В результате сверки выявлено расхождение информации о состоянии расчетов в размере "
        //        + Формат(?(Шапка.Расхождение > 0, 1, -1) * Шапка.Расхождение, "ЧЦ=21; ЧДЦ=2")
        //        + " "+ Строка(Шапка.ВалютаДокумента)
        //        + " ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(
        //        ?(Шапка.Расхождение > 0, 1, -1) * Шапка.Расхождение, Шапка.ВалютаДокумента, Ложь)+")" ;
        //        ОбластьПодвал.Параметры.ИтогСверки = Символы.ПС + ИтогСверки+Символы.ПС+" ";
        //    КонецЕсли;
        //КонецЕсли;
        ОбластьПусто   = Макет.ПолучитьОбласть("Пусто");
        ТабличныйДокумент.Вывести(ОбластьПусто);
        
        ОбластьПодвал.Параметры.НазваниеОрганизации     = ПредставлениеОрганизации;
        ОбластьПодвал.Параметры.НаименованиеКонтрагента = ПредставлениеКонтрагента;
        
        //ОбластьПодвал.Параметры.Должность  = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),
        //"________________", ДанныеПредставителяОрганизации.Должность);
        //ОбластьПодвал.Параметры.ДолжностьК = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяКонтрагента.Должность),
        //"________________", ДанныеПредставителяКонтрагента.Должность);
        //
        //СКАТ  ФамилияИнициалыФизЛица
        //
        ОбластьПо
1 jinny84
 
25.07.19
13:04
Извините не весь код, и не свернул

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

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

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

// Функция формирует табличный документ с печатной формой накладной,
//
// Возвращаемое значение:
//  Табличный документ - печатная форма накладной
//
Функция ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати)
            
    УстановитьПривилегированныйРежим(Истина);
    
    ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб                = Истина;
    ТабличныйДокумент.РазмерКолонтитулаСверху    = 0;
    ТабличныйДокумент.РазмерКолонтитулаСнизу    = 0;
    ТабличныйДокумент.ОриентацияСтраницы        = ОриентацияСтраницы.Ландшафт;
    ТабличныйДокумент.ИмяПараметровПечати        = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов";
    
    Макет = ПолучитьМакет("ПФ_MXL_АктСверки");
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
    Запрос.Текст = ПолучитьТекстЗапросаДляФормированияПечатнойФормыАктСверки();
    
    Шапка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "АктСверки");
    
    ПервыйДокумент = Истина;
    
    Пока Шапка.Следующий() Цикл
        
        Если Не ПервыйДокумент Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        ПервыйДокумент = Ложь;
        // Запомним номер строки, с которой начали выводить текущий документ.
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
        
        // Получаем области:
        ОбластьЗаголовок    = Макет.ПолучитьОбласть("Заголовок");
        ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
        //сальдо начальное общее НЕ нужно выводить
        //ОбластьНачОстатки   = Макет.ПолучитьОбласть("НачОстатки");
        ОбластьДоговор      = Макет.ПолучитьОбласть("Договор");
        //ОбластьДоговорИтоги = Макет.ПолучитьОбласть("ДоговорИтоги");
        ОбластьОбороты      = Макет.ПолучитьОбласть("Обороты");
        //ОбластьОборотыИтог  = Макет.ПолучитьОбласть("ОборотыИтог");
        //сальдо конечное общее НЕ нужно выводить
        //ОбластьКонОстатки   = Макет.ПолучитьОбласть("КонОстатки");
        ОбластьПодвал       = Макет.ПолучитьОбласть("Подвал");
        
        ОбластьНачОстаткиДоговор   = Макет.ПолучитьОбласть("НачОстаткиДоговор");
        ОбластьКонОстаткиДоговор   = Макет.ПолучитьОбласть("КонОстаткиДоговор");
        // Заполняем шапку:
        СведенияОбОрганизации    = регламентированнаяотчетность.ПолучитьСведенияОПИФ(Шапка.Организация, Шапка.ДатаАктаСверки);
        ПредставлениеОрганизации = формированиепечатныхформ.ОписаниеПИФ(СведенияОбОрганизации, "ПолноеНаименование,");
        
        СведенияОКонтрагенте     = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Контрагент, Шапка.ДатаАктаСверки);
        ПредставлениеКонтрагента = ЭлектронноеВзаимодействиеПереопределяемый.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
        
        ОбластьЗаголовок.Параметры.НазваниеОрганизации     = ПредставлениеОрганизации;
        ОбластьЗаголовок.Параметры.НаименованиеКонтрагента = ПредставлениеКонтрагента;
        ДатаНачалаОтчета = ?(ЗначениеЗаполнено(Шапка.ДатаНачала), Шапка.ДатаНачала, Шапка.МинДата);
        
        ОписаниеПериода = ?(ЗначениеЗаполнено(ДатаНачалаОтчета),"за период: " + ПредставлениеПериода(НачалоДня( ДатаНачалаОтчета), КонецДня( Шапка.ДатаОкончания), "ФП = Истина"),"");
        
        ТекстЗаголовка = "взаимных расчетов " + ОписаниеПериода  + Символы.ПС
        + "между " + ПредставлениеОрганизации + Символы.ПС + "и " + ПредставлениеКонтрагента;
        ДоговорКонтрагента = Шапка.ДоговорКонтрагентаВШапке;
        Если ЗначениеЗаполнено(ДоговорКонтрагента) И НЕ ДоговорКонтрагента.ЭтоГруппа Тогда
            ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору " + ДоговорКонтрагента;
        КонецЕсли;
        
        ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;
        
        ДанныеПредставителяОрганизации = регламентированнаяотчетность.ПолучитьСведенияОПИФ(Шапка.Организация, Шапка.ПредставительОрганизации, Шапка.ДатаАктаСверки);
        ДанныеПредставителяКонтрагента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Шапка.ПредставительКонтрагента, "Должность, Фамилия, Имя, Отчество");
        ФИОПредставителя = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Фамилия), "",ДанныеПредставителяОрганизации.Фамилия
        + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Имя), "", " "+ ДанныеПредставителяОрганизации.Имя)
        + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Отчество), "", " "+ ДанныеПредставителяОрганизации.Отчество));
        
        СтрЗаголовокТаблица = "Мы, нижеподписавшиеся, " + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),
        "________________", ДанныеПредставителяОрганизации.Должность) + " " + ПредставлениеОрганизации
        + " " + ?(ФИОПредставителя <> "", ФИОПредставителя, "_______________________") + ", с одной стороны, "
        + "и " + ?(НЕ ЗначениеЗаполнено(Шапка.ПредставительКонтрагента) ИЛИ НЕ ЗначениеЗаполнено(ДанныеПредставителяКонтрагента.Должность),
        "________________", ДанныеПредставителяКонтрагента.Должность)
        + " " + ПредставлениеКонтрагента + " " + ?(НЕ ЗначениеЗаполнено(Шапка.ПредставительКонтрагента),
        "_______________________", Шапка.ПредставительКонтрагента) + ", с другой стороны, "
        + "составили настоящий акт сверки в том, что состояние взаимных расчетов по данным учета следующее:";
        
        ОбластьЗаголовок.Параметры.СтрЗаголовокТаблица = СтрЗаголовокТаблица;
        ОбластьЗаголовок.Параметры.ВалютаДокумента = Шапка.ВалютаДокумента;
        
        ТабличныйДокумент.Вывести(ОбластьЗаголовок);
        ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
        
        //ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(Шапка.ОстатокНаНачало > 0, Шапка.ОстатокНаНачало, 0);
        //ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(Шапка.ОстатокНаНачало < 0, -Шапка.ОстатокНаНачало, 0);
        
        
        //ТабличныйДокумент.Вывести(ОбластьНачОстатки);
        
        ОборотыДт = Шапка.СуммаДогДт;
        ОборотыКт = Шапка.СуммаДогКт;
        ОборотыДтКонтр = Шапка.СуммаДогДтКонтр;
        ОборотыКтКонтр = Шапка.СуммаДогКтКонтр;
        
        ФильтрСписокСчетов = Новый Массив();
        Для каждого СтрокаСчета Из Шапка.АктСверки.СписокСчетов Цикл
            Если ЗначениеЗаполнено(СтрокаСчета.Счет) И СтрокаСчета.УчаствуетВРасчетах Тогда
                ФильтрСписокСчетов.Добавить(СтрокаСчета.Счет);
            КонецЕсли;
        КонецЦикла;
        
        ОбходПоДоговорам = Шапка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Договор");
        
        Пока ОбходПоДоговорам.Следующий() И ЗначениеЗаполнено(ОбходПоДоговорам.Договор) Цикл
            
            Если Шапка.РазбитьПоДоговорам  Тогда
                //Выводим заголовок с договором
                ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор;
                ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор;
                ТабличныйДокумент.Вывести(ОбластьДоговор);
                
                //Получаем остатки по договору и выводим
                ЗапросПоДоговору = Новый Запрос;
                ЗапросПоДоговору.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
                
                ЗапросПоДоговору.УстановитьПараметр("ДатаНачала",    ?(НЕ ЗначениеЗаполнено(Шапка.ДатаНачала), Неопределено,
                Новый Граница (НачалоДня(Шапка.ДатаНачала), ВидГраницы.Исключая)));
                ЗапросПоДоговору.УстановитьПараметр("ДатаОкончания", ?(НЕ ЗначениеЗаполнено(Шапка.ДатаОкончания), Неопределено,
                Новый Граница(КонецДня(Шапка.ДатаОкончания), ВидГраницы.Включая)));
                ЗапросПоДоговору.УстановитьПараметр("Организация",   Шапка.Организация);
                ЗапросПоДоговору.УстановитьПараметр("Контрагент",    Шапка.Контрагент);
                ЗапросПоДоговору.УстановитьПараметр("Валюта",        ?(НЕ ЗначениеЗаполнено(Шапка.ВалютаДокумента)
                ИЛИ (Шапка.ВалютаДокумента = ВалютаРегламентированногоУчета), Неопределено,
                Шапка.ВалютаДокумента));
                ЗапросПоДоговору.УстановитьПараметр("ФильтрСписокСчетов", ФильтрСписокСчетов);
                
                АналитикаРасчетов = Новый Массив();
                АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
                АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
                ЗапросПоДоговору.УстановитьПараметр("АналитикаРасчетов",    АналитикаРасчетов);
                
                ЗапросПоДоговору.УстановитьПараметр("ДоговорКонтрагента", ОбходПоДоговорам.Договор);
                ЗапросПоДоговору.Текст =
                "ВЫБРАТЬ
                |    Управленческий.Ссылка КАК Счет
                |ПОМЕСТИТЬ ФильтрСписокСчетов
                |ИЗ
                |    ПланСчетов.Управленческий КАК Управленческий
                |ГДЕ
                |    Управленческий.Ссылка В ИЕРАРХИИ(&ФильтрСписокСчетов)
                |
                |ИНДЕКСИРОВАТЬ ПО
                |    Счет
                |;
                |
                |////////////////////////////////////////////////////////////////////////////////
                |ВЫБРАТЬ
                |    ДоговорыКонтрагентов.Ссылка КАК Договор
                |ПОМЕСТИТЬ ДоговораКонтрагента
                |ИЗ
                |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
                |ГДЕ
                |    ДоговорыКонтрагентов.Ссылка В ИЕРАРХИИ(&ДоговорКонтрагента)   И
                |     &ДоговорКонтрагента <> НЕОПРЕДЕЛЕНО
                |
                |ИНДЕКСИРОВАТЬ ПО
                |    Договор
                |;";
                ВыборкаВТ = ЗапросПоДоговору.Выполнить().Выбрать();
                
                ЗапросПоДоговору.Текст =
                ?(НЕ ЗначениеЗаполнено(Шапка.ДатаНачала),
                "ВЫБРАТЬ
                |    0 КАК ОстатокНаНачало,
                |    0 КАК ОстатокНаКонец",
                
                "ВЫБРАТЬ
                |    ВЫБОР
                |        КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                |            ТОГДА УправленческийОстаткиНаНачало.СуммаОстаток
                |        ИНАЧЕ УправленческийОстаткиНаНачало.ВалютнаяСуммаОстаток
                |    КОНЕЦ КАК ОстатокНаНачало,
                |    0 КАК ОстатокНаКонец
                |ИЗ
                |    РегистрБухгалтерии.Управленческий.Остатки(
                |            &ДатаНачала,
                |            Счет В
                |                (ВЫБРАТЬ
                |                    ФильтрСписокСчетов.Счет
                |                ИЗ
                |                    ФильтрСписокСчетов),
                |            &АналитикаРасчетов,
                |            ПИФ = &ПИФ
                |                И ВЫБОР
                |                    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                |                        ТОГДА ИСТИНА
                |                    ИНАЧЕ Валюта = &Валюта
                |                КОНЕЦ
                |                И Субконто1 = &Контрагент
                |                И ВЫБОР
                |                    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
                |                        ТОГДА ИСТИНА
                |                    ИНАЧЕ Субконто2 = &ДоговорКонтрагента
                |                КОНЕЦ) КАК УправленческийОстаткиНаНачало");
                
                ЗапросПоДоговору.Текст = ЗапросПоДоговору.Текст +
                "
                |
                |ОБЪЕДИНИТЬ ВСЕ
                |";
                
                ЗапросПоДоговору.Текст = ЗапросПоДоговору.Текст +
                "ВЫБРАТЬ
                |    0 КАК ОстатокНаНачало,
                |    ВЫБОР
                |        КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                |            ТОГДА УправленческийОстаткиНаНачало.СуммаОстаток
                |        ИНАЧЕ УправленческийОстаткиНаНачало.ВалютнаяСуммаОстаток
                |    КОНЕЦ КАК ОстатокНаКонец
                |ИЗ
                |    РегистрБухгалтерии.Управленческий.Остатки(
                |            &ДатаОкончания,
                |            Счет В
                |                (ВЫБРАТЬ
                |                    ФильтрСписокСчетов.Счет
                |                ИЗ
                |                    ФильтрСписокСчетов),
                |            &АналитикаРасчетов,
                |            ПИФ = &ПИФ
                |                И ВЫБОР
                |                    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                |                        ТОГДА ИСТИНА
                |                    ИНАЧЕ Валюта = &Валюта
                |                КОНЕЦ
                |                И Субконто1 = &Контрагент
                |                И ВЫБОР
                |                    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
                |                        ТОГДА ИСТИНА
                |                    ИНАЧЕ Субконто2 = &ДоговорКонтрагента
                |                КОНЕЦ) КАК УправленческийОстаткиНаНачало
                |ИТОГИ
                |    СУММА(ОстатокНаНачало),
                |    СУММА(ОстатокНаКонец)
                |ПО
                |    ОБЩИЕ";
                
                Выборка = ЗапросПоДоговору.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ОБЩИЕ");
                Выборка.Следующий();
                
                ОбластьНачОстаткиДоговор.Параметры.СуммаНачальныйОстатокДтДоговор = ?(Выборка.ОстатокНаНачало > 0, Выборка.ОстатокНаНачало, 0);
                ОбластьНачОстаткиДоговор.Параметры.СуммаНачальныйОстатокКтДоговор = ?(Выборка.ОстатокНаНачало < 0, -Выборка.ОстатокНаНачало, 0);
                ТабличныйДокумент.Вывести(ОбластьНачОстаткиДоговор);
                
                ОбластьКонОстаткиДоговор.Параметры.СуммаКонечныйОстатокДтДоговор = ?(Выборка.ОстатокНаКонец > 0, Выборка.ОстатокНаКонец, 0);
                ОбластьКонОстаткиДоговор.Параметры.СуммаКонечныйОстатокКтДоговор = ?(Выборка.ОстатокНаКонец < 0, -Выборка.ОстатокНаКонец, 0);
                
                //--
                ОбходПоДокументам=ОбходПоДоговорам.Выбрать();
            Иначе
                ОбходПоДокументам=ОбходПоДоговорам.Выбрать();
            КонецЕсли;
            
            //Создадим список документов по организации и контрагенту
            СписокДокументов = новый массив;
            СписокДокументовК = новый массив;
            НеБылВывод = истина;
            //--------------------------------------------
            Пока ОбходПоДокументам.Следующий() Цикл
                
                Если ОбходПоДокументам.Дата<>NULL Тогда
                    СписокДокументов.Добавить(новый структура("ДатаДокумента, РегистраторПредставление, Регистратор, СуммаОборотДт, СуммаОборотКт",
                    ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт));
                КонецЕсли;
                
                Если ОбходПоДокументам.ДатаК<>NULL Тогда
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр",
                    ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр));
                КонецЕсли;
            КонецЦикла;
            
            //Для упрощения вывода, сравним списки по количеству элементов, добавив пустые
            МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            Если СписокДокументов.Количество() < СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт","","","","",""));
                КонецЦикла;
            ИначеЕсли СписокДокументов.Количество() > СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр","","","",""));
                КонецЦикла;
            КонецЕсли;
            
            Для Инд = 0 По МаксИндекс Цикл
                НеБылВывод = ложь;
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
                ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);
                ТабличныйДокумент.Вывести(ОбластьОбороты);
            КонецЦикла;
            
            Если Шапка.РазбитьПоДоговорам Тогда
                //Выводим итоги по каждому договору
                //ОбластьДоговорИтоги.Параметры.Заполнить(ОбходПоДоговорам);
                //ТабличныйДокумент.Вывести(ОбластьДоговорИтоги);
                //++
                ТабличныйДокумент.Вывести(ОбластьКонОстаткиДоговор);
                //--
            Иначе
                Прервать;
            КонецЕсли;
            
        КонецЦикла;
        //--------------------------------------------
        //------------------------------------------
        //Если  НЕ СписокДокументов = неопределено тогда
            Если  ( СписокДокументовК.Количество()=0) или НеБылВывод тогда
            //Если Шапка.РазбитьПоДоговорам Тогда
            //    
                ВывестиДоговораБезОборотов(ТабличныйДокумент,Шапка,Макет,ФильтрСписокСчетов);
            //    
        КонецЕсли;
        
        Запрос1 = Новый Запрос;
        Запрос1.УстановитьПараметр("Ссылка", Шапка.АктСверки);
        Запрос1.УстановитьПараметр("Счет", ФильтрСписокСчетов);
        Запрос1.УстановитьПараметр("Субконто1",  Шапка.Контрагент);
        Запрос1.УстановитьПараметр("Организация",   Шапка.Организация);
        Запрос1.УстановитьПараметр("НачПер",    ?(НЕ ЗначениеЗаполнено(Шапка.ДатаНачала), Неопределено,
        Новый Граница (НачалоДня(Шапка.ДатаНачала), ВидГраницы.Включая)));
        Запрос1.УстановитьПараметр("КонПер", ?(НЕ ЗначениеЗаполнено(Шапка.ДатаОкончания), Неопределено,
        Новый Граница(КонецДня(Шапка.ДатаОкончания), ВидГраницы.Включая)));
        
        Запрос1.Текст = "ВЫБРАТЬ
                        |    АктСверкиВзаиморасчетовПоДаннымОрганизации.Договор
                        |ПОМЕСТИТЬ ВТ
                        |ИЗ
                        |    Документ.АктСверкиВзаиморасчетов.ПоДаннымОрганизации КАК АктСверкиВзаиморасчетовПоДаннымОрганизации
                        |ГДЕ
                        |    АктСверкиВзаиморасчетовПоДаннымОрганизации.Ссылка = &Ссылка
                        |
                        |ОБЪЕДИНИТЬ ВСЕ
                        |
                        |ВЫБРАТЬ
                        |    АктСверкиВзаиморасчетовПоДаннымКонтрагента.Договор
                        |ИЗ
                        |    Документ.АктСверкиВзаиморасчетов.ПоДаннымКонтрагента КАК АктСверкиВзаиморасчетовПоДаннымКонтрагента
                        |ГДЕ
                        |    АктСверкиВзаиморасчетовПоДаннымКонтрагента.Ссылка = &Ссылка
                        |;
                        |
                        |////////////////////////////////////////////////////////////////////////////////
                        |ВЫБРАТЬ
                        |    ВЫБОР
                        |        КОГДА ХозрасчетныйОстатки.Субконто2 ЕСТЬ NULL
                        |            ТОГДА ХозрасчетныйОстатки1.Субконто2
                        |        ИНАЧЕ ХозрасчетныйОстатки.Субконто2
                        |    КОНЕЦ КАК Субконто2,
                        |    ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокДт, 0) КАК СуммаОстатокДт,
                        |    ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокКт, 0) КАК СуммаОстатокКт,
                        |    ЕСТЬNULL(ХозрасчетныйОстатки1.СуммаОстатокДт, 0) КАК КонСуммаОстатокДт,
                        |    ЕСТЬNULL(ХозрасчетныйОстатки1.СуммаОстатокКт, 0) КАК КонСуммаОстатокКт
                        |ИЗ
                        |    РегистрБухгалтерии.Хозрасчетный.Остатки(
                        |            &НачПер,
                        |            Счет В ИЕРАРХИИ (&Счет),
                        |            ,
                        |            НЕ Субконто2 В
                        |                        (ВЫБРАТЬ РАЗЛИЧНЫЕ
                        |                            ВТ.Договор
                        |                        ИЗ
                        |                            ВТ КАК ВТ)
                        |                И Субконто1 = &Субконто1
                        |                И Организация = &Организация) КАК ХозрасчетныйОстатки
                        |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
                        |                &КонПер,
                        |                Счет В ИЕРАРХИИ (&Счет),
                        |                ,
                        |                НЕ Субконто2 В
                        |                            (ВЫБРАТЬ РАЗЛИЧНЫЕ
                        |                                ВТ.Договор
                        |                            ИЗ
                        |                                ВТ КАК ВТ)
                        |                    И Субконто1 = &Субконто1
                        |                    И Организация = &Организация) КАК ХозрасчетныйОстатки1
                        |        ПО ХозрасчетныйОстатки.Субконто2 = ХозрасчетныйОстатки1.Субконто2";
                      
        Результат = Запрос1.Выполнить();
        Выборка = Результат.Выбрать();
        ОблДоговор               = Макет.ПолучитьОбласть("Договор");
        ОблНачОстаткиДоговор   = Макет.ПолучитьОбласть("НачОстаткиДоговор");
        ОблКонОстаткиДоговор   = Макет.ПолучитьОбласть("КонОстаткиДоговор");
    
        Пока Выборка.Следующий() цикл
            Если ЗначениеЗаполнено(Выборка.Субконто2) тогда
                Если ТипЗнч(Выборка.Субконто2) = Тип("СправочникСсылка.ДоговорыКонтрагентов") тогда
                    ОблДоговор.Параметры.Договор = Выборка.Субконто2;
                    ТабличныйДокумент.Вывести(ОблДоговор);
                    ОблНачОстаткиДоговор.Параметры.СуммаНачальныйОстатокДтДоговор = ?(НЕ Выборка.СуммаОстатокДт = 0, Выборка.СуммаОстатокДт, 0);
                    ОблНачОстаткиДоговор.Параметры.СуммаНачальныйОстатокКтДоговор = ?(НЕ Выборка.СуммаОстатокКт = 0, Выборка.СуммаОстатокКт, 0);
                    ТабличныйДокумент.Вывести(ОблНачОстаткиДоговор);
                    ОблКонОстаткиДоговор.Параметры.СуммаКонечныйОстатокДтДоговор = ?(НЕ Выборка.КонСуммаОстатокДт = 0, Выборка.КонСуммаОстатокДт, 0);
                    ОблКонОстаткиДоговор.Параметры.СуммаКонечныйОстатокКтДоговор = ?(НЕ Выборка.СуммаОстатокКт = 0, Выборка.КонСуммаОстатокКт, 0);
                    ТабличныйДокумент.Вывести(ОблКонОстаткиДоговор);
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        
        ОстатокНаКонец = Шапка.ОстатокНаНачало + ОборотыДт -  ОборотыКт;
        //ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
        //ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);
        
        Если Шапка.СверкаСогласована тогда
            ОстатокНаКонецК = Шапка.ОстатокНаНачало - ОборотыДтКонтр +  ОборотыКтКонтр;
            //ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецК > 0, ОстатокНаКонецК, 0);
            //ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецК < 0, -ОстатокНаКонецК, 0);
        КонецЕсли;
        
        //сальдо конечное общее НЕ нужно выводить
        //ТабличныйДокумент.Вывести(ОбластьКонОстатки);
        
        // Результаты сверки НЕ НАДО ВЫВОДИТЬ!  УДАЛЕНА 18 СТРОКА ПОДВАЛА по данным организации
        //Если НЕ ЗначениеЗаполнено(Шапка.ДатаОкончания) Тогда
        //    РезультатыСверки = "<не указана дата сверки>";
        //ИначеЕсли НЕ ЗначениеЗаполнено(Шапка.Контрагент) Тогда
        //    РезультатыСверки = "<не указан контрагент>";
        //Иначе
        //    РезультатыСверки = "на " + Формат(Шапка.ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность ";
        //    
        //    Если ОстатокНаКонец > 0 Тогда
        //        РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеОрганизации + " "
        //        + Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
        //        + строка(Шапка.ВалютаДокумента)
        //        +" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, Шапка.ВалютаДокумента,Ложь)+")" ;
        //        
        //    ИначеЕсли ОстатокНаКонец < 0 Тогда
        //        РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеКонтрагента + " "
        //        + Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
        //        + строка(Шапка.ВалютаДокумента)
        //        +" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, Шапка.ВалютаДокумента,Ложь)+")" ;
        //        
        //    Иначе
        //        РезультатыСверки = РезультатыСверки + "отсутствует.";
        //    КонецЕсли;
        //КонецЕсли;
        //ОбластьПодвал.Параметры.РезультатыСверки = РезультатыСверки;
        //
        //Если Шапка.СверкаСогласована тогда
        //    ОбластьПодвал.Параметры.ПоДаннымКонтрагента = "По данным " + ПредставлениеКонтрагента;
        //    
        //    Если НЕ ЗначениеЗаполнено(Шапка.ДатаОкончания) Тогда
        //        РезультатыСверки = "<не указана дата сверки>";
        //    ИначеЕсли НЕ ЗначениеЗаполнено(Шапка.Контрагент) Тогда
        //        РезультатыСверки = "<не указан контрагент>";
        //    Иначе
        //        РезультатыСверки = "на " + Формат(Шапка.ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность ";
        //        
        //        Если ОстатокНаКонецК > 0 Тогда
        //            РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеОрганизации + " "
        //            + Формат(ОстатокНаКонецК, "ЧЦ=21; ЧДЦ=2") + " "
        //            + строка(Шапка.ВалютаДокумента)
        //            + " ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонецК, Шапка.ВалютаДокумента,Ложь)+")" ;
        //            
        //        ИначеЕсли ОстатокНаКонецК < 0 Тогда
        //            РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеКонтрагента + " "
        //            + Формат(-ОстатокНаКонецК, "ЧЦ=21; ЧДЦ=2") + " "
        //            + строка(Шапка.ВалютаДокумента)
        //            +" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонецК, Шапка.ВалютаДокумента,Ложь)+")" ;
        //            
        //            
        //        Иначе
        //            РезультатыСверки = РезультатыСверки + "отсутствует.";
        //        КонецЕсли;
        //    КонецЕсли;
        //    
        //    ОбластьПодвал.Параметры.РезультатыСверкиК = РезультатыСверки;
        //    
        //    Если Шапка.Расхождение <> 0 Тогда
        //        ИтогСверки = "В результате сверки выявлено расхождение информации о состоянии расчетов в размере "
        //        + Формат(?(Шапка.Расхождение > 0, 1, -1) * Шапка.Расхождение, "ЧЦ=21; ЧДЦ=2")
        //        + " "+ Строка(Шапка.ВалютаДокумента)
        //        + " ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(
        //        ?(Шапка.Расхождение > 0, 1, -1) * Шапка.Расхождение, Шапка.ВалютаДокумента, Ложь)+")" ;
        //        ОбластьПодвал.Параметры.ИтогСверки = Символы.ПС + ИтогСверки+Символы.ПС+" ";
        //    КонецЕсли;
        //КонецЕсли;
        ОбластьПусто   = Макет.ПолучитьОбласть("Пусто");
        ТабличныйДокумент.Вывести(ОбластьПусто);
        
        ОбластьПодвал.Параметры.НазваниеОрганизации     = ПредставлениеОрганизации;
        ОбластьПодвал.Параметры.НаименованиеКонтрагента = ПредставлениеКонтрагента;
        
        //ОбластьПодвал.Параметры.Должность  = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),
        //"________________", ДанныеПредставителяОрганизации.Должность);
        //ОбластьПодвал.Параметры.ДолжностьК = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяКонтрагента.Должность),
        //"________________", ДанныеПредставителяКонтрагента.Должность);
        //
        //СКАТ  ФамилияИнициалыФизЛица
        //
        ОбластьПодвал.Параметры.ФИОПредставителя  = "("+?(НЕ ЗначениеЗаполнено(ДанныеПредставит
2 Случайный прохожий
 
25.07.19
13:05
Дочитал до конца, а там разрыв на самом интересном месте :(
3 jinny84
 
25.07.19
13:06
(2) ОбластьПодвал.Параметры.ФИОПредставителя  = "("+?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации),
        "_______________________",ДанныеПредставителяОрганизации.Представление)+")";
        ОбластьПодвал.Параметры.ФИОПредставителяК = "("+?(НЕ ЗначениеЗаполнено(Шапка.ПредставительКонтрагента),
        "_______________________" ,ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ДанныеПредставителяКонтрагента))+")";

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

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

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