Спасибо большое, Владимир.
Используется именно сокращенная форма, без with. Никогда раньше с этим проблем не замечал, и не отказывалось работать.
Посмотрел хранимую процедуру внимательно - ничего там дополнительно не вызывается и модификаций нет.
На всякий случай вот ее код:
X++:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--
-- exec [dbo].[ExtraFieldsForAxapta]
/* exec [dbo].[ExtraFieldsForAxapta]
@Division = 'SS',
@Store = 'P16_',
@Supplier = 'RCAuto_',
@SubSupplier = '07КАУ00000_ряд01-02__',
@OrderDate = '30.10.2013',
@DeliveryDate = NULL, --'25.10.2013',
@ItemID = NULL
*/
ALTER PROCEDURE [dbo].[ExtraFieldsForAxapta] -- exec [dbo].[ExtraFieldsForAxapta]
(
@Division varchar(2) = NULL,
@Store varchar(4) = NULL,
@Supplier varchar(7) = NULL,
@SubSupplier varchar(21) = NULL,
@OrderDate datetime = NULL,
@DeliveryDate datetime = NULL,
@ItemID varchar(6) = NULL
)
AS
BEGIN
SET NOCOUNT ON ;
SET ANSI_WARNINGS OFF ;
select sup.SSTOID, sup.SUBSSTOID, sup.NAME as SupplierDescription,
it.DIV_ID, it.SITE_ID, it.ITEM_ID, it.SKU_NAME,
o.STATE,
CASE WHEN o.STATE in ('PROPOSED','ISSUED') THEN 1
WHEN o.STATE in ('MANUAL_PROPOSED','MANUAL_ISSUED') THEN 0 ELSE 0 END as Autoorder,
STOCK = ISNULL(it.STOCK, 0),
it.STOCKDATE,
EffPresStock = ISNULL(it.USEDPRESENTATIONSTOCK,0),
it.DYNAMICPRESENTATIONSTOCK,
it.PREDEFINEDPRESENTATIONSTOCK,
it.AVERAGESALES,
it.CLASSMEAN,
it.CLASSMEAN / 7.0 as ClassMean_perDay,
o.OPENORDERSQTY,
o.EFFSTOCK,
DATEDIFF(day, o.PLAN_ORD_DATE, d.AVAIL_DATE) as DaysOfCoverage_for_Ax,
DATEDIFF(day, o.PLAN_ORD_DATE, o.NEXT_AVAIL_DATE) as DaysOfCoverage_for_Ax2,
d.ACCUMDEMAND,
d.SAFETYAMOUNT,
o.PLAN_ORD_DATE, o.PLAN_DELIV_DATE, o.PLAN_AVAIL_DATE,
SafetyStock_in_days = ISNULL(d.SAFETYAMOUNT,0) / CASE WHEN (it.CLASSMEAN / 7.0) = 0 THEN 1 ELSE (it.CLASSMEAN / 7.0) END,
l.LASTUSER,
it.CLASS_INDEX,
CASE it.CLASS_INDEX WHEN 0 THEN 'USS1' WHEN 1 THEN 'USS2' WHEN 2 THEN 'SS1' WHEN 3 THEN 'SS2' WHEN 4 THEN 'FS1' WHEN 5 THEN 'FS2' ELSE '' END as CLASS_INDEX_DESC
from dbo.ORDERS o (nolock)
inner join SUPPLIER sup (nolock) ON sup.SUPPLIER_ID = o.SUPPLIER
inner join SKU it (nolock) ON it.SKU_ID = o.SKU_ID
left join DEMAND d (nolock) ON d.SKU_ID = o.SKU_ID and d.IDX = 1
inner join ORDER_TO_LIST ol (nolock) ON ol.ORDER_ID = o.ORDER_ID
inner join ORDERLST l (nolock) ON l.ORDLIST_ID = ol.LIST_ID
where o.STATE != 'CONFIRMED'
and (@Supplier is NULL or sup.SSTOID = @Supplier)
and (@SubSupplier is NULL or sup.SUBSSTOID = @SubSupplier)
and (@Division is NULL or it.DIV_ID = @Division)
and (@Store is NULL or it.SITE_ID = @Store)
and (@ItemID is NULL or it.ITEM_ID = @ItemID)
and (@OrderDate is NULL or o.PLAN_ORD_DATE = @OrderDate)
and (@DeliveryDate is NULL or o.PLAN_DELIV_DATE = @DeliveryDate)
ORDER BY it.DIV_ID, it.SITE_ID, sup.SSTOID, sup.SUBSSTOID, it.ITEM_ID, o.STATE
END
Попробую обернуть в try catch внутри ХП, и использовать полное написание with (nolock)