helpf.pro
Регистрация

?:

irinaol999
03.04.2019 19:40Прочитано: 795

Сделать таким образом, чтобы пользователь не задавал контрагента и договор, он задает только период, организацию и тд. Нужно написать,таким образом, что бы перебирались все контрагенты и договоры по которым есть какие либо данные. Т.е если займы брали несколько контрагентов, то по каждому договору проценты считаются обособленно ,операция создается одна, но в ней несколько проводок, на каждый договор своя проводка. Прим. Договор № 123 от Сбербанка -сумма такая то; след.проводка счета Дб и Кт все тоже самое, но будет другой договор, банк и соответственно сумма процентов. Сформировать операцию с каждой проводки- будет сумма для определенного договора, а вверху как сумма операций -ставится сумма всех проводок т.е сумма всех процентов

Код 1C v 8.3
 &НаКлиенте
Процедура Сформировать(Команда)
//Вставить содержание обработчика
Сумма=РасчетПроцентов();
Сообщить(“Сумма процентов=”+Сумма);
КонецПроцедуры
&НаСервере
Функция РасчетПроцентов();
КолвоДнейвГ=ДеньГода(КонецГода(дата1));
Если Создавать_операцию тогда
Док=Документы.ОперацияБух.СоздатьДокумент();
Док.Дата=КонецДня(дата2);
Док.Оргагизация=Организация;
Док.Содержание=”Начисление процентов по кредиту”;
Док.Комментарий=”Начисление процентов по кредиту”;
Док.СпособЗаполнения=”вручную”;
Конецесли;
Запрос.Текст= “ВЫБРАТЬ
            |ХозрасчетныйОстаткиИОбороты.Период,
|ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт
|ИЗ
|РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
|&дата1,
|&дата2,
|день,
|ДвиженияИГраницыПериода,
|счет=&счет,
|,
|организация=&организация
|И Субконто1=&контрагент
|И Субконто2=&договор) КАК Хозрасчетный.ОстаткиИОбороты”;
Запрос.УстановитьПараметр(“Дата1”,Дата1);
Запрос.УстановитьПараметр(“Дата2”, КонецДня(Дата2));
Запрос.УстановитьПараметр(“Организация”,Организация);
Запрос.УстановитьПараметр(“Договор”,Договор);
Запрос.УстановитьПараметр(“Контрагент”,контрагент);
Запрос.УстановитьПараметр(“Счет”,ПланыСчетов.Хозрасчетный.Краткосрочныезаймы);
РезультатЗапроса=Запрос.Выполнить();
Выборка=РезультатЗапроса.Выбрать();
ДатаПредыдущая=дата1;
Общаясумма=0;
Пока выборка.Следующий() цикл
ДатаТекущая=Выборка.Период;
СуммаТекущая=Выборка.СуммаНачальныйОстатокКт;
КоличествоДней=((ДатаТекущая-ДатаПредыдущая)/3600)/24;
Проценты=ОКР(СуммаТекущая+ПроцентнаяСтавка/100*КоличествоДней/КолвоДнейвГ,2);
ДатаПредыдущая=ДатаТекущая;
Общаясумма=общаясумма+проценты;
Конеццикла;

Если (общаясумма<>0) И создавать_операцию тогда
//добаляем проводку дт 91.02 кт 66.02
Проводки=Док.Движения.Хозрасчетный;
НоваяПроводка=Проводки.Добавить();
НоваяПроводка.Активность=истина;
НоваяПроводка.Организация=Организация;
НоваяПроводка.Период=Док.Дата;
НоваяПроводка.Содержание=”Начисление процентов по кредиту”;
НоваяПроводка.СчетДт=ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
НоваяПроводка.СчетКт=ПланыСчетов.Хозрасчетный.ПроцентыпоКраткосрочнымКредитам;
НоваяПроводка.СубконтоДб(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПрочиеДоходыИРасходы)=Статья_расходов;
НоваяПроводка.СубконтоКт(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)=Контрагенты;
НоваяПроводка.СубконтоКт(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры)=Договоры;
НоваяПроводка.СуммаНУДт=общаясумма;
НоваяПроводка.СуммаНУКт=общаясумма;
Док.СуммаОпераций=общаясумма;
Конецесли;


Конецпроцедуры;
Yandex
Возможно, вас также заинтересует
Реклама на портале
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.