Есть запрос:
итзОстаткиНоменклатуры = СоздатьОбъект("ИндексированнаяТаблица");
итзПараметр = СоздатьОбъект("ИндексированнаяТаблица");
НаборЗаписей = СоздатьОбъект("ODBCRecordset");
НаборЗаписей.РежимRPC(1);
текстЗапроса = "
|WITH Номенклатура_Иерархия(ID,Code,Descr,ParentID,IsFolder,SP85,SP94,SP42815,Level) as (
|SELECT
| СпрНоменкл.ID,
| СпрНоменкл.Code,
| СпрНоменкл.Descr,
| СпрНоменкл.ParentID,
| СпрНоменкл.IsFolder,
| СпрНоменкл.SP85,
| СпрНоменкл.SP94,
| СпрНоменкл.SP42815,
| 1
|FROM
| $Справочник.Номенклатура СпрНоменкл
|WHERE
| СпрНоменкл.ParentID = $ПустойИД
|UNION ALL
|SELECT
| СпрН.ID,
| СпрН.Code,
| СпрН.Descr,
| СпрН.ParentID,
| СпрН.IsFolder,
| СпрН.SP85,
| СпрН.SP94,
| СпрН.SP42815,
| Level + 1
|FROM
| $Справочник.Номенклатура СпрН
|INNER JOIN
| Номенклатура_Иерархия СпрНИ ON СпрН.ParentID = СпрНИ.ID
|)
|
|SELECT
| СпрНом.ID [Номенклатура $Справочник.Номенклатура],
| RTRIM(CAST(CAST(СпрНом.Code as INT) as CHAR)) Код,
| RTRIM(СпрНом.Descr) Наименование,
| СпрНом.ParentID ИдГруппы,
| RTRIM(CAST(CAST(СпрНомГр.Code as INT) as CHAR)) КодРодителя,
| СпрНом.IsFolder Группа,
| RTRIM(СпрНом.SP85) Артикул,
| RTRIM(СпрЕд.SP80) Штрихкод,
| RTRIM(CAST(СпрЦенник.CODE as CHAR)) КодЦенника,
| Level Уровень,
| РегОстатки.КоличествоОстаток Остаток
|FROM
| $РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,Фирма = :ВыбФирма AND Склад = :ВыбСклад,Номенклатура,Количество) as РегОстатки
|LEFT JOIN
| Номенклатура_Иерархия СпрНом ON СпрНом.ID = РегОстатки.Номенклатура
|LEFT JOIN
| $Справочник.Единицы СпрЕд ON СпрЕд.ID = СпрНом.SP94
|LEFT JOIN
| $Справочник.Номенклатура СпрНомГр ON СпрНомГр.ID = СпрНом.ParentID
|LEFT JOIN
| $Справочник.сфЦенники СпрЦенник ON СпрЦенник.ID = СпрНом.SP42815
|
|";
В середине месяца все работает, но в начале месяца при открытии периода он просто виснет и не работает.
Кто нибудь объясните причину.
Как только делаю обновление статистики и реиндексацию, все снова работает.
Может как то оптимизировать запрос??