1С7.7 Обход таблицы значений

  • Автор темы KiR
  • Дата начала
K

KiR

Вообщем за месяц нужно собирать данные о займах - остатки и погашения (58.3 и 66.3).
Собираю таким образом:
БухИт.ВыполнитьЗапрос( НачДата, КонДата, "58.3, 66.3",,,,"Проводка" ,); далее выбираю субконто1, субконто2,счета,а затем условие - если БухИт.ПолучитьПериод() = 1 тогда снимаю движения, иначе - беру остаток. этими данными заполняю ТЗ (в которой есть поля с НачДатой и КонДатой). Потом необходимо организовать ТЗ таким образом чтобы можно было высчитать колво дней за которые нужно начислить процент. Приведу результирующую таблицу
НачДата КонДата СуммаОстаткаПоЗайму СуммаЧастичногоПогашения КолвоДней
31.10.09 02.11.09 870000 460000 2
02.11.09 30.11.09 410000 28

в моей же таблице есть только дата проводки. Подскажите пожалуйста как мне обходить ТЗ чтобы привести ее в необходимый вид?

P.S. Если написано задание сумбурно и непонятно - коментите, постараюсь уточнить описание
 
H

Hryv

Почему нельзя в первую таблицу добавить дату оплаты?
Или за период с НачДата по КонДата может быть несколько оплат?
 
U

unknown181538

Как должен рассчитываться процент, если в течение месяца было частичное погашение?
Приведи код заполнения ТЗ.
 
K

KiR

Или за период с НачДата по КонДата может быть несколько оплат
естественно. Поэтому-то и возникает сложность.
Как должен рассчитываться процент, если в течение месяца было частичное погашение?
Процент расчитывается очень просто. Сумма остатка*процентную ставку(вытягиваю из названия договора)/колво дней в году*колво дней в месяце.

Исходную таблицу получаю так:
Код:
	БухИт.ВыполнитьЗапрос( НачДата, КонДата, "58.3, 66.3",,,,"Проводка" ,);  //
БухИт.ВыбратьСубконто(1);
Пока БухИт.ПолучитьСубконто(1) = 1 Цикл
БухИт.ВыбратьСубконто(2); 
Пока БухИт.ПолучитьСубконто(2) = 1 Цикл	
БухИт.ВыбратьСчета(); 
Пока БухИт.ПолучитьСчет() = 1 Цикл
БухИт.ВыбратьПериоды(,,,1); 
Если БухИт.ПолучитьПериод() = 1 Тогда 
БухИт.ВыбратьПериоды(,,,1);
Пока БухИт.ПолучитьПериод() = 1  Цикл 
ТЗВ.НоваяСтрока();
ТЗВ.Контрагент = БухИт.Субконто(1);//.Наименование;
ТЗВ.Договор = БухИт.Субконто(2);//.Наименование; 
ТЗВ.КДвГ = (КонГода(КонДата) - НачГода(КонДата))+1;
ТЗВ.ДатаН = БухИт.НачДата; 
ТЗВ.Датак = БухИт.КонДата; 
ТЗВ.Счет = БухИт.Счет;  
ТЗВ.ПрСтавка = Сред(Прав(БухИт.Субконто(2).Наименование,7),1,5);
Если БухИт.Счет.код = "58.3" ТОгда 
ТЗВ.Сумма = БухИт.СНД();
ТЗВ.ВозвратКредита = БухИт.КО(); 
Если ТЗВ.Сумма = 0 Тогда
ТЗВ.Приход = БухИт.ДО();
КонецЕсли;
Иначе 
ТЗВ.Сумма = БухИт.СНК(); 
ТЗВ.ВозвратКредита = БухИт.ДО(); 
Если ТЗВ.Сумма = 0 Тогда
ТЗВ.Приход = БухИт.КО();
КонецЕсли;
КонецЕсли;	
КонецЦикла;
Иначе // если были только остатки на начало периода и отсутствовали движения
ТЗВ.НоваяСтрока();
ТЗВ.Контрагент = БухИт.Субконто(1);//.Наименование;
ТЗВ.Договор = БухИт.Субконто(2);//.Наименование; 
ТЗВ.КДвГ = (КонГода(КонДата) - НачГода(КонДата))+1;
ТЗВ.ДатаН = НачДата-1; 
ТЗВ.Датак = КонДата; 
ТЗВ.Счет = БухИт.Счет;  
ТЗВ.ПрСтавка = Сред(Прав(БухИт.Субконто(2).Наименование,7),1,5);
Если БухИт.Счет.код = "58.3" ТОгда 
ТЗВ.Сумма = БухИт.СКД();
Иначе 
ТЗВ.Сумма = БухИт.СКК(); 
КонецЕсли; 
ТЗВ.Остаток = 1;
КонецЕсли;	
КонецЦикла;
КонецЦикла;
КонецЦикла;
соотвественно нужно обрабатывать ее определенным образом (с определенными условиями) чтобы на выходе получилась табличка какая нужно.
 
U

unknown181538

А если сделать периодичностью итогов "день", потом, свернув по сумме, получить кол-во дней с остатками определенной суммы, и умножать каждую сумму на процент и кол-во дней? (это если я правильно понял задачу..)
 
U

unknown181538

Значит, я не так понял... Разве нужно не просто кол-во дней с остатками? Как погашения влияют на процент?
 
K

KiR

есть сумма займа к прмеру 50000. потом идет погашение на 10000, которое было к примеру 10 числа. в итоге за 10 дней (с начала месяца) % будет начисляться за всю сумму (50000), а с 10 числа процент рачислится на остаточную сумму займа - т.е. на 40000.
 
R

Ro811

зачем такие страдания когда есть анализ счета по датам? :(
затем остаток умножается на процент , действующий на эту дату
я думаю внутри одного дня у вас процент не меняется
 
K

KiR

Ro811, затем что нужно учитывать субконто - Контрагент и Договор, а потом на основании полученных данных сформировать бух.справку
 
R

Ro811

Ro811, затем что нужно учитывать субконто - Контрагент и Договор, а потом на основании полученных данных сформировать бух.справку
добавь в конфигураторе парочку субконто Контрагент и Договор и все
 
K

KiR

Ro811, это не спасет. а если уж дорабатывать что-то (используя готовое на 20%) так уж лучше написать с нуля как надо...
 
U

unknown181538

есть сумма займа к прмеру 50000. потом идет погашение на 10000, которое было к примеру 10 числа. в итоге за 10 дней (с начала месяца) % будет начисляться за всю сумму (50000), а с 10 числа процент рачислится на остаточную сумму займа - т.е. на 40000.
Так чем не подходит получение остаткана конец каждого дня? (Это по сути и есть анализ по дням)?
 
R

Ro811

есть сумма займа к прмеру 50000. потом идет погашение на 10000, которое было к примеру 10 числа. в итоге за 10 дней (с начала месяца) % будет начисляться за всю сумму (50000), а с 10 числа процент рачислится на остаточную сумму займа - т.е. на 40000.
---------------------------------------------------------------------
так анализ счета по датам и покажет остаток
на 1число -50000
.........
на 10 число -50000
на 11 число -40000
я давно заметил прогеров хлебом не корми, дай написать какую нибудь прогу

Добавлено:
А потом парсить таблицу и удалять оттуда те дни в которых равные остатки?

------------------------
а на дни где равные остатки, процент начислять ты не собираешься
 
K

KiR

блин, народ, мне не нужно показывать все дни месяца и их остатки! мне нужно показвать случившиеся погашения и начислять процент на оставшуюся сумму.. в принципе уже не важно - наклепал кое-как обход, но пожалуй никому его не буду советовать (по крайней мере пока бухи тестят)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!