Есть обработка она считает количество дней прострочки(по формуле ТаблЗн.Дней) и сумму прострочки по кредиту по двум счетам 376 и 373.
Так же она может выводить отчет: по основной сумме кредита (376 счет) (телу) или по основной с процентами (376 и 373).
Проблема в том что при выводе отчета по основной сумме неправильно считается дни прострочки т.к. не учитывается при этом 373 счет.
Я недавно только начал программировать в 1с и с БухИтогами пока не разобрался.
Помогите сделать так что бы расчет дней прострочки всегда шел по двум счетам.
Заранее Спасибо.
Перем Кол1, Кол2, Кол3, Кол4;
Процедура ПриОткрытии()
Осн=1;
Фирма=Константа.БазФирма;
Конецпроцедуры
//*******************************************
Процедура Сформировать()
Док=СоздатьОбъект("Документ.Надання_позикиСтарый");
Док2=СоздатьОбъект("Документ.Надання_позики");
Кол1=0;
Кол2=0;
Кол3=0;
Кол4=0;
Таб = СоздатьОбъект("Таблица");
Таб.Опции(0,0,0,0,"Должники");
Таб.ИсходнаяТаблица("Таблица");
Таб.ТолькоПросмотр(1);
Таб.ПараметрыСтраницы(1,,,,,,,,,1,,);
Таб.ПовторятьПриПечатиСтроки(3,4);
Таб.ВывестиСекцию("Шапка");
ТаблЗн=СоздатьОбъект("ТаблицаЗначений");
Табл=СоздатьОбъект("ТаблицаЗначений");
//Создание колонок промежуточной ТЗ
ТаблЗн.НоваяКолонка("Сот","Справочник.ЧленыКС");
ТаблЗн.НоваяКолонка("Док","Документ");
ТаблЗн.НоваяКолонка("СуммаПозыки","Число",14,2);
ТаблЗн.НоваяКолонка("Задолженность","Число",14,2);
ТаблЗн.НоваяКолонка("СуммаДБ","Число",14,2);
ТаблЗн.НоваяКолонка("Дней","Число",10,2);
ТаблЗн.НоваяКолонка("Процент","Число",8,2);
ТаблЗн.НоваяКолонка("ДатаВыдачи","Дата");
ТаблЗн.НоваяКолонка("Дн1","Число",10,2);
ТаблЗн.НоваяКолонка("Дн2","Число",10,2);
ТаблЗн.НоваяКолонка("Дн3","Число",10,2);
ТаблЗн.НоваяКолонка("Дн4","Число",10,2);
ТаблЗн.НоваяКолонка("КЛ","Строка");
//Создание колонок промежуточной ТЗ
//Создание ОбЪекта БИ и инициализация Субконто
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Если Фирма.Выбран()=1 Тогда
Ит.ИспользоватьРазделительУчета(Фирма);
КонецЕсли;
Ит.ИспользоватьСубконто(ВидыСубконто.ЧленыКС,Сотрудник);
Ит.ИспользоватьСубконто(ВидыСубконто.Документ);
Если Осн=1 Тогда
Ит.ВыполнитьЗапрос(КонДата,КонДата,"376");
Иначе
Ит.ВыполнитьЗапрос(КонДата,КонДата,"376,373");
КонецЕсли;
//Создание ОбЪекта БИ и инициализация Субконто
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
Если Ит.СКД()-Ит.СКК()=0 Тогда
Продолжить;
КонецЕсли;
Если Ит.СКД()=0 Тогда
Продолжить;
КонецЕсли;
Ит.ВыбратьСубконто(2);
Пока Ит.ПолучитьСубконто(2) = 1 Цикл
Если Ит.СКД()<=0 Тогда
Продолжить;
КонецЕсли;
Если ПустоеЗначение(Ит.Субконто(2))=1 Тогда
Сообщить("Позика на суму "+Ит.СКД()+" "+Ит.Субконто(1)+" не зв'язана з документом і не буде врахована цим звітом");
Продолжить;
КонецЕсли;
ТаблЗн.НоваяСтрока();
ТаблЗн.Сот = Ит.Субконто(1);
Сот=СокрЛП(ТаблЗн.Сот.Наименование);
ТаблЗн.КЛ = Строка(ТаблЗн.Сот);
ТаблЗн.Задолженность = Ит.СКД();
ТаблЗн.Док = Ит.Субконто(2);
Если Ит.Субконто(2).Вид()="Надання_позикиСтарый" Тогда
Док.НайтиДокумент(Ит.Субконто(2));
ТаблЗн.СуммаПозыки=Док.Сумма;
ТаблЗн.Процент=Док.Процент;
Документ=Док.ТекущийДокумент();
Док.ВыгрузитьТабличнуюЧасть(Табл);
ИначеЕсли Ит.Субконто(2).Вид()="Надання_позики" Тогда
Док2.НайтиДокумент(Ит.Субконто(2));
Документ=Док2.ТекущийДокумент();
ДатаРК = 0;
Если документ.ВидВозврата=Перечисление.ВозвратКредита.КредитнаяЛиния Тогда
РК = создатьобъект("Документ.РасходныйКассовыйСтарый");
РК.ВыбратьДокументы(документ.ДатаДок, КонДата);
Пока РК.ПолучитьДокумент()=1 Цикл
Если РК.родитель = документ Тогда
ДатаРК = РК.ДатаДок;
КонецЕсли;
КонецЦикла;
ТаблЗн.КЛ = Строка(ТаблЗн.КЛ) + "!Кр. Л.! <--";
Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит1.ИспользоватьСубконто(ВидыСубконто.Документ,Документ);
Ит1.ВыполнитьЗапрос(,ДатаРК,"376",,);
Ит1.ВыбратьСубконто();
Ит1.ПолучитьСубконто();
СумКЛ = Ит1.СКД();
ТаблЗн.СуммаПозыки = СумКЛ;
ТаблЗн.Процент= Док2.Процент;
Док2.ВыгрузитьТабличнуюЧасть(Табл);
ИНаче
ТаблЗн.СуммаПозыки=Док2.Сумма;
ТаблЗн.Процент= Док2.Процент;
Док2.ВыгрузитьТабличнуюЧасть(Табл);
КонецЕсли;
Иначе
Сообщить("Документи вида "+Ит.Субконто(2).Вид()+" не враховуються цією програмою!"+
" Позичальник " +Ит.Субконто(1)+" документ № "+Ит.Субконто(2).НомерДок+" від "+Ит.Субконто(2).ДатаДок);
Продолжить;
КонецЕсли;
зюбер=1;
СуммаДБ=0; СумПроц=0;пз=Ит.Субконто(2).ДатаДок;
Если Ит.Субконто(2).Вид()="Надання_позики" Тогда
Если документ.ВидВозврата=Перечисление.ВозвратКредита.КредитнаяЛиния Тогда
пз = ДатаРК;
КонецЕсли;
КонецЕсли;
ДатаВозв="";
Табл.ВыбратьСтроки();
Пока Табл.ПолучитьСтроку()=1 Цикл
Если КонДата>Табл.ДатВозв Тогда
пз=Табл.ДатВозв;
Продолжить;
Иначе
СуммаДБ=Табл.ОстВозв;
Прервать;
КонецЕсли;
КонецЦикла;
ТаблЗн.СуммаДБ=СуммаДБ;
Ф = ТаблЗн.Задолженность;
н = КонДата-Ит.Субконто(2).ДатаДок;
Если Ит.Субконто(2).Вид()="Надання_позики" Тогда
Если документ.ВидВозврата=Перечисление.ВозвратКредита.КредитнаяЛиния Тогда
н = КонДата-ДатаРК;
КонецЕсли;
КонецЕсли;
н1 = КонДата-пз;
Р=Окр(ТаблЗн.СуммаДБ*(1+н1*ТаблЗн.Процент/365/100),2);
М=Окр(((ТаблЗн.СуммаПозыки*ТаблЗн.Процент/365/100)*н),2)+ТаблЗн.СуммаПозыки;
//
ТаблЗн.Дней=?((М-Р)<=0,0,н*(Ф-Р)/(М-Р));
Если (ТаблЗн.Дней>=31) и (ТаблЗн.Дней<=90) Тогда
ТаблЗн.Дн1= ТаблЗн.Задолженность;
Кол1=Кол1+1;
ИначеЕсли (ТаблЗн.Дней>=91) и (ТаблЗн.Дней<=180) Тогда
ТаблЗн.Дн2= ТаблЗн.Задолженность;
Кол2=Кол2+1;
ИначеЕсли (ТаблЗн.Дней>=181) и (ТаблЗн.Дней<=365) Тогда
ТаблЗн.Дн3= ТаблЗн.Задолженность;
Кол3=Кол3+1;
ИначеЕсли (ТаблЗн.Дней>365) Тогда
ТаблЗн.Дн4= ТаблЗн.Задолженность;
Кол4=Кол4+1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТаблЗн.Сортировать("Сот,ДатаВыдачи");
н=0;
ТаблЗн.ВыбратьСтроки();
Пока ТаблЗн.ПолучитьСтроку()=1 Цикл
Если ТаблЗн.Дней<31 Тогда
Продолжить;
КонецЕсли;
н=н+1;
Сот=СокрЛП(ТаблЗн.Сот.Наименование);
Таб.ВывестиСекцию("Строка");
Если АДР = 1 Тогда
Таб.ВывестиСекцию("Адрес");
Если ТаблЗн.Док.Вид() = "Надання_позики" Тогда
Таб.ВывестиСекцию("Попередження");
КонецЕсли;
КонецЕсли;
КонецЦикла;
ВсегоИтого=ТаблЗн.Итог("Дн1")+ТаблЗн.Итог("Дн2")+ТаблЗн.Итог("Дн3")+ТаблЗн.Итог("Дн4");
Таб.ВывестиСекцию("Дно");
Таб.Показать();
КонецПроцедуры