Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста (число прочтений - 3710 )
palpetrovich
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 31
Зарегистрирован: 23. Ноября 2010
1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
02. Марта 2011 :: 12:13
Печать  
по мотивам http://www.1cpp.ru/forum/YaBB.pl?num=1291870151 нарисовал:
Изменено:
     базаДанных.Открыть(":memory:");
     Запрос = базаДанных.НовыйЗапрос();
     запрос.ВыполнитьЗапрос("PRAGMA journal_mode = OFF");    
     текст="
     |Select
     |   Рег.Товар [Товар :Справочник.Номенклатура]
     |   ,SUM(Рег.НачОст) [НачОст :Число]
     |   ,SUM(Рег.Приход) [Приход :Число]
     |   ,SUM(Рег.Расход) [Расход :Число]
     |   ,SUM(Рег.НачОст+Рег.Приход-Рег.Расход) [КонОст :Число]
     |From
     |      (
     |      SELECT
     |              Итоги.Товар Товар
     |            ,Итоги.ОстатокТовара НачОст
     |            ,0 Приход
     |            ,0 Расход
     |      FROM
     |            [РегистрИтоги.ПартииТоваров] Итоги
     |
     |      WHERE
     |            Итоги.period = @ПредПериод  
     |   UNION ALL
     |      SELECT
     |             Движения.Товар
     |            ,Движения.ОстатокТовара * (1 - Движения.debkred * 2)
     |            ,0
     |            ,0
     |      FROM
     |            [Регистр.ПартииТоваров] Движения
     |   INNER Join [Журнал] Жур ON Жур.iddoc = Движения.iddoc and Жур.date BETWEEN @НачПериод And @КонПериод
     |      UNION ALL
     |      SELECT
     |             Движения2.Товар
     |            ,0
     |            ,Движения2.ОстатокТовара * (1 - Движения2.Debkred)
     |            ,Движения2.ОстатокТовара * Движения2.Debkred
     |      FROM
     |            [Регистр.ПартииТоваров] Движения2
     |   INNER Join [Журнал] Жур2 ON Жур2.iddoc = Движения2.iddoc and Жур2.date BETWEEN @Дата1 And @Дата2
     |) Рег
     |Inner join [Справочник.Номенклатура] Номенклатура on SUBSTR(Рег.Товар,5,9) = Номенклатура.id
     | --and Номенклатура.Артикул IN ('   3UA   ')
     |Group by
     |      Рег.Товар
     |";
     НачПериод = НачМесяца(ВыбНачПериода); //начало периода
     ПредПериод = НачМесяца(НачПериод-1); //предыдущее начало периода останков    
     Запрос.Подставлять("ПредПериод",ПредПериод);
     Запрос.Подставлять("НачПериод",НачПериод);
     Запрос.Подставлять("КонПериод",ВыбНачПериода-1); //для вычисления НачОст
     Запрос.Подставлять("Дата1",ВыбНачПериода);
     Запрос.Подставлять("Дата2",ВыбКонПериода);      
     Запрос.Подготовить(текст);
     тз=Запрос.Выполнить();
     тз.ВыбратьСтроку();  


Возвращает пустую табличку. Почему?

Откровенно говоря, не понимаю смысл строки
Запрос.Подставлять("КонПериод",ВыбНачПериода-1); //для вычисления НачОст
ну что такое "Движения.debkred" тоже хотелось-бы узнать Улыбка
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #1 - 02. Марта 2011 :: 12:36
Печать  
А чего, в регистре измерение Товар - справочник неопределенного вида у тебя ?!

А так, в тексте запроса получаем начальный остаток, а конечный вычисляем как НачОст+Приход-Расход..
всё собственно.
debkred- флаг в регистре, указывающий на движение регистра - приход это или расход.
  
Наверх
 
IP записан
 
palpetrovich
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 31
Зарегистрирован: 23. Ноября 2010
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #2 - 02. Марта 2011 :: 12:45
Печать  
почему НЕоперделенного?
Рег.Товар [Товар :Справочник.Номенклатура]

За debkred - спасибо, теперь малехо понятней Подмигивание

а табличка пустая почему?
зы: движения в периоде - ЕСТЬ!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #3 - 02. Марта 2011 :: 12:47
Печать  
palpetrovich писал(а) 02. Марта 2011 :: 12:45:
почему НЕоперделенного?
Рег.Товар [Товар :Справочник.Номенклатура]


Тогда какого ты пишешь вот это ?
Код
Выбрать все
SUBSTR(Рег.Товар,5,9) = Номенклатура.id  



  
Наверх
 
IP записан
 
palpetrovich
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 31
Зарегистрирован: 23. Ноября 2010
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #4 - 02. Марта 2011 :: 12:49
Печать  
Eprst писал(а) 02. Марта 2011 :: 12:47:
Тогда какого ты пишешь вот это ?
Код
Выбрать все
SUBSTR(Рег.Товар,5,9) = Номенклатура.id  




потму-что тупой Улыбка ...копи/пасте без осмысливания
без строки
|Inner join [Справочник.Номенклатура] Номенклатура on SUBSTR(Рег.Товар,5,9) = Номенклатура.id
тоже табличка пустая

  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #5 - 02. Марта 2011 :: 12:52
Печать  
palpetrovich писал(а) 02. Марта 2011 :: 12:45:
а табличка пустая почему?


Потому, что в условии соедиенения с номенклатурой - мусор..
сделай так и наслаждайся:
on Рег.Товар = Номенклатура.id
  
Наверх
 
IP записан
 
palpetrovich
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 31
Зарегистрирован: 23. Ноября 2010
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #6 - 02. Марта 2011 :: 12:56
Печать  
Eprst писал(а) 02. Марта 2011 :: 12:52:
Потому, что в условии соедиенения с номенклатурой - мусор..
сделай так и наслаждайся:
on Рег.Товар = Номенклатура.id


че-т не получается понаслаждаться...
сделал:
|Inner join [Справочник.Номенклатура] Номенклатура on Рег.Товар = Номенклатура.id

  
Наверх
 
IP записан
 
palpetrovich
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 31
Зарегистрирован: 23. Ноября 2010
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #7 - 02. Марта 2011 :: 12:58
Печать  
может важно, не знаю:
Первое измерение Фирма, может и по нему запрос нужен?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #8 - 02. Марта 2011 :: 13:09
Печать  
palpetrovich писал(а) 02. Марта 2011 :: 12:56:
че-т не получается понаслаждаться...



Еще бы.. для параметезированного запроса нужно делать
УстановитьПараметр а не Подставлять

(либо замени @ на :  и не выеживайся)
Улыбка
  
Наверх
 
IP записан
 
palpetrovich
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 31
Зарегистрирован: 23. Ноября 2010
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #9 - 02. Марта 2011 :: 13:22
Печать  
Eprst - Спасибо!
Заработало. А в чем отличия (преимущества/недостатки) параметезированного запроса
сорьки за ламерство, просто учусь этому время от времени, когда время свободное выпадает
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #10 - 02. Марта 2011 :: 13:24
Печать  
если нужно один и тот же текст запроса выполнять несколько раз, но с разными параметрами запроса, то делают параметезированный запрос.
Текст запроса подготавливают 1 раз, потом многократно его выполняют, меняя только параметры запроса..
у тебя всё что с @ - параметры запроса..


ЗЫ: более подробно - в доке по 1sqlite от Орефкова..
  

doc.chm ( 50 KB | Загрузки )
Наверх
 
IP записан
 
palpetrovich
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 31
Зарегистрирован: 23. Ноября 2010
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #11 - 02. Марта 2011 :: 13:55
Печать  
Спасибо!
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #12 - 02. Марта 2011 :: 16:32
Печать  
Переходи на класс "ПрямойЗапрос". По крайней мере мне кажется параметризированные запросы у меня получились немного "удобнее"... Улыбка (скромно да???)  Очень довольный
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #13 - 02. Марта 2011 :: 16:40
Печать  
vandalsvq писал(а) 02. Марта 2011 :: 16:32:
Переходи на класс "ПрямойЗапрос". По крайней мере мне кажется параметризированные запросы у меня получились немного "удобнее"... Улыбка (скромно да???)  Очень довольный


не.. тут просто автор не разобравшись, лепит @ почём зря..
Улыбка
А так, лучше уж "руками" пописать запросы, для начала, имхо, уж  потом на ВТ глядеть.


  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite. Движения по регистру партий. Помогите разобраться пожалуйста
Ответ #14 - 02. Марта 2011 :: 16:57
Печать  
Ну не совсем я ВТ имел в виду, скорее то как параметризированные запросы реализовал. Понятно что в итоге это лишь надстройка, но вдруг неподготовленному человеку проще будет понять
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать