vandalsvq писал(а) 11. Ноября 2010 :: 05:58:Вообще-то остатки как и обороты при передачи в качестве значения документа считаются строго "до" этого документа (можно вкл. режим отладки и посмотреть). Так что показывай результат выполнения если "ПрямойЗапрос.РежимОтладки = 1".
2 Salimbek
Позицию документа в качестве значения параметра передать нельзя.
Прежде чем писать пост, я уже этот вариант пробовал:
ПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
ПрямойЗапрос.РежимОтладки = 1;
ПрямойЗапрос.БухгалтерскийУчет = 0;
ПрямойЗапрос.УстановитьТекстовыйПараметр("Фирма",Фирма);
ПрямойЗапрос.УстановитьТекстовыйПараметр("Склад",Склад);
ПрямойЗапрос.УстановитьТекстовыйПараметр("Номенклатура",Номенклатура);
ПрямойЗапрос.УстановитьТекстовыйПараметр("Позиция",Позиция);
глТекст = "
|SELECT
| Номенклатура AS [Товар $Справочник.Номенклатура]
|, Склад AS [Склад $Справочник.Склады]
|, КоличествоОстаток AS Остаток
|FROM
| $РегистрОстатки.ОстаткиТМЦ(
| :Позиция
| , (Фирма = :Фирма AND Номенклатура = :Номенклатура AND Склад = :Склад)
| , (Номенклатура,Склад)
| , (Количество)
| )
|";
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ПрямойЗапрос.Текст = глТекст;
ПрямойЗапрос.Выполнить().Выгрузить(ТЗ);
ТЗ.ВыбратьСтроку();
Цитата:SELECT
Номенклатура AS [Товар $Справочник.Номенклатура]
, Склад AS [Склад $Справочник.Склады]
, КоличествоОстаток AS Остаток
FROM
(
SELECT
Номенклатура
,Склад
,SUM(КоличествоОстаток) AS КоличествоОстаток
FROM
(SELECT
rg_405.Номенклатура AS Номенклатура
,rg_405.Склад AS Склад
,rg_405.Количество AS КоличествоОстаток
FROM
[РегистрИтоги.ОстаткиТМЦ] AS rg_405
WHERE
rg_405.PERIOD = '20101101'
AND
(rg_405.Фирма = ' 2 ' AND rg_405.Номенклатура = ' MA ' AND rg_405.Склад = ' 8 ')
UNION ALL
SELECT
ra_405.Номенклатура
,ra_405.Склад
,CASE WHEN ra_405.debkred = 0 THEN -ra_405.Количество ELSE ra_405.Количество END
FROM
[Журнал] AS docjourn
LEFT JOIN [Регистр.ОстаткиТМЦ] AS ra_405
ON ra_405.IDDOC = docjourn.IDDOC
WHERE (docjourn.idx_DATE_TIME_IDDOC >= '201011115KV82O DOTC ')
AND (docjourn.idx_DATE_TIME_IDDOC < '201011115KV82O DOTC ')
AND
(ra_405.Фирма = ' 2 ' AND ra_405.Номенклатура = ' MA ' AND ra_405.Склад = ' 8 ')
) AS vt_ra_405
GROUP BY
Номенклатура
,Склад
HAVING (SUM(КоличествоОстаток) <> 0)
Очень смущает запись, выделенная жирным шрифтом.
В результате вернулся остаток товара
ПОСЛЕ проведения текущего документа, а не
ДО!