|
![]() |
#1 |
Member
|
Вероятно, эта настройка должна использоваться только для журналов, в которых регистрируются операции со счетами ГК. В журналах с такой настройкой не должно быть аналитических счетов (Клиенты, Поставщики, Банковские счета, и т.п.). Это IMHO.
Что касается транзитного счета для взаимозачетов и подобного рода операций... С двумя ваучерами сложно будет делать выверку. Если два клиента находятся в рамках одного ваучера (по сути: ваучер = некая операция), понять что за операция можно. Если сделать через два ваучера и транзитный счет, то связь в БД между половинками операций не сохранится, а поиск пользователем таких операций будет затруднен. IMHO, здесь имеет место быть некий идеологический изъян в архитектуре Аксапты. По идее, ваучер лучше бы на такую операцию иметь один. А вот связь между аналитическими и синтетическими операцями можно было бы понадежнее заложить. Но это из серии: "Если бы да кабы...".
__________________
С уважением, glibs® |
|
![]() |
#2 |
Administrator
|
Цитата:
То что связка идет по ваучеру+дата между аналитическими и синтетическими операциями - да идет... но в общем-то никто не обещал связь один в один. Мне больше кажется - что при проектировании архитектуры просто не было задачи однозначно связывать Cust(Vend)Trans и LedgerTrans. Цитата:
Фактически, ведь связь между парами проводок есть - только эта связь "зарыта" в скромном поле "Пакет корреспонденции" (LedgerTrans.BondBatch_RU) и построить быстрый и красивый отчет по корреспондирующей части по данным из Cust(Vend)Trans сложно. Что делать... Аксапта проектировалась без учета требований РСБУ ![]()
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#3 |
Member
|
Цитата:
Сообщение от sukhanchik
...
идеологическое следствие "натягивание" функционала "корреспонденция" на функционал "многострочная проводка" ... Все объясняется в значительно степени терминами синтетический и аналитический учет. Обычно ваучер пишется с группировкой по типу операции, тексту проводки, счету ГК и аналитике (ну дате там еще и проч.). И даже при корреспонденции нескольким аналитическим записям может соответствовать одно движение по счету ГК. Поэтому однозначной связи между синтетическими и аналитическими операциями нет. В классическом буржуйском учете для нее как раз и служит номер ваучера. Проблема в том, что в Аксапте (не русской) есть функционал (отчеты по выверке), которые нуждаются в установке связи между синтетическими и аналитическими операциями. И при некоторых стеченях обстоятельств (данная тема с этого началась) тот алгоритм, который в нее сейчас заложен, приводит к некорректным результатам.
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: sukhanchik (3). |
![]() |
#4 |
Участник
|
Вывод какой?
Разрешить обратно для наших широт. Мы разрешали. Мне кл-кл транзакции крайне нужны - на них все и живет, исторически и логически тоже. sukhanchik, у тебя в "новой" АХ как у самого сейчас? |
|
![]() |
#5 |
Участник
|
Да, разлепим пельмени обратно... Транзитный счет + два ваучера развалит наши отчеты, которые мы уже приспособили под операции клиент-клиент на одном ваучере, а стандартной выверкой пока не пользуемся.
Занятно, аналогичная проверка для операций поставщик-поставщик изменена в локализации - проверка из международной закомментирована, вместо нее написана другая: X++: ledgerJournalTrans.selectLocked(false); select count(RecId) from ledgerJournalTrans index hint NumVoucherIdx where ledgerJournalTrans.Voucher == _ledgerJournalTrans.Voucher && ledgerJournalTrans.JournalNum == _ledgerJournalTrans.JournalNum && ledgerJournalTrans.AccountType == LedgerJournalACType::Vend; if (ledgerJournalTrans.RecId > 1) { ok = checkFailed("@SYS29116"); allok = false; } } /* this code doesn't work correctly for SAD documents // // When "Vendor" type is used on any Ledger Journal Transaction it can only // exist once per "Voucher" series . // // Since a "Vendor" type can be applied to either the primary or offset side // of a transaction. This is both a qualifying factor and additional data to be // validated. Although this only applies to "Daily" (GL) based journals it // should not affect this validation. // if (_ledgerJournalTrans.AccountType == LedgerJournalACType::Vend || (_ledgerJournalTrans.OffsetAccount && _ledgerJournalTrans.OffsetAccountType == LedgerJournalACType::Vend)) { ledgerJournalTrans.selectLocked(false); select count(RecId) from ledgerJournalTrans index hint NumVoucherIdx where ledgerJournalTrans.Voucher == _ledgerJournalTrans.Voucher && ledgerJournalTrans.JournalNum == _ledgerJournalTrans.JournalNum && (ledgerJournalTrans.AccountType == LedgerJournalACType::Vend || (ledgerJournalTrans.OffsetAccount && ledgerJournalTrans.OffsetAccountType == LedgerJournalACType::Vend)); if (ledgerJournalTrans.RecId > 1) { ok = checkFailed("@SYS29116"); allok = false; } } */ Последний раз редактировалось vanokh; 02.07.2009 в 03:36. |
|
![]() |
#6 |
Administrator
|
Ну как - 2 клиента разных - пожалуйста. А вот 2 одинаковых даже - с разными профилями разноски (или договорами) - фиг.
Вообще-то сей код обитает в \Classes\LedgerJournalTransUpdateCust\checkVoucher для клиентов и \Classes\LedgerJournalTransUpdateVend\checkVoucher для поставщиков. У нас штатный (неизмененный) код в 4.0 EE SP2. Спокойно дает сделать разноску (и такие взаимозачеты у нас есть).
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#7 |
Участник
|
Цитата:
Цитата:
Сообщение от sukhanchik
![]() Ну как - 2 клиента разных - пожалуйста. А вот 2 одинаковых даже - с разными профилями разноски (или договорами) - фиг.
Вообще-то сей код обитает в \Classes\LedgerJournalTransUpdateCust\checkVoucher для клиентов и \Classes\LedgerJournalTransUpdateVend\checkVoucher для поставщиков. У нас штатный (неизмененный) код в 4.0 EE SP2. Спокойно дает сделать разноску (и такие взаимозачеты у нас есть). У нас используются и операции с одинаковым клиентом между разными договорами (многострочная). |
|
![]() |
#8 |
Модератор
|
В KB968331 немного "ослабили поводок" (для клиентов и поставщиков)
\Classes\LedgerJournalTransUpdateCust\checkVoucher X++: boolean checkVoucher(LedgerJournalTrans _ledgerJournalTrans) { boolean ok = true; LedgerJournalTrans ledgerJournalTrans; if (_ledgerJournalTrans.Invoice) { // The following rule should be applied only when the invoice number is filled in. // When "Customer" type is used on any Ledger Journal Transaction it can only // exist once per "Voucher" series . // // Since a "Customer" type can be applied to either the primary or offset side // of a transaction. This is both a qualifying factor and additional data to be // validated. Although this only applies to "Daily" (GL) based journals it // should not affect this validation. // if (_ledgerJournalTrans.AccountType == LedgerJournalACType::Cust || (_ledgerJournalTrans.OffsetAccount && _ledgerJournalTrans.OffsetAccountType == LedgerJournalACType::Cust)) { ledgerJournalTrans.selectLocked(false); select count(RecId) from ledgerJournalTrans index hint NumVoucherIdx where ledgerJournalTrans.Voucher == _ledgerJournalTrans.Voucher && ledgerJournalTrans.JournalNum == _ledgerJournalTrans.JournalNum && ledgerJournalTrans.TransactionType != LedgerTransType::Fee && (ledgerJournalTrans.AccountType == LedgerJournalACType::Cust || (ledgerJournalTrans.OffsetAccount && ledgerJournalTrans.OffsetAccountType == LedgerJournalACType::Cust)); if (ledgerJournalTrans.RecId > 1) { ok = checkFailed("@SYP809"); } } } return ok; }
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: vanokh (1). |
Теги |
ax4.0, hotfix, sp2, журнал гк |
|
|