Акт сверки взаиморасчетов БП 8.1

1. Enya_06 21.08.09 08:34 Сейчас в теме
Нужно отредактироватся стандартный акт.Т.е при составлении договора,и установлении галочки "Разбить по договорам" ..должно дополнительно выводиться сальдо начальное и сальдо конечное по каждому договору...подскажите с чего начать...нужно подправить запрос..вот ток чтото не могу сообразить как...
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Enya_06 21.08.09 11:00 Сейчас в теме
..АУУ??? Кто хорошо знаком с БП...помогите очень срочно нужно...
Вот код изначальный начала подпралять...

Функция ПечатьАктаСверки()

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

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

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


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

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

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

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

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


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

Если РазбитьПоДоговорам Тогда
//Выводим заголовок с договором
ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор;
ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор;
ТабДок.Вывести(ОбластьДоговор);
ОбходПоДокументам=ОбходПоДоговорам.Выбрать();
Вот тут нужно вывести сальдо начально по договору т.е проблема в том как именно на данный момент высчитать если ли сальдо начальное(СуммаНДТ) по данному договору или нет!!!!
ОбластьСальдоН.Параметры.СуммаНДТ = ?(СУммаНДТ, СуммаНДТ, 0);
ТабДок.Вывести(ОбластьСальдоН);

Иначе
ОбходПоДокументам=Результат.Выбрать();
КонецЕсли;

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

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

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

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

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

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

КонецЦикла;

ОбластьОборотыИтог.Параметры.СуммаОборотДт = ОборотыДт;
ОбластьОборотыИтог.Параметры.СуммаОборотКт = ОборотыКт;
Если СверкаСогласована тогда
ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ОборотыДтКонтр;
ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ОборотыКтКонтр;
КонецЕсли;
ТабДок.Вывести(ОбластьОборотыИтог);

КонецЕсли;

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

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

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


......
......
......
Возврат ТабДок;

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



Ну вроде подробно описала проблему помогите же кто-нибудь???Или сегодня глухо тут???
+
3. Enya_06 24.08.09 07:22 Сейчас в теме
АУУ??? Новая неделя все со свежей головой может кто-нибудь что нибудь подскажет???
+
4. Borisych 503 11.12.09 22:03 Сейчас в теме
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот