Всем привет!
Вот столкнулся со следующей проблемой:
Не могу получить правильный остаток с учетом движений документа.
Собственно проблема связана с тем, что в системе есть несколько документов с одинаковым временем.
В результате ни
MDW = СоздатьОбъект("MetaDataWork");
...
РазобратьПозициюДокумента(Док.ПолучитьПозицию(),ДД,ЧЧ,ММ,СС);
ПозОст = MDW.ПолучитьДатуВремяИдДок(СформироватьПозициюДокумента(ДД,ЧЧ,ММ,СС,1));
...
ТекстЗапроса = "
|SELECT
| РегТМЦ.ТМЦ as [ТМЦ $Справочник.Номенклатура],
| РегТМЦ.Склад as [Склад $Справочник.Склады],
| РегТМЦ.Партия as [Партия $Документ],
| РегТМЦ.КоличествоОстаток as Количество,
| РегТМЦ.СуммаМатОстаток as СуммаМат,
| РегТМЦ.СуммаЗПОстаток as СуммаЗП,
| РегТМЦ.СуммаНепрямОстаток as СуммаНепрям,
| РегТМЦ.СуммаАмортОстаток as СуммаАморт
|FROM
| $РегистрОстатки.ТМЦ(:ПозОст,,,
| (ТМЦ,Склад,Партия),(Количество,СуммаМат,СуммаЗП,СуммаНепрям,СуммаАморт)) as РегТМЦ
|";
а тем более
...
ПозОст = );
...
не помогает.
Второй метод определения позиции документа, как по мне, вообще нельзя использовать в прямых запросах.
Вот результат использования :
Док.ПолучитьПозицию() = "#20080801 863990000 378762CEN"
MDW.ПолучитьДатуВремяИдДок(Док.ПолучитьПозицию()) = "20080801EAEAY8"
....
СформироватьПозициюДокумента(Док.ПолучитьПозицию(),1) = "#20080801 863990000 378762CEN¹"
) = "20080801EAEAY8"
Как видим позиция документа, которая передается в запрос - одна и та же.
Первый же метод формирует позицию смещенную относительно первой на 10
-4 с, но он при этом в расчет остатка попадут те документы, которые имеют одинаковое время с нужным нам документом
.
Кроме этого заметил, что все документы расположены на оси времени с точностью до секунды, когда есть возможность располагать их с точностью до 10
-4 с .
Анализируя данную проблему пришел к выводам:
[1] Необходимо каким-то образом разносить документы во времени (В моем случае только можно делать один раз, когда закрывается период, так как редактируются документы задним числом).
[2] При записи нового документа каким-то образом проставлять время с точностью до 10-4 с. Тогда считаю, что вероятность того, что будут в системе документы с одинаковым временем - резко снизится.
[3] Возможно стандартными методами получать позицию следующего документа и передавать ее в запрос. Но как по мне, если можно получать остатки на начало с помощью прямого запроса, то почему бы его не использовать для получения остатков и на конец расчетного периода.
[4] Использование модификатора возможно только в случае, когда передаваемая позиция дата, а не конкретная позиция документа.
Хотелось бы услышать мнения, комментарии, а возможно и решения к описанной проблеме.