1c7.7 бух.итоги

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

  1. KiR

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

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Задача: Получить СКД и КО с периодом проводка
    Решение:
    Код (Text):
    БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,1);
    БухИт.ИспользоватьСубконто(ВидыСубконто.Договоры, Договор,1);
    БухИт.ВыполнитьЗапрос( НачДата, КонДата, "58.3",,,,"Проводка",);
    БухИт.ВыбратьСубконто(1);
    Пока БухИт.ПолучитьСубконто(1) = 1 Цикл
    БухИт.ВыбратьСубконто(2);
    Пока БухИт.ПолучитьСубконто(2) = 1 Цикл
    БухИт.ВыбратьСчета();
    Пока БухИт.ПолучитьСчет() = 1 Цикл
    БухИт.ВыбратьПериоды(,,,1);
    Пока БухИт.ПолучитьПериод() = 1  Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Контрагент = БухИт.Субконто(1).Наименование;
    ТЗ.Договор = БухИт.Субконто(2).Наименование;
    ТЗ.Сумма = БухИт.СКД();
    ТЗ.КДвГ = (КонГода(КонДата) - НачГода(КонДата))+1;
    ТЗ.ДатаН = БухИт.НачДата;
    ТЗ.ВозвратКредита = БухИт.КО();
    ТЗ.ПрСтавка = Сред(Прав(БухИт.Субконто2).Наименование,7),1,5);
    КонецЦикла;  
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    Вопрос: результат не совпадает с обороткой. некоторых договоров, у которых есть СКД и нет КО - не отбирает. почему так происходит, что я сделал неверно? Заранее спасибо
     
  2. KiR

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

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    подсказали что во всем виновата "Проводка"((( видимо прийдется делать 2 запроса...
     
  3. Floydik

    Floydik Гость

    Во-первых, если у тебя счет "58.3" конечного порядка, т.е. нет более глубоких субсчетов, тогда ИспользоватьСубконто() тут в принципе не обязательно, если используешь периодичность итогов "Проводка", а так же не вижу смысла выбирать счета
    Во-вторых, зачем получать СКД() или КО(), если ты получаешь конкретную проводку, где можно получить БИ.Операция.Сумма.
    БухИт.Субконто(1) и (2) получились уже сами собой методом выборки по проводке.
    Третье, тут лучше использовать методы Если БухИт.ВыбранаПоКТ() = 1 Тогда (или по Дт())
    Я так понимаю, если 58.3 сторона д*цензура*овая, то это выдача кредита, и наоборот.
    Потому предлагаю следующую последовательность:
    1. ВыбратьПериоды
    2 Если ВыбранаПоДТ Тогда
    Иначе
    КонецЕсли;
    Если не получится, недавно писал по похожему запросу книгу покупок, могу предложить.
    Floid


    PS. Разумеется, ошибки на твое усмотрение. Я просто предложил схему
     
Загрузка...

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