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

Порядок документов в отчет Акт сверки

Автор sitash, 29 июл 2015, 09:31

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

sitash

у вас получится исправить (дописать или переписать) этот отчет. боюсь что я не смогу исправить если даже вы мне укажите где проблема. Заранее спасибо. 

Дмитрий@

Да получится, но для этого нужна конфигурация. Желательно с тестовыми данными, там документов пять или шесть.

sitash

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

Дмитрий@

Попробуйте в копии отчета заменить метод "Печать" в модуле формы на этот код, может сработает:
Процедура Печать(ТабДок)

ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов_АктСверки";
Макет  = ПолучитьМакет("Макет");
Приставка = "";
Если ВыводитьСРегламентом Тогда
Приставка = "Регл";
КонецЕсли;

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

НазваниеОрганизации = Организация.НаименованиеПолное;
Если ПустаяСтрока(НазваниеОрганизации) Тогда
НазваниеОрганизации = Организация;
КонецЕсли;

НаименованиеКонтрагента = Контрагент.НаименованиеПолное;
Если ПустаяСтрока(НаименованиеКонтрагента) Тогда
НаименованиеКонтрагента = Контрагент;
КонецЕсли;

ОписаниеПериода = "за период: " + ПредставлениеПериода(НачалоДня(НачалоПериода), КонецДня(КонецПериода), "ФП = Истина");

ТекстЗаголовка = "взаимных расчетов " + ОписаниеПериода  + Символы.ПС
+ "между " + НазваниеОрганизации + Символы.ПС + "и " + НаименованиеКонтрагента;
Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
    ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору " + СокрЛП(ДоговорКонтрагента.Наименование);
КонецЕсли;
ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;

ДанныеПредставителяОрганизации = ОбщегоНазначения.ДанныеФизЛица(Организация, ПредставительОрганизации, КонецПериода);
ФИОПредставителя = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Фамилия),"",ДанныеПредставителяОрганизации.Фамилия
+ ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Имя),""," "+ДанныеПредставителяОрганизации.Имя)
+ ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Отчество),""," "+ДанныеПредставителяОрганизации.Отчество));

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

ОбластьЗаголовок.Параметры.СтрЗаголовокТаблица = СтрЗаголовокТаблица;

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);

ОбластьШапкаТаблицы.Параметры.НазваниеОрганизации = НазваниеОрганизации;
ОбластьШапкаТаблицы.Параметры.НаименованиеКонтрагента = НаименованиеКонтрагента;
ОбластьШапкаТаблицы.Параметры.ВалютаДокумента = ВалютаДокумента;
ТабДок.Вывести(ОбластьШапкаТаблицы);

ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(ОстатокНаНачало > 0, ОстатокНаНачало, 0);
ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(ОстатокНаНачало < 0, -ОстатокНаНачало, 0);
Если ВыводитьСРегламентом Тогда
ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДтРегл = ?(ОстатокНаНачалоРегл > 0, ОстатокНаНачалоРегл, 0);
ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКтРегл = ?(ОстатокНаНачалоРегл < 0, -ОстатокНаНачалоРегл, 0);
КонецЕсли;

ТабДок.Вывести(ОбластьНачОстатки);

ОборотыДт = 0;
ОборотыКт = 0;
ОборотыДтКонтр = 0;
ОборотыКтКонтр = 0;

ОборотыДтРегл = 0;
ОборотыКтРегл = 0;
ОборотыДтКонтрРегл = 0;
ОборотыКтКонтрРегл = 0;

Если ПоДаннымОрганизации.Количество()>0 ИЛИ ПоДаннымКонтрагента.Количество()>0 Тогда

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

Результат = Запрос.Выполнить();

ОбходПоОбщимИтогам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Общие");
ОбходПоОбщимИтогам.Следующий();

ОборотыДт = ОбходПоОбщимИтогам.СуммаДогДт;
ОборотыКт = ОбходПоОбщимИтогам.СуммаДогКт;
ОборотыДтКонтр = ОбходПоОбщимИтогам.СуммаДогДтКонтр;
ОборотыКтКонтр = ОбходПоОбщимИтогам.СуммаДогКтКонтр;

ОборотыДтРегл = ОбходПоОбщимИтогам.СуммаДогДтРегл;
ОборотыКтРегл = ОбходПоОбщимИтогам.СуммаДогКтРегл;
ОборотыДтКонтрРегл = ОбходПоОбщимИтогам.СуммаДогДтКонтрРегл;
ОборотыКтКонтрРегл = ОбходПоОбщимИтогам.СуммаДогКтКонтрРегл;

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

//Создадим список документов по организации и контрагенту
СписокДокументов = новый массив;
СписокДокументовК = новый массив;
Пока ОбходПоДокументам.Следующий() Цикл
Если ОбходПоДокументам.Дата<>NULL Тогда
СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт,СуммаОборотДтРегл,СуммаОборотКтРегл",
ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт,ОбходПоДокументам.СуммаДогДтРегл,ОбходПоДокументам.СуммаДогКтРегл));
КонецЕсли;

Если ЗначениеЗаполнено(ОбходПоДокументам.ДатаК) И ОбходПоДокументам.ДатаК = ОбходПоДокументам.Дата Тогда
СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр,СуммаОборотДтКонтрРегл,СуммаОборотКтКонтрРегл",
ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр,ОбходПоДокументам.СуммаДогДтКонтрРегл,ОбходПоДокументам.СуммаДогКтКонтрРегл));
КонецЕсли;
КонецЦикла;

//Для упрощения вывода, сравним списки по количеству элементов, добавив пустые
МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
Если СписокДокументов.Количество()<СписокДокументовК.Количество() Тогда
Для инд = МинИндекс По МаксИндекс-1 Цикл
СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт,СуммаОборотДтРегл,СуммаОборотКтРегл","","","","","","",""));
КонецЦикла;
ИначеЕсли СписокДокументов.Количество()>СписокДокументовК.Количество() Тогда
Для инд = МинИндекс По МаксИндекс-1 Цикл
СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр,СуммаОборотДтКонтрРегл,СуммаОборотКтКонтрРегл","","","","","",""));
КонецЦикла;
КонецЕсли;

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

Если РазбитьПоДоговорам и ОбходПоДоговорам.Количество() > 1 Тогда
//Выводим итоги по каждому договору
ОбластьДоговорИтоги.Параметры.Заполнить(ОбходПоДоговорам);
ТабДок.Вывести(ОбластьДоговорИтоги);

ОстатокНаКонецД = ОбходПоДоговорам.Остаток + ОбходПоДоговорам.СуммаДогДт -  ОбходПоДоговорам.СуммаДогКт;
ОстатокНаКонецДРегл = ОбходПоДоговорам.ОстатокРегл + ОбходПоДоговорам.СуммаДогДтРегл -  ОбходПоДоговорам.СуммаДогКтРегл;

// --- {
ОстатокНаКонецДКонтр = - ОбходПоДоговорам.Остаток + ОбходПоДоговорам.СуммаДогДтКонтр - ОбходПоДоговорам.СуммаДогКТКонтр;
ОстатокНаКонецДКонтрРегл = - ОбходПоДоговорам.ОстатокРегл + ОбходПоДоговорам.СуммаДогДтКонтрРегл - ОбходПоДоговорам.СуммаДогКТКонтрРегл;
// --- }

ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонецД > 0, ОстатокНаКонецД, 0);
ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонецД < 0, -ОстатокНаКонецД, 0);

// --- {
ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецДКонтр > 0, ОстатокНаКонецДКонтр, 0);
ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецДКонтр < 0, -ОстатокНаКонецДКонтр, 0);
// --- }

Если ВыводитьСРегламентом Тогда
ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтРегл = ?(ОстатокНаКонецДРегл > 0, ОстатокНаКонецДРегл, 0);
ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтРегл = ?(ОстатокНаКонецДРегл < 0, -ОстатокНаКонецДРегл, 0);

// --- {
ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтКонтрРегл = ?(ОстатокНаКонецДКонтрРегл > 0, ОстатокНаКонецДКонтрРегл, 0);
ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтКонтрРегл = ?(ОстатокНаКонецДКонтрРегл < 0, -ОстатокНаКонецДКонтрРегл, 0);
// --- }
КонецЕсли;

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

Иначе
Прервать;
КонецЕсли;

КонецЦикла; 

ОбластьОборотыИтог.Параметры.СуммаОборотДт      = ОборотыДт;
ОбластьОборотыИтог.Параметры.СуммаОборотКт      = ОборотыКт;

// --- {
ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ОборотыДтКонтр;
ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ОборотыКтКонтр;
// --- }
Если ВыводитьСРегламентом Тогда
ОбластьОборотыИтог.Параметры.СуммаОборотДтРегл = ОборотыДтРегл;
ОбластьОборотыИтог.Параметры.СуммаОборотКтРегл = ОборотыКтРегл;

// --- {
ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтрРегл = ОборотыДтКонтрРегл;
ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтрРегл = ОборотыКтКонтрРегл;
// --- }
КонецЕсли;

ТабДок.Вывести(ОбластьОборотыИтог);

КонецЕсли;
     
ОстатокНаКонец = ОстатокНаНачало + ОборотыДт - ОборотыКт;
ОстатокНаКонецРегл = ОстатокНаНачалоРегл + ОборотыДтРегл - ОборотыКтРегл;

ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);

// --- {
ОстатокНаКонецКонтр = ОстатокНаКонецКонтрагент;
ОстатокНаКонецКонтрРегл = ОстатокНаКонецКонтрагентРегл;

ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецКонтр > 0, ОстатокНаКонецКонтр, 0);
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецКонтр < 0, -ОстатокНаКонецКонтр, 0);
// --- }

Если ВыводитьСРегламентом Тогда
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтРегл = ?(ОстатокНаКонецРегл > 0, ОстатокНаКонецРегл, 0);
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтРегл = ?(ОстатокНаКонецРегл < 0, -ОстатокНаКонецРегл, 0);

// --- {
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтрРегл = ?(ОстатокНаКонецКонтрРегл > 0, ОстатокНаКонецКонтрРегл, 0);
ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтрРегл = ?(ОстатокНаКонецКонтрРегл < 0, -ОстатокНаКонецКонтрРегл, 0);
// --- }
КонецЕсли;

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

// Результаты сверки
  Если НЕ ЗначениеЗаполнено(КонецПериода) Тогда
        РезультатыСверки = "<не указана дата сверки>";
    ИначеЕсли НЕ ЗначениеЗаполнено(Контрагент) Тогда
        РезультатыСверки = "<не указан контрагент>";
    Иначе
РезультатыСверки = "на " + Формат(КонецПериода, "ДФ=dd.MM.yyyy") + " задолженность ";

    Если ОстатокНаКонец > 0 Тогда
РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НазваниеОрганизации) + " "
+ Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
+ строка(ВалютаДокумента)
+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;

    ИначеЕсли ОстатокНаКонец < 0 Тогда
РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НаименованиеКонтрагента) + " "
+ Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
+ строка(ВалютаДокумента)
+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;

    Иначе
    РезультатыСверки = РезультатыСверки + "отсутствует.";
    КонецЕсли;
КонецЕсли;
ОбластьПодвал.Параметры.РезультатыСверки = РезультатыСверки;

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

ОбластьПодвал.Параметры.Должность = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность);
ОбластьПодвал.Параметры.ДолжностьК = ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента.Должность),"________________",ПредставительКонтрагента.Должность);

ОбластьПодвал.Параметры.ФИОПредставителя  = "("+?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации),"_______________________",ДанныеПредставителяОрганизации.Представление)+")";
ОбластьПодвал.Параметры.ФИОПредставителяК = "("+?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"_______________________",ПроцедурыУправленияПерсоналом.ФамилияИнициалыФизЛица(ПредставительКонтрагента.Фамилия + " " + ПредставительКонтрагента.Имя + " " + ПредставительКонтрагента.Отчество))+")";

ТабДок.Вывести(ОбластьПодвал);

Если ЭлементыФормы.ДействияФормы.Кнопки.ПометкаТолькоЧтение.Пометка Тогда
ТабДок.ТолькоПросмотр = Истина;
КонецЕсли;

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


Добавлено: 04 авг 2015, 18:38


Извиняюсь, еще одно исправление в этом методе, внизу исправленный код
Процедура Печать(ТабДок)
   
    ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов_АктСверки";
    Макет  = ПолучитьМакет("Макет");
    Приставка = "";
    Если ВыводитьСРегламентом Тогда
        Приставка = "Регл";
    КонецЕсли;
   
    ОбластьЗаголовок    = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьНачОстатки   = Макет.ПолучитьОбласть("НачОстатки"+Приставка);
    ОбластьНачОстаткиД  = Макет.ПолучитьОбласть("НачОстаткиДоговор"+Приставка);
    ОбластьДоговор      = Макет.ПолучитьОбласть("Договор");
    ОбластьДоговорИтоги = Макет.ПолучитьОбласть("ДоговорИтоги"+Приставка);
    ОбластьОбороты      = Макет.ПолучитьОбласть("Обороты"+Приставка);
    ОбластьОборотыИтог  = Макет.ПолучитьОбласть("ОборотыИтог"+Приставка);
    ОбластьКонОстатки   = Макет.ПолучитьОбласть("КонОстатки"+Приставка);
    ОбластьКонОстаткиД  = Макет.ПолучитьОбласть("КонОстаткиДоговор"+Приставка);
    ОбластьПодвал       = Макет.ПолучитьОбласть("Подвал");
   
    НазваниеОрганизации = Организация.НаименованиеПолное;
    Если ПустаяСтрока(НазваниеОрганизации) Тогда
        НазваниеОрганизации = Организация;
    КонецЕсли;
   
    НаименованиеКонтрагента = Контрагент.НаименованиеПолное;
    Если ПустаяСтрока(НаименованиеКонтрагента) Тогда
        НаименованиеКонтрагента = Контрагент;
    КонецЕсли;
   
    ОписаниеПериода = "за период: " + ПредставлениеПериода(НачалоДня(НачалоПериода), КонецДня(КонецПериода), "ФП = Истина");
   
    ТекстЗаголовка = "взаимных расчетов " + ОписаниеПериода  + Символы.ПС
                    + "между " + НазваниеОрганизации + Символы.ПС + "и " + НаименованиеКонтрагента;
    Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
        ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору " + СокрЛП(ДоговорКонтрагента.Наименование);
    КонецЕсли;
    ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;
   
    ДанныеПредставителяОрганизации = ОбщегоНазначения.ДанныеФизЛица(Организация, ПредставительОрганизации, КонецПериода);
    ФИОПредставителя = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Фамилия),"",ДанныеПредставителяОрганизации.Фамилия
                    + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Имя),""," "+ДанныеПредставителяОрганизации.Имя)
                    + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Отчество),""," "+ДанныеПредставителяОрганизации.Отчество));
   
    СтрЗаголовокТаблица = "Мы, нижеподписавшиеся, " + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность) + " " + НазваниеОрганизации
                + " " + ?(ФИОПредставителя<>"",ФИОПредставителя,"_______________________") + ", с одной стороны, "
                + "и " + ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента.Должность),"________________",ПредставительКонтрагента.Должность) + " " + НаименованиеКонтрагента + " "
                + ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"_______________________",ПредставительКонтрагента) + ", с другой стороны, "
                + "составили настоящий акт сверки в том, что состояние взаимных расчетов по данным учета следующее:";
   
    ОбластьЗаголовок.Параметры.СтрЗаголовокТаблица = СтрЗаголовокТаблица;
   
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
   
    ОбластьШапкаТаблицы.Параметры.НазваниеОрганизации = НазваниеОрганизации;
    ОбластьШапкаТаблицы.Параметры.НаименованиеКонтрагента = НаименованиеКонтрагента;
    ОбластьШапкаТаблицы.Параметры.ВалютаДокумента = ВалютаДокумента;
    ТабДок.Вывести(ОбластьШапкаТаблицы);
   
    ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(ОстатокНаНачало > 0, ОстатокНаНачало, 0);
    ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(ОстатокНаНачало < 0, -ОстатокНаНачало, 0);
    Если ВыводитьСРегламентом Тогда
        ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДтРегл = ?(ОстатокНаНачалоРегл > 0, ОстатокНаНачалоРегл, 0);
        ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКтРегл = ?(ОстатокНаНачалоРегл < 0, -ОстатокНаНачалоРегл, 0);
    КонецЕсли;
       
    ТабДок.Вывести(ОбластьНачОстатки);
   
    ОборотыДт = 0;
    ОборотыКт = 0;
    ОборотыДтКонтр = 0;
    ОборотыКтКонтр = 0;

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

        ОборотыДтРегл = ОбходПоОбщимИтогам.СуммаДогДтРегл;
        ОборотыКтРегл = ОбходПоОбщимИтогам.СуммаДогКтРегл;
        ОборотыДтКонтрРегл = ОбходПоОбщимИтогам.СуммаДогДтКонтрРегл;
        ОборотыКтКонтрРегл = ОбходПоОбщимИтогам.СуммаДогКтКонтрРегл;

        ОстаткиНаКонецД = новый Соответствие;
        ОбходПоДоговорам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Договор");
        Пока ОбходПоДоговорам.Следующий() Цикл
            Если РазбитьПоДоговорам Тогда
                //Выводим заголовок с договором
                ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор;
                ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор;
                ТабДок.Вывести(ОбластьДоговор);
                //Определим сальдо по договору
                Если ОбходПоДоговорам.Количество() > 1 Тогда // если договор 1 то общее сальдо уже и есть сальдо по договору.
                    ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокДт = ?(ОбходПоДоговорам.Остаток > 0, ОбходПоДоговорам.Остаток, 0);
                    ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокКт = ?(ОбходПоДоговорам.Остаток < 0, -ОбходПоДоговорам.Остаток, 0);
                    Если ВыводитьСРегламентом Тогда
                        ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокДтРегл = ?(ОбходПоДоговорам.ОстатокРегл > 0, ОбходПоДоговорам.ОстатокРегл, 0);
                        ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокКтРегл = ?(ОбходПоДоговорам.ОстатокРегл < 0, -ОбходПоДоговорам.ОстатокРегл, 0);
                    КонецЕсли;
                    ОстаткиНаКонецД.Вставить(ОбходПоДоговорам.Договор, новый Структура("Остаток, ОстатокРегл", ОбходПоДоговорам.Остаток, ОбходПоДоговорам.ОстатокРегл));
                    ТабДок.Вывести(ОбластьНачОстаткиД);
                КонецЕсли;
                ОбходПоДокументам = ОбходПоДоговорам.Выбрать();
            Иначе
                ОбходПоДокументам = Результат.Выбрать();
            КонецЕсли;       
           
            //Создадим список документов по организации и контрагенту
            СписокДокументов = новый массив;
            СписокДокументовК = новый массив;
            Пока ОбходПоДокументам.Следующий() Цикл
                Если ОбходПоДокументам.ДатаК=NULL Тогда
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт,СуммаОборотДтРегл,СуммаОборотКтРегл",
                    ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт,ОбходПоДокументам.СуммаДогДтРегл,ОбходПоДокументам.СуммаДогКтРегл));               
                КонецЕсли;
               
                Если ОбходПоДокументам.ДатаК<>NULL И ОбходПоДокументам.Дата<>NULL И ОбходПоДокументам.ДатаК = ОбходПоДокументам.Дата Тогда
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр,СуммаОборотДтКонтрРегл,СуммаОборотКтКонтрРегл",
                    ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр,ОбходПоДокументам.СуммаДогДтКонтрРегл,ОбходПоДокументам.СуммаДогКтКонтрРегл));               
                КонецЕсли;
            КонецЦикла;
           
            //Для упрощения вывода, сравним списки по количеству элементов, добавив пустые
            МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
            Если СписокДокументов.Количество()<СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт,СуммаОборотДтРегл,СуммаОборотКтРегл","","","","","","",""));
                КонецЦикла;
            ИначеЕсли СписокДокументов.Количество()>СписокДокументовК.Количество() Тогда
                Для инд = МинИндекс По МаксИндекс-1 Цикл
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр,СуммаОборотДтКонтрРегл,СуммаОборотКтКонтрРегл","","","","","",""));
                КонецЦикла;           
            КонецЕсли;
           
            Для Инд = 0 По МаксИндекс Цикл
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
                ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);           
                ТабДок.Вывести(ОбластьОбороты);
            КонецЦикла;
           
            Если РазбитьПоДоговорам и ОбходПоДоговорам.Количество() > 1 Тогда
                //Выводим итоги по каждому договору
                ОбластьДоговорИтоги.Параметры.Заполнить(ОбходПоДоговорам);       
                ТабДок.Вывести(ОбластьДоговорИтоги);
               
                ОстатокНаКонецД = ОбходПоДоговорам.Остаток + ОбходПоДоговорам.СуммаДогДт -  ОбходПоДоговорам.СуммаДогКт;
                ОстатокНаКонецДРегл = ОбходПоДоговорам.ОстатокРегл + ОбходПоДоговорам.СуммаДогДтРегл -  ОбходПоДоговорам.СуммаДогКтРегл;
               
                // --- {
                ОстатокНаКонецДКонтр = - ОбходПоДоговорам.Остаток + ОбходПоДоговорам.СуммаДогДтКонтр - ОбходПоДоговорам.СуммаДогКТКонтр;
                ОстатокНаКонецДКонтрРегл = - ОбходПоДоговорам.ОстатокРегл + ОбходПоДоговорам.СуммаДогДтКонтрРегл - ОбходПоДоговорам.СуммаДогКТКонтрРегл;
                // --- }
               
                ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонецД > 0, ОстатокНаКонецД, 0);
                ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонецД < 0, -ОстатокНаКонецД, 0);
               
                // --- {
                ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецДКонтр > 0, ОстатокНаКонецДКонтр, 0);
                ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецДКонтр < 0, -ОстатокНаКонецДКонтр, 0);
                // --- }
               
                Если ВыводитьСРегламентом Тогда
                    ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтРегл = ?(ОстатокНаКонецДРегл > 0, ОстатокНаКонецДРегл, 0);
                    ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтРегл = ?(ОстатокНаКонецДРегл < 0, -ОстатокНаКонецДРегл, 0);
                   
                    // --- {
                    ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтКонтрРегл = ?(ОстатокНаКонецДКонтрРегл > 0, ОстатокНаКонецДКонтрРегл, 0);
                    ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтКонтрРегл = ?(ОстатокНаКонецДКонтрРегл < 0, -ОстатокНаКонецДКонтрРегл, 0);
                    // --- }
                КонецЕсли;
               
                ТабДок.Вывести(ОбластьКонОстаткиД);
               
            Иначе
                Прервать;
            КонецЕсли;
           
        КонецЦикла; 
       
        ОбластьОборотыИтог.Параметры.СуммаОборотДт      = ОборотыДт;
        ОбластьОборотыИтог.Параметры.СуммаОборотКт      = ОборотыКт;
       
        // --- {
        ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ОборотыДтКонтр;
        ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ОборотыКтКонтр;
        // --- }
        Если ВыводитьСРегламентом Тогда
            ОбластьОборотыИтог.Параметры.СуммаОборотДтРегл = ОборотыДтРегл;
            ОбластьОборотыИтог.Параметры.СуммаОборотКтРегл = ОборотыКтРегл;
           
            // --- {
            ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтрРегл = ОборотыДтКонтрРегл;
            ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтрРегл = ОборотыКтКонтрРегл;
            // --- }
        КонецЕсли;
       
        ТабДок.Вывести(ОбластьОборотыИтог);
       
    КонецЕсли;
         
    ОстатокНаКонец = ОстатокНаНачало + ОборотыДт - ОборотыКт;
    ОстатокНаКонецРегл = ОстатокНаНачалоРегл + ОборотыДтРегл - ОборотыКтРегл;
   
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);
   
    // --- {
    ОстатокНаКонецКонтр = ОстатокНаКонецКонтрагент;
    ОстатокНаКонецКонтрРегл = ОстатокНаКонецКонтрагентРегл;
   
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецКонтр > 0, ОстатокНаКонецКонтр, 0);
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецКонтр < 0, -ОстатокНаКонецКонтр, 0);
    // --- }
   
    Если ВыводитьСРегламентом Тогда
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтРегл = ?(ОстатокНаКонецРегл > 0, ОстатокНаКонецРегл, 0);
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтРегл = ?(ОстатокНаКонецРегл < 0, -ОстатокНаКонецРегл, 0);
       
        // --- {
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтрРегл = ?(ОстатокНаКонецКонтрРегл > 0, ОстатокНаКонецКонтрРегл, 0);
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтрРегл = ?(ОстатокНаКонецКонтрРегл < 0, -ОстатокНаКонецКонтрРегл, 0);
        // --- }
    КонецЕсли;
   
    ТабДок.Вывести(ОбластьКонОстатки);
   
    // Результаты сверки
      Если НЕ ЗначениеЗаполнено(КонецПериода) Тогда
           РезультатыСверки = "<не указана дата сверки>";
       ИначеЕсли НЕ ЗначениеЗаполнено(Контрагент) Тогда
           РезультатыСверки = "<не указан контрагент>";
       Иначе
        РезультатыСверки = "на " + Формат(КонецПериода, "ДФ=dd.MM.yyyy") + " задолженность ";
           
           Если ОстатокНаКонец > 0 Тогда
            РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НазваниеОрганизации) + " "
                                + Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
                                + строка(ВалютаДокумента)
                                +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;
   
           ИначеЕсли ОстатокНаКонец < 0 Тогда
            РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НаименованиеКонтрагента) + " "
                                + Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
                                + строка(ВалютаДокумента)
                                +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;
   
           Иначе
               РезультатыСверки = РезультатыСверки + "отсутствует.";
           КонецЕсли;
    КонецЕсли;
    ОбластьПодвал.Параметры.РезультатыСверки = РезультатыСверки;
   
    Если Расхождение<>0 Тогда                                                                                                                                                                                                                                                               
        ИтогСверки = "В результате сверки выявлено расхождение информации о состоянии расчетов в размере "
        +Формат(?(Расхождение>0,1,-1)*Расхождение, "ЧЦ=21; ЧДЦ=2")
        +" "+ Строка(ВалютаДокумента)
        +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(?(Расхождение>0,1,-1)*Расхождение, ВалютаДокумента,Ложь)+")" ;
        ОбластьПодвал.Параметры.ИтогСверки = Символы.ПС+ ИтогСверки+Символы.ПС+" ";
    КонецЕсли;
                 
    ОбластьПодвал.Параметры.НазваниеОрганизации = СокрЛП(НазваниеОрганизации);
    ОбластьПодвал.Параметры.НаименованиеКонтрагента = СокрЛП(НаименованиеКонтрагента);
   
    ОбластьПодвал.Параметры.Должность = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность);
    ОбластьПодвал.Параметры.ДолжностьК = ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента.Должность),"________________",ПредставительКонтрагента.Должность);
   
    ОбластьПодвал.Параметры.ФИОПредставителя  = "("+?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации),"_______________________",ДанныеПредставителяОрганизации.Представление)+")";
    ОбластьПодвал.Параметры.ФИОПредставителяК = "("+?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"_______________________",ПроцедурыУправленияПерсоналом.ФамилияИнициалыФизЛица(ПредставительКонтрагента.Фамилия + " " + ПредставительКонтрагента.Имя + " " + ПредставительКонтрагента.Отчество))+")";
   
    ТабДок.Вывести(ОбластьПодвал);
   
    Если ЭлементыФормы.ДействияФормы.Кнопки.ПометкаТолькоЧтение.Пометка Тогда
        ТабДок.ТолькоПросмотр = Истина;
    КонецЕсли;
       
КонецПроцедуры

sitash

вот то что получилос

Дмитрий@

Я подправил, попробуйте еще раз
Процедура Печать(ТабДок)
   
    ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов_АктСверки";
    Макет  = ПолучитьМакет("Макет");
    Приставка = "";
    Если ВыводитьСРегламентом Тогда
        Приставка = "Регл";
    КонецЕсли;
   
    ОбластьЗаголовок    = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьНачОстатки   = Макет.ПолучитьОбласть("НачОстатки"+Приставка);
    ОбластьНачОстаткиД  = Макет.ПолучитьОбласть("НачОстаткиДоговор"+Приставка);
    ОбластьДоговор      = Макет.ПолучитьОбласть("Договор");
    ОбластьДоговорИтоги = Макет.ПолучитьОбласть("ДоговорИтоги"+Приставка);
    ОбластьОбороты      = Макет.ПолучитьОбласть("Обороты"+Приставка);
    ОбластьОборотыИтог  = Макет.ПолучитьОбласть("ОборотыИтог"+Приставка);
    ОбластьКонОстатки   = Макет.ПолучитьОбласть("КонОстатки"+Приставка);
    ОбластьКонОстаткиД  = Макет.ПолучитьОбласть("КонОстаткиДоговор"+Приставка);
    ОбластьПодвал       = Макет.ПолучитьОбласть("Подвал");
   
    НазваниеОрганизации = Организация.НаименованиеПолное;
    Если ПустаяСтрока(НазваниеОрганизации) Тогда
        НазваниеОрганизации = Организация;
    КонецЕсли;
   
    НаименованиеКонтрагента = Контрагент.НаименованиеПолное;
    Если ПустаяСтрока(НаименованиеКонтрагента) Тогда
        НаименованиеКонтрагента = Контрагент;
    КонецЕсли;
   
    ОписаниеПериода = "за период: " + ПредставлениеПериода(НачалоДня(НачалоПериода), КонецДня(КонецПериода), "ФП = Истина");
   
    ТекстЗаголовка = "взаимных расчетов " + ОписаниеПериода  + Символы.ПС
                    + "между " + НазваниеОрганизации + Символы.ПС + "и " + НаименованиеКонтрагента;
    Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
        ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору " + СокрЛП(ДоговорКонтрагента.Наименование);
    КонецЕсли;
    ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;
   
    ДанныеПредставителяОрганизации = ОбщегоНазначения.ДанныеФизЛица(Организация, ПредставительОрганизации, КонецПериода);
    ФИОПредставителя = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Фамилия),"",ДанныеПредставителяОрганизации.Фамилия
                    + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Имя),""," "+ДанныеПредставителяОрганизации.Имя)
                    + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Отчество),""," "+ДанныеПредставителяОрганизации.Отчество));
   
    СтрЗаголовокТаблица = "Мы, нижеподписавшиеся, " + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность) + " " + НазваниеОрганизации
                + " " + ?(ФИОПредставителя<>"",ФИОПредставителя,"_______________________") + ", с одной стороны, "
                + "и " + ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента.Должность),"________________",ПредставительКонтрагента.Должность) + " " + НаименованиеКонтрагента + " "
                + ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"_______________________",ПредставительКонтрагента) + ", с другой стороны, "
                + "составили настоящий акт сверки в том, что состояние взаимных расчетов по данным учета следующее:";
   
    ОбластьЗаголовок.Параметры.СтрЗаголовокТаблица = СтрЗаголовокТаблица;
   
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
   
    ОбластьШапкаТаблицы.Параметры.НазваниеОрганизации = НазваниеОрганизации;
    ОбластьШапкаТаблицы.Параметры.НаименованиеКонтрагента = НаименованиеКонтрагента;
    ОбластьШапкаТаблицы.Параметры.ВалютаДокумента = ВалютаДокумента;
    ТабДок.Вывести(ОбластьШапкаТаблицы);
   
    ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(ОстатокНаНачало > 0, ОстатокНаНачало, 0);
    ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(ОстатокНаНачало < 0, -ОстатокНаНачало, 0);
    Если ВыводитьСРегламентом Тогда
        ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДтРегл = ?(ОстатокНаНачалоРегл > 0, ОстатокНаНачалоРегл, 0);
        ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКтРегл = ?(ОстатокНаНачалоРегл < 0, -ОстатокНаНачалоРегл, 0);
    КонецЕсли;
       
    ТабДок.Вывести(ОбластьНачОстатки);
   
    ОборотыДт = 0;
    ОборотыКт = 0;
    ОборотыДтКонтр = 0;
    ОборотыКтКонтр = 0;

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

        ОборотыДтРегл = ОбходПоОбщимИтогам.СуммаДогДтРегл;
        ОборотыКтРегл = ОбходПоОбщимИтогам.СуммаДогКтРегл;
        ОборотыДтКонтрРегл = ОбходПоОбщимИтогам.СуммаДогДтКонтрРегл;
        ОборотыКтКонтрРегл = ОбходПоОбщимИтогам.СуммаДогКтКонтрРегл;

        ОстаткиНаКонецД = новый Соответствие;
        ОбходПоДоговорам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Договор");
        Пока ОбходПоДоговорам.Следующий() Цикл
            Если РазбитьПоДоговорам Тогда
                //Выводим заголовок с договором
                ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор;
                ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор;
                ТабДок.Вывести(ОбластьДоговор);
                //Определим сальдо по договору
                Если ОбходПоДоговорам.Количество() > 1 Тогда // если договор 1 то общее сальдо уже и есть сальдо по договору.
                    ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокДт = ?(ОбходПоДоговорам.Остаток > 0, ОбходПоДоговорам.Остаток, 0);
                    ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокКт = ?(ОбходПоДоговорам.Остаток < 0, -ОбходПоДоговорам.Остаток, 0);
                    Если ВыводитьСРегламентом Тогда
                        ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокДтРегл = ?(ОбходПоДоговорам.ОстатокРегл > 0, ОбходПоДоговорам.ОстатокРегл, 0);
                        ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокКтРегл = ?(ОбходПоДоговорам.ОстатокРегл < 0, -ОбходПоДоговорам.ОстатокРегл, 0);
                    КонецЕсли;
                    ОстаткиНаКонецД.Вставить(ОбходПоДоговорам.Договор, новый Структура("Остаток, ОстатокРегл", ОбходПоДоговорам.Остаток, ОбходПоДоговорам.ОстатокРегл));
                    ТабДок.Вывести(ОбластьНачОстаткиД);
                КонецЕсли;
                ОбходПоДокументам = ОбходПоДоговорам.Выбрать();
            Иначе
                ОбходПоДокументам = Результат.Выбрать();
            КонецЕсли;       
           
            //Создадим список документов по организации и контрагенту
            СписокДокументов = новый массив;
            СписокДокументовК = новый массив;
            Пока ОбходПоДокументам.Следующий() Цикл
                Если ОбходПоДокументам.ДатаК=NULL Тогда
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт,СуммаОборотДтРегл,СуммаОборотКтРегл",
                    ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт,ОбходПоДокументам.СуммаДогДтРегл,ОбходПоДокументам.СуммаДогКтРегл));               
Иначе
СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт,СуммаОборотДтРегл,СуммаОборотКтРегл","","","","","","",""));
                КонецЕсли;
               
                Если ОбходПоДокументам.ДатаК<>NULL И ОбходПоДокументам.Дата<>NULL И ОбходПоДокументам.ДатаК = ОбходПоДокументам.Дата Тогда
                    СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр,СуммаОборотДтКонтрРегл,СуммаОборотКтКонтрРегл",
                    ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр,ОбходПоДокументам.СуммаДогДтКонтрРегл,ОбходПоДокументам.СуммаДогКтКонтрРегл));               
Иначе
СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр,СуммаОборотДтКонтрРегл,СуммаОборотКтКонтрРегл","","","","","",""));
                КонецЕсли;
            КонецЦикла;
                       
            Для Инд = 0 По МаксИндекс Цикл
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
                ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);           
                ТабДок.Вывести(ОбластьОбороты);
            КонецЦикла;
           
            Если РазбитьПоДоговорам и ОбходПоДоговорам.Количество() > 1 Тогда
                //Выводим итоги по каждому договору
                ОбластьДоговорИтоги.Параметры.Заполнить(ОбходПоДоговорам);       
                ТабДок.Вывести(ОбластьДоговорИтоги);
               
                ОстатокНаКонецД = ОбходПоДоговорам.Остаток + ОбходПоДоговорам.СуммаДогДт -  ОбходПоДоговорам.СуммаДогКт;
                ОстатокНаКонецДРегл = ОбходПоДоговорам.ОстатокРегл + ОбходПоДоговорам.СуммаДогДтРегл -  ОбходПоДоговорам.СуммаДогКтРегл;
               
                // --- {
                ОстатокНаКонецДКонтр = - ОбходПоДоговорам.Остаток + ОбходПоДоговорам.СуммаДогДтКонтр - ОбходПоДоговорам.СуммаДогКТКонтр;
                ОстатокНаКонецДКонтрРегл = - ОбходПоДоговорам.ОстатокРегл + ОбходПоДоговорам.СуммаДогДтКонтрРегл - ОбходПоДоговорам.СуммаДогКТКонтрРегл;
                // --- }
               
                ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонецД > 0, ОстатокНаКонецД, 0);
                ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонецД < 0, -ОстатокНаКонецД, 0);
               
                // --- {
                ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецДКонтр > 0, ОстатокНаКонецДКонтр, 0);
                ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецДКонтр < 0, -ОстатокНаКонецДКонтр, 0);
                // --- }
               
                Если ВыводитьСРегламентом Тогда
                    ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтРегл = ?(ОстатокНаКонецДРегл > 0, ОстатокНаКонецДРегл, 0);
                    ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтРегл = ?(ОстатокНаКонецДРегл < 0, -ОстатокНаКонецДРегл, 0);
                   
                    // --- {
                    ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтКонтрРегл = ?(ОстатокНаКонецДКонтрРегл > 0, ОстатокНаКонецДКонтрРегл, 0);
                    ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтКонтрРегл = ?(ОстатокНаКонецДКонтрРегл < 0, -ОстатокНаКонецДКонтрРегл, 0);
                    // --- }
                КонецЕсли;
               
                ТабДок.Вывести(ОбластьКонОстаткиД);
               
            Иначе
                Прервать;
            КонецЕсли;
           
        КонецЦикла; 
       
        ОбластьОборотыИтог.Параметры.СуммаОборотДт      = ОборотыДт;
        ОбластьОборотыИтог.Параметры.СуммаОборотКт      = ОборотыКт;
       
        // --- {
        ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ОборотыДтКонтр;
        ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ОборотыКтКонтр;
        // --- }
        Если ВыводитьСРегламентом Тогда
            ОбластьОборотыИтог.Параметры.СуммаОборотДтРегл = ОборотыДтРегл;
            ОбластьОборотыИтог.Параметры.СуммаОборотКтРегл = ОборотыКтРегл;
           
            // --- {
            ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтрРегл = ОборотыДтКонтрРегл;
            ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтрРегл = ОборотыКтКонтрРегл;
            // --- }
        КонецЕсли;
       
        ТабДок.Вывести(ОбластьОборотыИтог);
       
    КонецЕсли;
         
    ОстатокНаКонец = ОстатокНаНачало + ОборотыДт - ОборотыКт;
    ОстатокНаКонецРегл = ОстатокНаНачалоРегл + ОборотыДтРегл - ОборотыКтРегл;
   
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);
   
    // --- {
    ОстатокНаКонецКонтр = ОстатокНаКонецКонтрагент;
    ОстатокНаКонецКонтрРегл = ОстатокНаКонецКонтрагентРегл;
   
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецКонтр > 0, ОстатокНаКонецКонтр, 0);
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецКонтр < 0, -ОстатокНаКонецКонтр, 0);
    // --- }
   
    Если ВыводитьСРегламентом Тогда
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтРегл = ?(ОстатокНаКонецРегл > 0, ОстатокНаКонецРегл, 0);
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтРегл = ?(ОстатокНаКонецРегл < 0, -ОстатокНаКонецРегл, 0);
       
        // --- {
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтрРегл = ?(ОстатокНаКонецКонтрРегл > 0, ОстатокНаКонецКонтрРегл, 0);
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтрРегл = ?(ОстатокНаКонецКонтрРегл < 0, -ОстатокНаКонецКонтрРегл, 0);
        // --- }
    КонецЕсли;
   
    ТабДок.Вывести(ОбластьКонОстатки);
   
    // Результаты сверки
      Если НЕ ЗначениеЗаполнено(КонецПериода) Тогда
           РезультатыСверки = "<не указана дата сверки>";
       ИначеЕсли НЕ ЗначениеЗаполнено(Контрагент) Тогда
           РезультатыСверки = "<не указан контрагент>";
       Иначе
        РезультатыСверки = "на " + Формат(КонецПериода, "ДФ=dd.MM.yyyy") + " задолженность ";
           
           Если ОстатокНаКонец > 0 Тогда
            РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НазваниеОрганизации) + " "
                                + Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
                                + строка(ВалютаДокумента)
                                +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;
   
           ИначеЕсли ОстатокНаКонец < 0 Тогда
            РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НаименованиеКонтрагента) + " "
                                + Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
                                + строка(ВалютаДокумента)
                                +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;
   
           Иначе
               РезультатыСверки = РезультатыСверки + "отсутствует.";
           КонецЕсли;
    КонецЕсли;
    ОбластьПодвал.Параметры.РезультатыСверки = РезультатыСверки;
   
    Если Расхождение<>0 Тогда                                                                                                                                                                                                                                                               
        ИтогСверки = "В результате сверки выявлено расхождение информации о состоянии расчетов в размере "
        +Формат(?(Расхождение>0,1,-1)*Расхождение, "ЧЦ=21; ЧДЦ=2")
        +" "+ Строка(ВалютаДокумента)
        +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(?(Расхождение>0,1,-1)*Расхождение, ВалютаДокумента,Ложь)+")" ;
        ОбластьПодвал.Параметры.ИтогСверки = Символы.ПС+ ИтогСверки+Символы.ПС+" ";
    КонецЕсли;
                 
    ОбластьПодвал.Параметры.НазваниеОрганизации = СокрЛП(НазваниеОрганизации);
    ОбластьПодвал.Параметры.НаименованиеКонтрагента = СокрЛП(НаименованиеКонтрагента);
   
    ОбластьПодвал.Параметры.Должность = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность);
    ОбластьПодвал.Параметры.ДолжностьК = ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента.Должность),"________________",ПредставительКонтрагента.Должность);
   
    ОбластьПодвал.Параметры.ФИОПредставителя  = "("+?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации),"_______________________",ДанныеПредставителяОрганизации.Представление)+")";
    ОбластьПодвал.Параметры.ФИОПредставителяК = "("+?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"_______________________",ПроцедурыУправленияПерсоналом.ФамилияИнициалыФизЛица(ПредставительКонтрагента.Фамилия + " " + ПредставительКонтрагента.Имя + " " + ПредставительКонтрагента.Отчество))+")";
   
    ТабДок.Вывести(ОбластьПодвал);
   
    Если ЭлементыФормы.ДействияФормы.Кнопки.ПометкаТолькоЧтение.Пометка Тогда
        ТабДок.ТолькоПросмотр = Истина;
    КонецЕсли;
       
КонецПроцедуры

sitash


Дмитрий@

Вот этот код
Для Инд = 0 По МаксИндекс Цикл
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
                ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);           
                ТабДок.Вывести(ОбластьОбороты);
            КонецЦикла;


Замените на код
Для Инд = 0 По СписокДокументов.Количество()-1 Цикл
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
                ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);           
                ТабДок.Вывести(ОбластьОбороты);
            КонецЦикла;

sitash

первую очередь хочу сказать огромное спасибо за все что Вы хотите сделать для нас. Спасибо еще раз. я вас очень хорошо понимаю что без конфигуратора вам тяжело исправить этот отчет. смотрите файл. 

Дмитрий@

Спасибо.
Посмотреть содержимое файлов могу только в понедельник.
Добавлено: 09 авг 2015, 22:26


Попробуйте заменить метод печать на этот код
Процедура Печать(ТабДок)
   
    ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов_АктСверки";
    Макет  = ПолучитьМакет("Макет");
    Приставка = "";
    Если ВыводитьСРегламентом Тогда
        Приставка = "Регл";
    КонецЕсли;
   
    ОбластьЗаголовок    = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьНачОстатки   = Макет.ПолучитьОбласть("НачОстатки"+Приставка);
    ОбластьНачОстаткиД  = Макет.ПолучитьОбласть("НачОстаткиДоговор"+Приставка);
    ОбластьДоговор      = Макет.ПолучитьОбласть("Договор");
    ОбластьДоговорИтоги = Макет.ПолучитьОбласть("ДоговорИтоги"+Приставка);
    ОбластьОбороты      = Макет.ПолучитьОбласть("Обороты"+Приставка);
    ОбластьОборотыИтог  = Макет.ПолучитьОбласть("ОборотыИтог"+Приставка);
    ОбластьКонОстатки   = Макет.ПолучитьОбласть("КонОстатки"+Приставка);
    ОбластьКонОстаткиД  = Макет.ПолучитьОбласть("КонОстаткиДоговор"+Приставка);
    ОбластьПодвал       = Макет.ПолучитьОбласть("Подвал");
   
    НазваниеОрганизации = Организация.НаименованиеПолное;
    Если ПустаяСтрока(НазваниеОрганизации) Тогда
        НазваниеОрганизации = Организация;
    КонецЕсли;
   
    НаименованиеКонтрагента = Контрагент.НаименованиеПолное;
    Если ПустаяСтрока(НаименованиеКонтрагента) Тогда
        НаименованиеКонтрагента = Контрагент;
    КонецЕсли;
   
    ОписаниеПериода = "за период: " + ПредставлениеПериода(НачалоДня(НачалоПериода), КонецДня(КонецПериода), "ФП = Истина");
   
    ТекстЗаголовка = "взаимных расчетов " + ОписаниеПериода  + Символы.ПС
                    + "между " + НазваниеОрганизации + Символы.ПС + "и " + НаименованиеКонтрагента;
    Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
        ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору " + СокрЛП(ДоговорКонтрагента.Наименование);
    КонецЕсли;
    ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;
   
    ДанныеПредставителяОрганизации = ОбщегоНазначения.ДанныеФизЛица(Организация, ПредставительОрганизации, КонецПериода);
    ФИОПредставителя = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Фамилия),"",ДанныеПредставителяОрганизации.Фамилия
                    + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Имя),""," "+ДанныеПредставителяОрганизации.Имя)
                    + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Отчество),""," "+ДанныеПредставителяОрганизации.Отчество));
   
    СтрЗаголовокТаблица = "Мы, нижеподписавшиеся, " + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность) + " " + НазваниеОрганизации
                + " " + ?(ФИОПредставителя<>"",ФИОПредставителя,"_______________________") + ", с одной стороны, "
                + "и " + ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента.Должность),"________________",ПредставительКонтрагента.Должность) + " " + НаименованиеКонтрагента + " "
                + ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"_______________________",ПредставительКонтрагента) + ", с другой стороны, "
                + "составили настоящий акт сверки в том, что состояние взаимных расчетов по данным учета следующее:";
   
    ОбластьЗаголовок.Параметры.СтрЗаголовокТаблица = СтрЗаголовокТаблица;
   
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
   
    ОбластьШапкаТаблицы.Параметры.НазваниеОрганизации = НазваниеОрганизации;
    ОбластьШапкаТаблицы.Параметры.НаименованиеКонтрагента = НаименованиеКонтрагента;
    ОбластьШапкаТаблицы.Параметры.ВалютаДокумента = ВалютаДокумента;
    ТабДок.Вывести(ОбластьШапкаТаблицы);
   
    ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(ОстатокНаНачало > 0, ОстатокНаНачало, 0);
    ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(ОстатокНаНачало < 0, -ОстатокНаНачало, 0);
    Если ВыводитьСРегламентом Тогда
        ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДтРегл = ?(ОстатокНаНачалоРегл > 0, ОстатокНаНачалоРегл, 0);
        ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКтРегл = ?(ОстатокНаНачалоРегл < 0, -ОстатокНаНачалоРегл, 0);
    КонецЕсли;
       
    ТабДок.Вывести(ОбластьНачОстатки);
   
    ОборотыДт = 0;
    ОборотыКт = 0;
    ОборотыДтКонтр = 0;
    ОборотыКтКонтр = 0;

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

        ОборотыДтРегл = ОбходПоОбщимИтогам.СуммаДогДтРегл;
        ОборотыКтРегл = ОбходПоОбщимИтогам.СуммаДогКтРегл;
        ОборотыДтКонтрРегл = ОбходПоОбщимИтогам.СуммаДогДтКонтрРегл;
        ОборотыКтКонтрРегл = ОбходПоОбщимИтогам.СуммаДогКтКонтрРегл;

        ОстаткиНаКонецД = новый Соответствие;

Если РазбитьПоДоговорам Тогда //Если разбить по договорам

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

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

Иначе //Если не разбивать по договорам

ОбходПоДокументам = Результат.Выбрать();
//Создадим список документов по организации и контрагенту
            СписокДокументов = новый массив;
Пока ОбходПоДокументам.Следующий() Цикл

                Если ОбходПоДокументам.ДатаК=NULL Тогда
                    СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт,СуммаОборотДтРегл,СуммаОборотКтРегл",
                    ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт,ОбходПоДокументам.СуммаДогДтРегл,ОбходПоДокументам.СуммаДогКтРегл));               
               
                ИначеЕсли ОбходПоДокументам.ДатаК<>NULL И ОбходПоДокументам.ДатаК = ОбходПоДокументам.Дата Тогда
                    СписокДокументов.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр,СуммаОборотДтКонтрРегл,СуммаОборотКтКонтрРегл",
                    ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр,ОбходПоДокументам.СуммаДогДтКонтрРегл,ОбходПоДокументам.СуммаДогКтКонтрРегл));               
КонецЕсли;

            КонецЦикла;
                       
            Для Инд = 0 По СписокДокументов.Количество()-1 Цикл
                ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);           
                ТабДок.Вывести(ОбластьОбороты);
            КонецЦикла;

КонецЕсли;
       
        ОбластьОборотыИтог.Параметры.СуммаОборотДт      = ОборотыДт;
        ОбластьОборотыИтог.Параметры.СуммаОборотКт      = ОборотыКт;
       
        // --- {
        ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ОборотыДтКонтр;
        ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ОборотыКтКонтр;
        // --- }
        Если ВыводитьСРегламентом Тогда
            ОбластьОборотыИтог.Параметры.СуммаОборотДтРегл = ОборотыДтРегл;
            ОбластьОборотыИтог.Параметры.СуммаОборотКтРегл = ОборотыКтРегл;
           
            // --- {
            ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтрРегл = ОборотыДтКонтрРегл;
            ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтрРегл = ОборотыКтКонтрРегл;
            // --- }
        КонецЕсли;
       
        ТабДок.Вывести(ОбластьОборотыИтог);
       
    КонецЕсли;
         
    ОстатокНаКонец = ОстатокНаНачало + ОборотыДт - ОборотыКт;
    ОстатокНаКонецРегл = ОстатокНаНачалоРегл + ОборотыДтРегл - ОборотыКтРегл;
   
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);
   
    // --- {
    ОстатокНаКонецКонтр = ОстатокНаКонецКонтрагент;
    ОстатокНаКонецКонтрРегл = ОстатокНаКонецКонтрагентРегл;
   
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецКонтр > 0, ОстатокНаКонецКонтр, 0);
    ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецКонтр < 0, -ОстатокНаКонецКонтр, 0);
    // --- }
   
    Если ВыводитьСРегламентом Тогда
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтРегл = ?(ОстатокНаКонецРегл > 0, ОстатокНаКонецРегл, 0);
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтРегл = ?(ОстатокНаКонецРегл < 0, -ОстатокНаКонецРегл, 0);
       
        // --- {
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтрРегл = ?(ОстатокНаКонецКонтрРегл > 0, ОстатокНаКонецКонтрРегл, 0);
        ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтрРегл = ?(ОстатокНаКонецКонтрРегл < 0, -ОстатокНаКонецКонтрРегл, 0);
        // --- }
    КонецЕсли;
   
    ТабДок.Вывести(ОбластьКонОстатки);
   
    // Результаты сверки
      Если НЕ ЗначениеЗаполнено(КонецПериода) Тогда
           РезультатыСверки = "<не указана дата сверки>";
       ИначеЕсли НЕ ЗначениеЗаполнено(Контрагент) Тогда
           РезультатыСверки = "<не указан контрагент>";
       Иначе
        РезультатыСверки = "на " + Формат(КонецПериода, "ДФ=dd.MM.yyyy") + " задолженность ";
           
           Если ОстатокНаКонец > 0 Тогда
            РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НазваниеОрганизации) + " "
                                + Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
                                + строка(ВалютаДокумента)
                                +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;
   
           ИначеЕсли ОстатокНаКонец < 0 Тогда
            РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НаименованиеКонтрагента) + " "
                                + Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
                                + строка(ВалютаДокумента)
                                +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;
   
           Иначе
               РезультатыСверки = РезультатыСверки + "отсутствует.";
           КонецЕсли;
    КонецЕсли;
    ОбластьПодвал.Параметры.РезультатыСверки = РезультатыСверки;
   
    Если Расхождение<>0 Тогда                                                                                                                                                                                                                                                               
        ИтогСверки = "В результате сверки выявлено расхождение информации о состоянии расчетов в размере "
        +Формат(?(Расхождение>0,1,-1)*Расхождение, "ЧЦ=21; ЧДЦ=2")
        +" "+ Строка(ВалютаДокумента)
        +" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(?(Расхождение>0,1,-1)*Расхождение, ВалютаДокумента,Ложь)+")" ;
        ОбластьПодвал.Параметры.ИтогСверки = Символы.ПС+ ИтогСверки+Символы.ПС+" ";
    КонецЕсли;
                 
    ОбластьПодвал.Параметры.НазваниеОрганизации = СокрЛП(НазваниеОрганизации);
    ОбластьПодвал.Параметры.НаименованиеКонтрагента = СокрЛП(НаименованиеКонтрагента);
   
    ОбластьПодвал.Параметры.Должность = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность);
    ОбластьПодвал.Параметры.ДолжностьК = ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента.Должность),"________________",ПредставительКонтрагента.Должность);
   
    ОбластьПодвал.Параметры.ФИОПредставителя  = "("+?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации),"_______________________",ДанныеПредставителяОрганизации.Представление)+")";
    ОбластьПодвал.Параметры.ФИОПредставителяК = "("+?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"_______________________",ПроцедурыУправленияПерсоналом.ФамилияИнициалыФизЛица(ПредставительКонтрагента.Фамилия + " " + ПредставительКонтрагента.Имя + " " + ПредставительКонтрагента.Отчество))+")";
   
    ТабДок.Вывести(ОбластьПодвал);
   
    Если ЭлементыФормы.ДействияФормы.Кнопки.ПометкаТолькоЧтение.Пометка Тогда
        ТабДок.ТолькоПросмотр = Истина;
    КонецЕсли;
       
КонецПроцедуры

Добавлено: 10 авг 2015, 00:03


Там в одном месте сделал опечатку исправьте код
|ПО
        |    ОБЩИЕ " + ?(РазбитьПоДоговорам,"",",
        |    Договор");


На это код
|ПО
        |    ОБЩИЕ " + ?(Не РазбитьПоДоговорам,"",",
        |    Договор");

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск