27.11.2003, 13:05 | #1 |
Участник
|
Ситуация примерно такая. Бухгалтер формирует операцию оплаты, в случае кредиты при этом должно сформироваться еще две проводки, на основе первой. Итого: 3. Я без проблем формирую все эти проводки, но может возникнуть такая ситуация, что некое ЧП помешало завершиться процедуре до конца. Скажем, прошло две проводки, и осталась еще одна. Для обеспечения корректности операции необходимо провести откат транзакции. Как это делается в Аттейне?
Есть еще такой вопрос: есть ли возможность получить текущую строку в фин. журнале (на которой усановлен курсор)? Заранее благодарен. |
|
27.11.2003, 13:42 | #2 |
Участник
|
насчет ЧП и отката.
Прежде всего стоит вернуться к терминологии. Аттейн не может разнести часть проводки. Проводка либо целиком разносится, либо целиком не разносится. Операция - набор проводок. Операция может разнестись частично - некоторые проводки разнеслись, некоторые нет. Это свойство операций и проводок. Вы сказали, что форумируете операцию. Операция может состоять из нескольких проводок или... из одной многострочной. Таким образом, если вы форумируете несколько однострочных проводок, то Аттейн может часть проводок НЕ разнести. А если вы формируете многострочную проводку, то она разнесется полностью в транзакции. Поэтому у буржуев не возникает задачи отката - они делают многострочную проводку, если хотят, чтобы все строчки были обязательно разнесены. |
|
27.11.2003, 14:06 | #3 |
Участник
|
Можно еще уточнить.
Я формирую проводки так: вставляю в фин. журнал строку и учитываю ее. Затем следующую и учитываю. А каким образом можно формировать многострочную проводку? |
|
27.11.2003, 14:10 | #4 |
Участник
|
не указывать балансирующи счет.
начать новую строку. Номер документа у строк будет совпадать до тех пор, пока баланс не станет нулевым. |
|
27.11.2003, 14:13 | #5 |
Участник
|
т.е. вставить несколько строк, без балансирующих счетов? но он же ругаться будет, я же в фин. журнале их учитываю! наверное, есть еще способы учета проводок, только я их еще не накопал...
|
|
27.11.2003, 14:16 | #6 |
Участник
|
да, в фин.журнале.
не начнет. и даже корреспонденцию постарается сделать. если будет один дебет и несколько кредитов (или один кредит и несколько дебетов), то даже нормально сделает. Сложности с корреспонденцией начнутся, если будет несколько дебетов И несколько кредитов. |
|
27.11.2003, 14:38 | #7 |
Участник
|
INIT;
"Journal Template Name":='ÎÁÙÈÉ'; "Journal Batch Name":='ÑÒÀÍÄÀÐÒ'; "Line No.":=3500; "Document No.":='1'; "Account Type":=0; "Account No.":='7610'; "Posting Date":=TODAY; Amount:=100; Description:='ÍÄÑ Êðåäèòû'; INSERT; CODEUNIT.RUN(CODEUNIT::"Gen. Jnl.-Post Line",Rec); INIT; "Journal Template Name":='ÎÁÙÈÉ'; "Journal Batch Name":='ÑÒÀÍÄÀÐÒ'; "Line No.":=2500; "Document No.":='1'; "Posting Date":=TODAY; Amount:=100; Description:='ÍÄÑ Êðåäèòû'; "Bal. Account Type":=0; "Bal. Account No.":='5110'; INSERT; CODEUNIT.RUN(CODEUNIT::"Gen. Jnl.-Post Line",Rec); Делаю воот такую проводку. И выдается ошибка |
|
27.11.2003, 15:01 | #8 |
Участник
|
сами программировали?
|
|
27.11.2003, 15:05 | #9 |
Участник
|
да, сам
|
|
27.11.2003, 15:28 | #10 |
Участник
|
не. что то здесь не так.
но сказать что именно - пока квалификации не хватает. Стандартный Навижин нормально работает без балансирующих счетов. |
|
27.11.2003, 15:31 | #11 |
Участник
|
ага, понятно, спасибо, буду дальше копать, я еще с этой ошибкой не сильно копался, сейчас главное основную часть кода завершить...
|
|
04.02.2004, 14:33 | #12 |
Участник
|
В коде надо использовать тригеры.
В частности, VALIDATE(Amount,100); |
|
04.02.2004, 16:30 | #13 |
Moderator
|
В принципе неправильно учитывать отдельно каждую строку одной операции. Если посмотрите на учет стандартных документов, то увидите, что фин.операции одного документа метятся одним номером транзакции (поле Transaction No. - это внутренний сквозной номер транзакций). Соответственно лучше сначала построить все строки в фин.журнале, а потом натравить на него 12 кодеюнит или даже 13, если учитывать целиком раздел. Сделайте себе копию рабочей базы и попробуйте правильно построить многострочные проводки, потом легче будет код писать. В фин.журнале фактически всем полям нужен VALIDATE. Если используете измерения, их нужно заполнять в самую последнюю очередь. А в первую: Код Шаблона, Код Раздела, Номер Строки.
|
|
21.05.2004, 13:03 | #14 |
Участник
|
Предлагаю сначала выполнить формирование строк в журнале через форму
Финансы | Финансовые Журналы При этом - для задания счетов использовать только "Счет Но." - следить за значением, которое выводится в "Общий Баланс" - д.б. = 0 Когда "научитесь" выполнять без ошибок учет, который Вас устроит "во всех отношениях", можно переходит к коду C/AL. Сложнее будет выяснить - нужно или нет использовать оператор VALIDATE() для заполнения полей, точнее заполнение каких полей обязательно нужно сопровождать оператором VALIDATE(). Однозначный ответ для кажого поля можно получить внимательно изучив C/AL код Table 81. Общие рекомендации - заполняйте поля в том порядке, в котором они заполняются User`ом в форме - всегда используйте VALIDATE() при заполнении полей "Posting Date", "Currency Code", "Account No.", "Amount" - будьте аккуратны при формировании Dimensions - подробнее см. C/AL код. BR |
|