13.12.2005, 13:06 | #1 |
Участник
|
При учете Заказа на покупку в 90м кодюните при коммите:
Код: IF NOT InvtPickPutaway THEN COMMIT; Транзакция не может быть завершена, так как это нарушит целостность таблицы Фин.Книга Операций. И говорит что ошибка изза использования функции CONSISTENT. Явно вызов этой функции не нашла, может подскажет кто-то где "корень зла"? |
|
13.12.2005, 13:21 | #2 |
Участник
|
12 юнит. Можно поискать по слову CONSISTENT. Ошибка возникает когда создаваемые в фин. книге проводки по одному номеру документа за одну дату не балансируют между собой. Где-то что-то криво создается.
|
|
13.12.2005, 15:05 | #3 |
Участник
|
А какая у вас версия Nav? Случаем не 3.70 А?
|
|
13.12.2005, 16:51 | #4 |
Участник
|
Цитата:
гдето нарушается баланс (BalanceCheckAmount, BalanceCheckAmount2) сейчас сижу в дебаге и копаюсь почему она самая |
|
13.12.2005, 17:07 | #5 |
Участник
|
Возможно надо анализировать сдесь
cu 5802 ф-я PostInvtPostBuf Post := TRUE; IF NOT PostPerPostGrp THEN Post := PostEntry(GlobalInvtPostBuf); IF Post THEN GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); Обычно CONSISTENT вываливается если покакимто причинам ф-я PostEntry вернула FALSE и соответственно не запустился учет проводки GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); Удачи с дебагером!!! |
|
13.12.2005, 17:23 | #6 |
Участник
|
Была у нас такая фиговина.
Выдавала такую же ругань при запуске Коррекция Курс. Разниц. Корень крылся в создании системой неких левых строк в Value Entry в процессе работы. Сначала был сделан отчет убивающий эти строки. Позже поставили 3,70 В, проблема ушла. |
|
13.12.2005, 17:38 | #7 |
Участник
|
Константин! , кодюнит 5802 не вызывается в данном случаи. Идет вызов кодюнита 12 (учет проводки) из 90го.
|
|
13.12.2005, 17:50 | #8 |
Участник
|
Цитата:
Проблема может заключаться в том, что несоздается балансирующая проводка в GLEntry, при которой эти переменные и будут сброшены в 0 |
|
13.12.2005, 18:15 | #9 |
Участник
|
После
GLEntry.CONSISTENT( (BalanceCheckAmount = 0) AND (BalanceCheckAmount2 = 0) AND (BalanceCheckAddCurrAmount = 0) AND (BalanceCheckAddCurrAmount2 = 0)); в 12 кодеюните вставьте строчку form.run(0, GLEntryTmp) и смотрите проводки. либо в 90 кодеюните перед учетом смотрите последний номер операции в 17 таблице и перед коммитом примерно такой код: gle.sefilter('%1..', LastGLEEntryNo); form.run(0, gle) PS. gle - record17 |
|
13.12.2005, 18:44 | #10 |
Участник
|
Цитата:
выявила что фин. книга операций создается только одна проводка по 63100 кредит. счету вторая дебиторская не создается |
|
13.12.2005, 19:44 | #11 |
Участник
|
Танюха! народ может не знать что такое 63100 счет!
А вообще молодец, что разобралась. |
|
14.12.2005, 10:49 | #12 |
Участник
|
|
|
14.12.2005, 10:57 | #13 |
Участник
|
TanyaV - копайте фунции FillInvPostingBuffer и UpdInvPostingBuffer, а также код формирования балансирующих проводок по строкам заказа продажи на основе InvPostingBuffer (поищите IF InvPostingBuffer[1].FIND('+') THEN ) в 90 кодеюните.
Удачи! |
|
14.12.2005, 18:03 | #14 |
Участник
|
Цитата:
именно изза не заполнения InvPostingBuffer (не вызывался FillInvPostingBuffer) все неработало как надо! спасибо! |
|