Всем привет.
Что-то произошло, с базой, перестали работать отчеты на классе ПрямойЗапрос, где используются ВТ, в частности в $БИОстатки.
База файловая. Бух итоги пересчитывал, файлы с рассчитанными итогами удалял, результата 0.
Есть отчет по планированию закупки, перестал выводить кусок с остатками, я начал проверять где затык.
В итоге в тестовом примере запрос ниже работает
ВЫБРАТЬ
|
| БухИт.Субконто1 КАК ТоварБИ,
| СУММА(БухИт.КоличествоОстаток) КАК КоличествоОстаток
|
| ИЗ
|
| $БИОстатки.Основной(:ГраницаКонтроля~,#СзСчетов41_1,(Субконто1),(Количество), (Субконто2 = :ВыбСклад)
| ,) КАК БухИт
| СГРУППИРОВАТЬ БухИт.Субконто1
разбор
SELECT
БухИт.Субконто1 AS ТоварБИ,
SUM(БухИт.КоличествоОстаток) AS КоличествоОстаток
FROM
(
SELECT
Счет
,Валюта
,Субконто1,Субконто1_вид
,SUM(КоличествоОстаток) КоличествоОстаток
,CASE WHEN SUM(КоличествоОстаток) > 0 THEN SUM(КоличествоОстаток) ELSE 0 END КоличествоОстатокДт
,CASE WHEN SUM(КоличествоОстаток) < 0 THEN -SUM(КоличествоОстаток) ELSE 0 END КоличествоОстатокКт
FROM (
SELECT
bkttl_vt.ACCID AS Счет
,bkttl_vt.CURRID AS Валюта
,bkttl_vt.SC0 Субконто1
,bkttl_vt.VSC0 Субконто1_вид
,CASE WHEN bkttl_vt.KIND = '3' THEN bkttl_vt.SD+bkttl_vt.OBDT1 - bkttl_vt.OBKT1 + bkttl_vt.OBDT2 - bkttl_vt.OBKT2 + bkttl_vt.OBDT3 - bkttl_vt.OBKT3 ELSE 0 END AS КоличествоОстаток
FROM
__1S_BKTTL bkttl_vt
INNER JOIN vt_СзСчетов41_1 accfilter
ON bkttl_vt.ACCID = accfilter.val
WHERE (bkttl_vt.DATE = '20140401')
AND (bkttl_vt.KIND = '3')
AND (bkttl_vt.SC1 = ' 3 ')
) AS accountingbalance
GROUP BY
Счет,Валюта
,Субконто1,Субконто1_вид
HAVING (SUM(КоличествоОстаток) <> 0)
) AS БухИт
GROUP BY БухИт.Субконто1
как только вставляю кусок по выборке из справочника номенклатуры с левым соеденением, остатки пустые
| ВЫБРАТЬ
|
| $СпрНоменклатура.ТекущийЭлемент КАК Товар,
| ТаблицаБИ.КоличествоОстаток КАК КоличествоОстаток
|
| ИЗ Справочник.Номенклатура КАК СпрНоменклатура $nolock
|
| ЛЕВОЕ СОЕДИНЕНИЕ
|
| (
| ВЫБРАТЬ
|
| БухИт.Субконто1 КАК ТоварБИ,
| СУММА(БухИт.КоличествоОстаток) КАК КоличествоОстаток
|
| ИЗ
|
| $БИОстатки.Основной(:ГраницаКонтроля~,#СзСчетов41_1,(Субконто1),(Количество), (Субконто2 = :ВыбСклад)
| ,) КАК БухИт
| СГРУППИРОВАТЬ БухИт.Субконто1
|) КАК ТаблицаБИ
| ПО ТаблицаБИ.ТоварБИ = $СпрНоменклатура.ТекущийЭлемент
|";
разбор
SELECT
СпрНоменклатура.ID AS Товар,
ТаблицаБИ.КоличествоОстаток AS КоличествоОстаток
FROM [Справочник.Номенклатура] AS СпрНоменклатура
LEFT JOIN
(
SELECT
БухИт.Субконто1 AS ТоварБИ,
SUM(БухИт.КоличествоОстаток) AS КоличествоОстаток
FROM
(
SELECT
Счет
,Валюта
,Субконто1,Субконто1_вид
,SUM(КоличествоОстаток) КоличествоОстаток
,CASE WHEN SUM(КоличествоОстаток) > 0 THEN SUM(КоличествоОстаток) ELSE 0 END КоличествоОстатокДт
,CASE WHEN SUM(КоличествоОстаток) < 0 THEN -SUM(КоличествоОстаток) ELSE 0 END КоличествоОстатокКт
FROM (
SELECT
bkttl_vt.ACCID AS Счет
,bkttl_vt.CURRID AS Валюта
,bkttl_vt.SC0 Субконто1
,bkttl_vt.VSC0 Субконто1_вид
,CASE WHEN bkttl_vt.KIND = '3' THEN bkttl_vt.SD+bkttl_vt.OBDT1 - bkttl_vt.OBKT1 + bkttl_vt.OBDT2 - bkttl_vt.OBKT2 + bkttl_vt.OBDT3 - bkttl_vt.OBKT3 ELSE 0 END AS КоличествоОстаток
FROM
__1S_BKTTL bkttl_vt
INNER JOIN vt_СзСчетов41_1 accfilter
ON bkttl_vt.ACCID = accfilter.val
WHERE (bkttl_vt.DATE = '20140401')
AND (bkttl_vt.KIND = '3')
AND (bkttl_vt.SC1 = ' 3 ')
) AS accountingbalance
GROUP BY
Счет,Валюта
,Субконто1,Субконто1_вид
HAVING (SUM(КоличествоОстаток) <> 0)
) AS БухИт
GROUP BY БухИт.Субконто1
) AS ТаблицаБИ
ON ТаблицаБИ.ТоварБИ = СпрНоменклатура.ID
В чем может быть проблема подскажите.