• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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

KiR

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

KiR

подсказали что во всем виновата "Проводка"((( видимо прийдется делать 2 запроса...
 
F

Floydik

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


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

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