Показать сообщение отдельно
  #4  
Старый 23.08.2006, 12:15
apanko apanko вне форума
Администратор
 
Регистрация: 15.08.2006
Сообщения: 1,629
Печать счета фактуры

Из счета попытался распечатать счет-фактуру (отчет 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, 23.08.2006 в 12:18.
Ответить с цитированием