Акт сверки взаиморасчетов БП 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 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)