В выше описанном запросе возникла необходимость реализовать следующую функцию
|ОстТ = Регистр.ОстаткиТоваров.ОстатокТовара;
|Док = Регистр.ОстаткиТоваров.ТекущийДокумент;
|Функция РасходТовара = Расход(ОстТ)
|Когда
|(
| (Док.Вид()=ВидЧек) Или
| (Док.Вид()=ВидРасходная) Или
| (Док.Вид()=ВидРозничная) Или
| ( (Док.Вид()=ВидПеремещение) И
| ( (СокрЛП(Константа.ПрефиксНомеровДокументовУпрУчета) = ЦИБ)ИЛИ
| (СокрЛП(Константа.ПрефиксНомеровДокументовУпрУчета) = ПБС)
| ) И
| (Лев(Док.НомерДок,4) = ЦИБ)
| )
|);
Конктерно меня интересует выделенный кусок кода
ПБС и ЦИБ переменные которые соответственно = "ЦИБ-" и "ПБС-"
Текст текущего запроса 1С++:
SELECT
VT.Фирма as [Фирма $Справочник.Фирмы],
VT.Товар as [Товар $Справочник.Номенклатура],
VT.Склад as [Склад $Справочник.МестаХранения],
$ПоследнееЗначение.Номенклатура.СтавкаНДС(VT.Товар, :ДатаКонца) as [Ставка $Перечисление.ЗначенияНДС],
VT.ДокДвиж as [ДокДвиж $Документ],
MAX(VT.ДокДвиж_вид) as ДокДвиж_вид,
Sum(VT.ОстатокТовараРасход) as ОстатокТовараРасход,
Sum(VT.ОстатокТовараКонечныйОстаток) as ОстатокТовараКонечныйОстаток
FROM ( SELECT
$РегИтоги.Фирма as Фирма,
$РегИтоги.Товар as Товар,
$РегИтоги.Склад as Склад,
'' as ДокДвиж,
'' as ДокДвиж_вид,
0 as ОстатокТовараРасход,
$РегИтоги.ОстатокТовара as ОстатокТовараКонечныйОстаток
FROM
$RegisterTotals.ОстаткиТоваров as РегИтоги (nolock)
WHERE
РегИтоги.PERIOD = :ДатаПериодаОстатков~~
AND (1=0
OR $РегИтоги.ОстатокТовара<>0)
UNION ALL
SELECT
$РегДвиж.Фирма,
$РегДвиж.Товар,
$РегДвиж.Склад,
РегДвиж.IDDoc as ДокДвиж,
J.IDDocDef as ДокДвиж_вид,
0,
$РегДвиж.ОстатокТовара*(1-регДвиж.DEBKRED*2)
FROM
$Register.ОстаткиТоваров as РегДвиж (nolock)
INNER
JOIN _1SJourn as J ON РегДвиж.IDDOC=J.IDDOC
WHERE
(
(J.Date_Time_IDDoc >= :ДатаНачалаОстатков) AND (J.Date_Time_IDDoc <= :ДатаКонцаОстатков~) AND
(
(J.IDDocDef = :ВидРасходная) OR (J.IDDocDef = :ВидПриходная) OR
(J.IDDocDef = :ВидОприходования) OR (J.IDDocDef = :ВидЧек) OR
(J.IDDocDef = :ВидРозничная) OR
( (J.IDDocDef = :ВидПеремещение)
)
)
)
UNION ALL SELECT
$РегПрихРасх.Фирма as Фирма,
$РегПрихРасх.Товар as Товар,
$РегПрихРасх.Склад as Склад,
РегПрихРасх.IDDoc as ДокДвиж,
J.IDDocDef as ДокДвиж_вид,
РегПрихРасх.DEBKRED*$РегПрихРасх.ОстатокТовара as ОстатокТовараРасход,
0 as ОстатокТовараКонечныйОстаток
FROM
$Register.ОстаткиТоваров as РегПрихРасх (nolock)
INNER
JOIN _1SJourn as J ON РегПрихРасх.IDDOC=J.IDDOC
WHERE
(J.Date_Time_IDDoc >= :ДатаНачала) AND (J.Date_Time_IDDoc <= :ДатаКонца~)
) as VT
INNER JOIN $Справочник.Номенклатура as СпрН
ON СпрН.ID Like VT.Товар
WHERE
$ПоследнееЗначение.Номенклатура.СтавкаНДС(СпрН.ID, :ДатаКонца) like :ВыбСтавка
GROUP BY
Фирма,
Товар,
Склад,
ДокДвиж
HAVING
Sum(ОстатокТовараРасход) <> 0 or
Sum(ОстатокТовараКонечныйОстаток) <> 0