Андрей Панько. Заметки про Dynamics NAV (http://apanko.ru/index.php)
-   Dynamics NAV (Navision) (http://apanko.ru/forumdisplay.php?f=2)
-   -   Ошибки в Navision (http://apanko.ru/showthread.php?t=35)

apanko 15.08.2006 19:35

Ошибки в Navision
 
Попытался открыть форму 279 Аудит настройка. Получил следующее сообщение об ошибке: "Неккоректный номер страницы (10) для ярлычка с именем 'Элемент 1'. (InPage установлено 10 в TextBox 'Tax Deferrals Journal')."

Navision 4 SP2.

Проблема исправляется следующим образом:
В форме 279, элемент Tabcontrol изменить свойство PageNames с "Общее,Продажи,Покупки,Товары,Ресурсы,Работы,ОС,Пр оизводство,Сервис,Склад" на "Общее,Продажи,Покупки,Товары,Ресурсы,Работы,ОС,Пр оизводство,Сервис,Склад,Налоги"

Navision 4SP3. Ошибка исправлена.

apanko 15.08.2006 19:37

Нашел ошибку - при попытке отменить учет выхода - пишет деление 0 / 0.

Посмотрел код в процедуре CalcUnitCost(ItemLedgEntryNo : Integer) : Decimal в таблице 83.

Это код 4.0
Код:

ValueEntry.RESET;
Код:

ValueEntry.SETCURRENTKEY("Item Ledger Entry No.");
ValueEntry.SETRANGE("Item Ledger Entry No.",ItemLedgEntryNo);
ValueEntry.CALCSUMS("Invoiced Quantity","Cost Amount (Actual)");
EXIT(ValueEntry."Cost Amount (Actual)" / ValueEntry."Invoiced Quantity" * "Qty. per Unit of Measure");


А это было в 3.70
Код:

ValueEntry.RESET;
Код:

ValueEntry.SETCURRENTKEY("Item Ledger Entry No.","Expected Cost");
ValueEntry.SETRANGE("Item Ledger Entry No.",ItemLedgEntryNo);
ValueEntry.SETRANGE("Expected Cost",FALSE);
ValueEntry.CALCSUMS("Invoiced Quantity","Cost Amount (Actual)");
IF ValueEntry."Invoiced Quantity" <> 0 THEN
EXIT(ValueEntry."Cost Amount (Actual)" / ValueEntry."Invoiced Quantity" * "Qty. per Unit of Measure")
ELSE
EXIT(0);



Любопытно, зачем нужно было убирать проверку деления на 0.

Navision 4SP3. Ошибка исправлена.

apanko 16.08.2006 10:39

Предположу, что невозможность вручную создать заказ покупки для субподрядов то же является ошибкой.

Подробнее писал в теме: http://apanko.ru/showthread.php?t=31

apanko 23.08.2006 12:15

Печать счета фактуры
 
Из счета попытался распечатать счет-фактуру (отчет 12410), где был указан товар с трассировкой по серийным номерам. Не удалось.

Проявилось в следующем сообщении:
"Резервирование Операция не существует.
Идентифицирующие поля и значения:
Операция Но. = '12345',Положительна = 'Да'".

Применив дебаггер обнаружил источник проблемы в функции LineCycle - OnAfterGetRecord():

Код:


ReservExists := FALSE;
ReservEntry.RESET;
ReservEntry.SETCURRENTKEY("Source Type","Source Subtype","Source ID");
ReservEntry.SETRANGE("Source Type",37 { Sales Line});
ReservEntry.SETRANGE("Source Subtype",SalesLine1."Document Type");
ReservEntry.SETRANGE("Source ID",SalesLine1."Document No.");
ReservEntry.SETRANGE("Source Ref. No.",SalesLine1."Line No.");
IF ReservEntry.COUNT = 1 THEN BEGIN
  ReservEntry.FIND('-');
  ReservEntry2.GET(ReservEntry."Entry No.",TRUE);
  ItemLedgEntry.GET(ReservEntry2."Source Ref. No.");
  LineCountry := Country.GetLocalName(ItemLedgEntry."Country of Origin Code");
END ELSE BEGIN
  ReservExists := TRUE;
  LineCountry := '';
END;


Немного модифицировал, применив конструкцию IF THEN

Код:


ReservExists := FALSE;
ReservEntry.RESET;
ReservEntry.SETCURRENTKEY("Source Type","Source Subtype","Source ID");
ReservEntry.SETRANGE("Source Type",37 { Sales Line});
ReservEntry.SETRANGE("Source Subtype",SalesLine1."Document Type");
ReservEntry.SETRANGE("Source ID",SalesLine1."Document No.");
ReservEntry.SETRANGE("Source Ref. No.",SalesLine1."Line No.");
IF ReservEntry.COUNT = 1 THEN BEGIN
  ReservEntry.FIND('-');
  IF ReservEntry2.GET(ReservEntry."Entry No.",TRUE) THEN BEGIN
  ItemLedgEntry.GET(ReservEntry2."Source Ref. No.");
  LineCountry := Country.GetLocalName(ItemLedgEntry."Country of Origin Code");
END ELSE
  LineCountry := '';
END ELSE BEGIN
  ReservExists := TRUE;
  LineCountry := '';
END;


Ошибка появляется и в 3.70 и в 4SP2. Исправления аналогичны.

apanko 21.09.2006 11:24

Прямые поставки
 
В заказе на отгрузку невозможно заполнить поле "Purchasing Code", система выдает сообщение:
"Формула даты 0D должна включать временной период.
Временной период может быть: Д,ДН,Н,М,К или Г.
С, означающее текущий период, может быть определено как префикс для временного периода."

Проблема в следующем кусочке кода в таблице 37 Продажи Строки.

Код:

Purchasing Code - OnValidate()
  TestStatusOpen;
  TESTFIELD(Type,Type::Товар);
  CheckAssocPurchOrder(FIELDCAPTION(Type));
 
  IF PurchasingCode.GET("Purchasing Code") THEN BEGIN
    "Drop Shipment" := PurchasingCode."Drop Shipment";
    "Special Order" := PurchasingCode."Special Order";
    IF "Drop Shipment" OR "Special Order" THEN BEGIN
      Reserve := Reserve::Нельзя;
      VALIDATE(Quantity,Quantity);
      IF "Drop Shipment" THEN BEGIN
  EVALUATE("Outbound Whse. Handling Time",'0D');
  EVALUATE("Shipping Time",'0D');
...


Заключается ошибка в том, что 0D по-русски выглядит как 0Д. Решений у проблемы есть два:
1. При вводе значения в поле "Purchasing Code", переключаться на ангийский язык.
2. заменить выделенные строки на:
Код:

      EVALUATE("Outbound Whse. Handling Time",Format(0D));
      EVALUATE("Shipping Time",Format(0D));

3. Дополнение. Заменить выделенные строки на:
Код:

      EVALUATE("Outbound Whse. Handling Time",'<0D>');
      EVALUATE("Shipping Time",'<0D>');


Примечания:
1. С нескладируемыми товарами проблема не возникает.
2. В версии 3.70 использовался несколько другой код.

__________________
Дополнение
То же, но уже в таблице 39, триггер onValidate к полю "Purchasing Code". Симптомы и методы лечения совпадают.

apanko 21.09.2006 15:55

Товар Настройка
 
В версии 4SP2 из формы к вышеуказанной таблице исчезло поле "Проверять дату применения". Я бы решил, что так оно и надо, если бы в этой форме дважды не появилось поле Копировать Комментарии в Тов.

Navision 4SP3. Ошибка исправлена.

apanko 09.10.2006 19:15

Трассировка по серийным номерам
 
В учтенных актах оприходования и учтенных актах списания не работают кнопки «Строки / Трассировка Товара».

Описание ситуации:
База Cronus 4SP2.
Товар 80102-T
Создаем и учитываем акт оприходования (количество 5, серийные номера с 200001 по 200005)
Создаем и учитываем акт списания (количество 3, серийные номера с 200001 по 200003)

Предварительный диагноз – нет соответствующих записей в таблице 6508.

Справедливо только для 3.70, в 4SP2 данная функциональность работает корректно.

Плюс любопытный нюанс. Если в карточке товара указать код трассировки СВОБОПЕР (с пустыми галочками на всех закладках), то при учете заказа покупки (продажи) данного товара в учтенном счете покупки (продажи) можно нажать кнопку «Строки / Трассировка Товара». Окно «Учт. товар трассировка строки» откроется, а вот из учтенных накладных этого сделать нельзя, т.е. окно не открывается. Причина такого поведения в том, что при учете счетов создаются строки в таблице 6508, а при учете накладных в таблице 6507 никакие записи не добавляются.

Справедливо для обеих версий.

apanko 01.12.2006 18:50

Специальные покупки/продажи
 
Парой сообщений выше сообщал об ошибках связанных с прямыми поставками. Теперь добавлю про недочет со специальными продажами.

Недочет заключается в том, что заказ продажи можно учесть до того, как будет учтен заказ покупки. А вот заказ покупки после этого учесть уже нельзя. Хуже того, его нельзя даже удалить.

Частично проблему можно решить, запретив отрицательные остатки.
Предположу, что при учете заказа продажи (специальные заказы), можно вставить такую же проверку, как и при учете заказа продажи (прямые поставки). Благо кодеюнит один и тот же, только добавить условие.

Относится к 4SP2. Третий сервис пак пока никак не получу.

Navision 4SP3. Ошибка исправлена.

Зато найдена новая.
1. В заказе продажи несколько строк и одна из них - специальная продажа.
2. Создаем заказ на покупку (на вторую строку), но не учитываем.
3. Учитываем заказ продажи (точнее только строку со специальной продажей).
4. Учитываем заказ покупки (при этом он исчезает).
5. удаляем строку по которой не было отгрузок из заказа продажи (обычная продажа).
Итого у нас остается заказ продажи со специальной продажей, по которой товар получен (учтен заказ покупки) и продан (учтен заказ продажи), но который нельзя удалить.

apanko 27.12.2006 12:11

В связи с получение SP3, фиксирую исправленные ошибки.

apanko 08.04.2008 12:46

Копошился с сериями номеров в продажах. Узнал следующее:

Если в таблице Продажи и Клиенты Настройка (311 Sales & Receivables Setup) указать одинаковые серии номеров для Учтенных счетов продажи и Учтенных расходных накладных, то можно вызвать ошибку:
Цитата:


Транзакция не может быть завершена, так как это нарушит целостность таблицы Фин. Книга Операций.
Проверьте, где и как используется функция CONSISTENT в этой транзакции, чтобы найти причину ошибки.
Обратитесь к вашему менеджеру системы, если вам нужна помощь.
Программа помечает таблицы как нецелостные в процессе выполнения очень сложных задач, таких как учет. Это препятствует сохранению некорректных данных.


Чтобы создать ситуацию нужно:
  1. Создать заказ продажи из двух строк.
  2. Учесть отгрузку по первой строке.
  3. При попытке учесть счет по первой строке будет получена указанная ошибка.
Если использовать опцию учета "Отгрузить и учесть счет" ошибка не возникает.


Глубинные причины и соответственно рецепт лечения не искал.

apanko 23.07.2008 11:34

Теперь ошибки будут помещаться на antibug.nav4u.ru

Любой желающий может принять участие.
Как и почему можно узнать в статье Antibug.

Antibug-команда к работе готова.


Часовой пояс GMT +4, время: 19:07.

vBulletin v3.5.4, Copyright ©2000-2020, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co
Права на все материалы, опубликованные на блогофоруме принадлежат Андрею Панько, если в самом материале не указано иное.