06.07.2015, 10:01 | #1 |
Участник
|
Сальдо на дату
Снова вопрос по сальдо. Точнее как его посчитать на заданную дату по клиенту? Эта задача уже неоднократно обсуждалась и в ряде сообщений указывалось, что нужно использовать таблицы LedgerBalancesTrans и LedgerBalancesDimTrans (аккумулированные обороты за определенную дату в разрезе счетов и счетов+аналитик соответсвенно). Но в 2012 я таких таблиц просто не нашла. Может быть кто-нибудь знает в какую сторону копать теперь? Как получить сальдо не анализируя все проводки custTrans с начала времен?
Последний раз редактировалось Mila; 06.07.2015 в 10:10. |
|
06.07.2015, 10:23 | #2 |
Участник
|
Сальдо по клиенту - это сумма открытых (не полностью сопоставленных) проводок - посмотрите, как считается сальдо в штатном функционале (Расчеты с клиентами/Клиенты/Все клиенты, кнопка Сальдо). При нормальном сопоставлении число открытых проводок по клиенту в каждый момент времени должно быть невелико, так что никакие расчеты с начала времен не нужны, напротив, считать нужно от текущего открытого сальдо. Посмотрите штатную оборотку по клиентам, как там считается входящее сальдо на дату.
|
|
06.07.2015, 10:44 | #3 |
Злыдни
|
Или, как вариант, акт сверки взаимных расчетов. В нем есть расчет сальдо на начальную и конечную дату выборки
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
07.07.2015, 08:55 | #4 |
Участник
|
Посмотрела Акт сверки взаимных расчетов. Если я правильно поняла, то сальдо на начало заданного периода считается в rLedgerSheetServer_ActAdjustCustVend.calcBalanceBegPeriod(). Так тут анализируется CustTruns с начала времен, до указанной даты. Не понимаю, может быть я чего-то не увидела?
|
|
07.07.2015, 09:41 | #5 |
Участник
|
В разных местах по разному считает.
Если посмотрите примеры которые вам привели, то убедитесь в этом. |
|
09.07.2015, 13:39 | #6 |
Участник
|
Посмотрела я оба отчета, указанных выше. Но решения для себя так и не нашла. В шахматной ведомости не считается сальдо, только обороты, но это не главное. Главное, что запрос идет по GeneralJournalEntry и к ней джойнится FiscalCalendarPeriod. Мне нужно сальдо в разрезе клиентов (планировала CustTrans анализировать). В акте сверки взаимных расчетов (RLedgerSheetServer_ActAdjustCustVend.calcBalanceBegPeriod()) запрос выглядит примерно так:
SELECT * FROM CustTrans ORDER BY CustTrans.TransDate ASC WHERE ((AccountNum = N'Test')) AND ((TransDate<={ts '2015-07-31 00:00:00.000'})), но это как раз и есть запрос от начала времен. На таблице CustTable есть стандартный метод для подсчета сальдо по клиенту на дату balanceCurPerDate, но он опять таки считает <= _transactionDate. Подскажите пожалуйста, может быть есть какая-то таблица, типа InventSum, но в которой сальдо, например, на конец года хранятся. Я не нашла (((( |
|
10.07.2015, 08:46 | #7 |
Злыдни
|
По-моему, не найдете. Оптимизационный подход к расчету сальдо, если не брать проводки со старта системы, посчитать текущее по открытым и сложить/вычесть проводки до даты расчета сальдо, либо, на мой взгляд наиболее предпочтительный вариант на больших БД, создать куб по проводкам клиентов, поставщиков и персонала, а из него очень быстро получать сальдо на любую дату.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
10.07.2015, 09:36 | #8 |
Участник
|
Тут есть нюанс с т.з. учета: чисто технически сальдо - сумма дебетовых и кредитовых проводок до определенной даты, но с т.з. учета открытое дебетовое и открытое кредитовое сальдо нельзя просто взять и "схлопнуть", потому что если мы должны клиенту по предоплате за заказ1 100 р., а клиент нам должен за уже отгруженный заказ2 100 р., то ни наш, ни его долг никуда не девается и "по умолчанию" не взаимозачитывается. Это в том числе может быть связано с условиями оплаты: заказ2 клиент может быть вправе не оплачивать еще месяц, в то время как по заказу1 подтвержденная дата отгрузки, скажем, уже сегодня.
Таким образом, с т.з. учета сальдо на дату, во-первых, надо считать отдельно дебетовое и кредитовое, во-вторых, учитывать в его подсчете даты сопоставлений, а не только даты самих проводок. Опять же, если есть отгрузка клиенту на 100 р. на дату 30.06.15 и оплата 100 р. на дату 30.06.15, а сопоставлены они по каким-то причинам датой 01.07.15 (скажем, фин. период закрыт по 30.06.15), то на 30.06.15 мы имеем ненулевое кредитовое и ненулевое дебетовое сальдо по клиенту, хотя обыденная логика подсказывает нам, что на 30.06.15 сальдо уже было нулевым. |
|
|
|