Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Остатки и движения по регистру на позицию документа (число прочтений - 553 )
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Остатки и движения по регистру на позицию документа
23. Июня 2019 :: 13:29
Печать  
Доброго дня.
База данных - dbf
Надо получить остатки и движения (приход и расход) по регистру за период с начала работы по позицию документа. Я запутался в условии на дату запроса. Получается каша.
Запрос примерно такой
ТекстЗапроса="
     |SELECT
     |      Рег.Элемент AS [Элемент $Справочник.Номенклатура],
     |      SUM(Рег.ОстатокТовара) AS Количество
     |FROM
     |      (SELECT
     |            $Рег_1.Товар AS Элемент,
     |            $Рег_1.ОстатокТовара AS ОстатокТовара
     |      FROM
     |            $РегистрИтоги.ОстаткиТоваров AS Рег_1
     |      WHERE
     |            (PERIOD = :ПредМесяц~~)";
     Если Склад.Выбран()=1 Тогда
           ТекстЗапроса=ТекстЗапроса+"
           |      AND ($Рег_1.Склад=:ВыбСклад)";
     КонецЕсли;                        
     ТекстЗапроса=ТекстЗапроса+"
     |      UNION ALL
     |
     |      SELECT
     |            $Рег_2.Товар AS Элемент,
     |            $Рег_2.ОстатокТовара*(1-Рег_2.debkred*2) AS ОстатокТовара
     |      FROM
     |            $Регистр.ОстаткиТоваров AS Рег_2
     |      INNER JOIN
     |            1sjourn jr ON Рег_2.iddoc = jr.iddoc
     |                  AND (jr.date BETWEEN :НачалоМесяца~~ AND :ПредДата~~)
     |                  AND ($ФлагРегистра.ОстаткиТоваров = 1)";
     Если Склад.Выбран()=1 Тогда
           ТекстЗапроса=ТекстЗапроса+"
           |            AND ($Рег_2.Склад=:ВыбСклад)";
     КонецЕсли;                        
     ТекстЗапроса=ТекстЗапроса+"
     |      ) Рег
     |GROUP BY
     |   Рег.Элемент
     |
     |ORDER BY
     |      Рег.Элемент";   
     
     //БыстрыйЗапрос.Отладка(1);   
     
     ДатаЗапроса=ТекущаяДата();
     // на точку документа
     Если внКонтекст.Выбран()>0 Тогда // документ не новый, а существующий
           Если внКонтекст.ПолучитьПозицию()<ПолучитьПозициюТА() Тогда
                 ДатаЗапроса=СформироватьПозициюДокумента(внКонтекст,-1);
           КонецЕсли;
     Иначе // документ новый
           // если документ новый, то итоги рассчитаем на конец дня документа
           Если внКонтекст.ДатаДок<ПолучитьДатуТА() Тогда
                 ДатаЗапроса=ВнКонтекст.ДатаДок;
           КонецЕсли;
     КонецЕсли

проблема в том что если документ существует и находится раньше точки ТА то происходит сравнение даты и позиции. естественно запрос ругается. Голова уже пухнет. Хелп ми плиз
1. как правильно задать условия на позицию документа?
2. как получить приход и расход товара за период от начала до этой позиции?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать