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

Тема в разделе "1C и всё что с ней связано", создана пользователем KiR, 10 фев 2010.

  1. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Вообщем за месяц нужно собирать данные о займах - остатки и погашения (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. Если написано задание сумбурно и непонятно - коментите, постараюсь уточнить описание
     
  2. Hryv

    Hryv Гость

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Как должен рассчитываться процент, если в течение месяца было частичное погашение?
    Приведи код заполнения ТЗ.
     
  4. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    естественно. Поэтому-то и возникает сложность.
    Процент расчитывается очень просто. Сумма остатка*процентную ставку(вытягиваю из названия договора)/колво дней в году*колво дней в месяце.

    Исходную таблицу получаю так:
    Код (Text):
        БухИт.ВыполнитьЗапрос( НачДата, КонДата, "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;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    соотвественно нужно обрабатывать ее определенным образом (с определенными условиями) чтобы на выходе получилась табличка какая нужно.
     
  5. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    А если сделать периодичностью итогов "день", потом, свернув по сумме, получить кол-во дней с остатками определенной суммы, и умножать каждую сумму на процент и кол-во дней? (это если я правильно понял задачу..)
     
  6. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    а какая разница - день или проводка? все равно ведь на выходе нужно будет получать каждое погашение...
     
  7. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Значит, я не так понял... Разве нужно не просто кол-во дней с остатками? Как погашения влияют на процент?
     
  8. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    есть сумма займа к прмеру 50000. потом идет погашение на 10000, которое было к примеру 10 числа. в итоге за 10 дней (с начала месяца) % будет начисляться за всю сумму (50000), а с 10 числа процент рачислится на остаточную сумму займа - т.е. на 40000.
     
  9. Ro811

    Ro811 Гость

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Ro811, затем что нужно учитывать субконто - Контрагент и Договор, а потом на основании полученных данных сформировать бух.справку
     
  11. Ro811

    Ro811 Гость

    добавь в конфигураторе парочку субконто Контрагент и Договор и все
     
  12. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Ro811, это не спасет. а если уж дорабатывать что-то (используя готовое на 20%) так уж лучше написать с нуля как надо...
     
  13. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Так чем не подходит получение остаткана конец каждого дня? (Это по сути и есть анализ по дням)?
     
  14. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    А потом парсить таблицу и удалять оттуда те дни в которых равные остатки?
     
  15. Ro811

    Ro811 Гость

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

    Добавлено:
    ------------------------
    а на дни где равные остатки, процент начислять ты не собираешься
     
  16. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    блин, народ, мне не нужно показывать все дни месяца и их остатки! мне нужно показвать случившиеся погашения и начислять процент на оставшуюся сумму.. в принципе уже не важно - наклепал кое-как обход, но пожалуй никому его не буду советовать (по крайней мере пока бухи тестят)
     
Загрузка...

Поделиться этой страницей