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

Помогите с обработкой (СКД)

Автор ackiy, 12 ноя 2013, 12:35

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

ackiy

Здравствуйте. Работаю я сисадмином на которой занимаются кредитами. Время от времени поступаю задания по 1С. И вот от шефа поступило задание.

Есть обработка она считает количество дней прострочки(по формуле ТаблЗн.Дней) и сумму прострочки по кредиту по двум счетам 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");
Таб.ВывестиСекцию("Дно");
Таб.Показать();
КонецПроцедуры

MuI_I_Ika

В 7.7 СКД - это сальдо конечное дебетовое. Дружить тут в общем то не с чем. Перейдете на восьмерку будете дружить.

Теги: скд БухИтоги 

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

Рейтинг@Mail.ru

Поиск