LDS писал(а) 05. Ноября 2006 :: 13:34:При проведении документа необходимо рассчитывать остатки на документ и по документ (т.е. с учетом движений, сделанных самим документом).
При расчете на документ (т.е. без учета движений. сделанных документом) делаю так:
FROM $РегистрОстатки.ОстаткиТМЦ(:ДатаОст~,….
нт.Текущийдокумент(),-1));
Но как получить остатки с учетом движений текущего документа? Подскажите пожалуйста.
во-первых:
Для получения остатков
на документ корректней в ВТ использовать саму позицию документа, т.е. СформироватьПозициюДокумента(Конт.Текущийдокумент(),
0). Как гласит документация: "Если передан период времени (дата или позиция документа), остатки рассчитываются на начало периода."
во-вторых:
Основываясь на том, что ВТ считает остатки только на начало некоего периода (а речь идет о периоде - документ) надо сделать вывод о том, что для получения остатка на конец периода (по документ), нужно посчитать остатки на начало следующего.
Поэтому устанавливаем позицию следующую за текущей: СформироватьПозициюДокумента(Конт.Текущийдокумент(),
1) и получаем остаток на конец документа.
Но имеется один подводный камень на который нарываемся при получении остатка по документ
в модуле проведения при проведении
НЕ проведенного документа у которого
нет флага "быстрой обработки движений".
Все дело в тексте ВТ:
если регистр не имеет "быстрой обработки движений", то в этом случае ВТ внутри будет иметь соединение с журналом типа:
from ra22 as ra22_vt (nolock)
inner join _1sjourn as j22_vt (nolock) on j22_vt.iddoc = ra22_vt.iddoc
а также условие по периоду типа:
where j22_vt.date_time_iddoc > '20061101' and j22_vt.date_time_iddoc < '20061106759TXC JAA9'
и условие по флажку проведенности по регистру:
and j22_vt.rf22 = 0x1
В результате мы получим некорректнй остаток на конец документа: хотя мы уже сделали движения в модуле проведения, документ все еще считается не проведенным по состоянию флага в журнале.
Итого два выхода:
- не использовать ВТ, а свои запросы (можно взять за основу текст запроса ВТ)
- для этого регистра включить быструю обработку движений