Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Добавить условие ВыбТовар (число прочтений - 5581 )
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Добавить условие ВыбТовар
24. Октября 2007 :: 04:47
Печать  
В SQL я мягко говоря новичок, есть текст запроса (отчет движение товаров за период) , все работает нормально, но нужно добавить условие  по которому
Измерение2 = ВыбТовар.
Помогите пожалуйста .....

   Мета=СоздатьОбъект("MetaDataWork");
   СтрокаЗаголовка="Магазин / Товар";
   РегИтоги=Мета.ИмяТаблицыИтогов("ОстаткиТоваров");
   РегДвижения=Мета.ИмяТаблицыДвижений("ОстаткиТоваров");
   ФлагДвижения="RF"+Мета.ИДРегистра("ОстаткиТоваров");
   Измерение1="SP"+Мета.ИДИзмеренияРегистра("ОстаткиТоваров","Склад");
   Измерение2="SP"+Мета.ИДИзмеренияРегистра("ОстаткиТоваров","Товар");
   РесурсКол="SP"+Мета.ИДРесурсаРегистра("ОстаткиТоваров","Количество");
                             

//формируем текст запроса
   ТекстЗапроса="SELECT Измерение1, Измерение2, SUM(Нач) AS Нач, SUM(Прих) AS Прих, SUM(Расх) AS Расх, SUM(Нач) + SUM(Прих) - SUM(Расх) AS Кон
   | FROM (SELECT "+Измерение1+" AS Измерение1, "+Измерение2+" AS Измерение2, "+РесурсКол+" AS Нач, 0 AS Прих, 0 AS Расх
   | FROM "+РегИтоги+" WHERE PERIOD = CONVERT(DATETIME, '"+ДатаОстатков+" 00:00:00', 102)
   | UNION ALL
   |
   | SELECT "+РегДвижения+"."+Измерение1+" AS Измерение1, "+РегДвижения+"."+Измерение2+" AS Измерение2, "+РегДвижения+"."+РесурсКол+" * (1 - "+РегДвижения+".DEBKRED * 2) AS Нач, 0 AS Прих, 0 AS Расх
   | FROM "+РегДвижения+" INNER JOIN _1SJOURN ON "+РегДвижения+".IDDOC = _1SJOURN.IDDOC
   | WHERE (_1SJOURN.DATE_TIME_IDDOC >= '"+ДатаНачалаОст+"') AND (_1SJOURN.DATE_TIME_IDDOC < '"+ДатаНачала+"') AND (_1SJOURN."+ФлагДвижения+" = 1) AND
   | (_1SJOURN.CLOSED & 1 = 1)
   |
   | UNION ALL
   |
   | SELECT "+РегДвижения+"."+Измерение1+" AS Измерение1, "+РегДвижения+"."+Измерение2+" AS Измерение2, 0 AS Нач,
   | CASE WHEN "+РегДвижения+".DEBKRED = 0 THEN "+РегДвижения+"."+РесурсКол+" ELSE 0 END AS Прих,
   | CASE WHEN "+РегДвижения+".DEBKRED = 1 THEN "+РегДвижения+"."+РесурсКол+" ELSE 0 END AS Расх
   | FROM "+РегДвижения+" INNER JOIN _1SJOURN ON "+РегДвижения+".IDDOC = _1SJOURN.IDDOC
   | WHERE (_1SJOURN.DATE_TIME_IDDOC >= '"+ДатаНачала+"') AND (_1SJOURN.DATE_TIME_IDDOC < '"+ДатаКонца+"') AND (_1SJOURN."+ФлагДвижения+" = 1) AND
   | (_1SJOURN.CLOSED & 1 = 1)) TMP
   |GROUP BY TMP.Измерение1, TMP.Измерение2 WITH ROLLUP
   |ORDER BY TMP.Измерение1, TMP.Измерение2";
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Добавить условие ВыбТовар
Ответ #1 - 24. Октября 2007 :: 04:51
Печать  
Почитай про виртуальную таблицу РегистрОбороты
  
Наверх
ICQ  
IP записан
 
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Re: Добавить условие ВыбТовар
Ответ #2 - 24. Октября 2007 :: 05:23
Печать  
$РегистрОстатки.ОстаткиТоваров - насколько я понимаю это виртуальная таблица ?
Не уверена, но думаю она мне не подойдет, т.к.

есть две базы 1С,
В первой запускается обработка, идет подключение через OLE ко второй базе в которой и выполняется запрос, результат которого выгружается в ТЗ первой базы.

Все Ок, только условие ВыбТовар нужно добавить.

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


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Re: Добавить условие ВыбТовар
Ответ #3 - 24. Октября 2007 :: 05:26
Печать  
Мета=Офис.EvalExpr("СоздатьОбъект(""MetaDataWork"")");
Запрос=Офис.EvalExpr("СоздатьОбъект(""ODBCRecordSet"")"); 

Если использовать $РегистрОстатки.ОстаткиТоваров  то это инфа какой базы будет первой или второй ?

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Добавить условие ВыбТовар
Ответ #4 - 24. Октября 2007 :: 05:32
Печать  
boks писал(а) 24. Октября 2007 :: 05:26:
Мета=Офис.EvalExpr("СоздатьОбъект(""MetaDataWork"")");
Запрос=Офис.EvalExpr("СоздатьОбъект(""ODBCRecordSet"")");  

Если использовать $РегистрОстатки.ОстаткиТоваров  то это инфа какой базы будет первой или второй ?


1. Я же написал: РегистрОбороты а ты про остаткаи, тебеж обороты нужны?
2. Сейчас у тебя данные какие берутся? Такие и будут браться
3. Еще можешь почитать про ODBCDataBase :: ПрисоединитьИБ, может тебе и OLE не  понадобится
  
Наверх
ICQ  
IP записан
 
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Re: Добавить условие ВыбТовар
Ответ #5 - 24. Октября 2007 :: 06:02
Печать  
Судя по справке 1С++ в методах ODBCDataBase нет ПрисоединитьИБ , это что недокументированная возможность ? Улыбка
И где еще можно почитать ?
  
Наверх
 
IP записан
 
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Re: Добавить условие ВыбТовар
Ответ #6 - 24. Октября 2007 :: 06:06
Печать  
В нете кое-что есть, буду пробовать, спасибо за помощь.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Добавить условие ВыбТовар
Ответ #7 - 24. Октября 2007 :: 06:10
Печать  
boks писал(а) 24. Октября 2007 :: 06:02:
Судя по справке 1С++ в методах ODBCDataBase нет ПрисоединитьИБ , это что недокументированная возможность ? Улыбка
И где еще можно почитать ?

Интересно если её нет в справке то что я тогда читаю? Улыбка
  
Наверх
ICQ  
IP записан
 
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Re: Добавить условие ВыбТовар
Ответ #8 - 24. Октября 2007 :: 06:14
Печать  
Методы
Закрыть / Close 
Соединение / DriverConnect
ПолучитьЗначениеТаймаута / GetConnectionTimeout
ПолучитьОписаниеОшибки / GetLastError 
ЕстьСоединение / IsConnected
Открыть / Open
УстЗначениеТаймаута / SetConnectionTimeout 
УстЗначениеТаймаутаЛогина / SetConnectionTimeout
УстТолькоЧтение / SetReadOnly
Присоеденить1С / Attach1C
КонфигурироватьИсточник / ConfigDataSource 
ПолучитьВерсиюДрайвера / GetDriverVer 
ПолучитьВерсиюODBC / GetODBCVer
ReconnectNative / ReconnectNative


ПрисоединитьИБ НЕТУ  Улыбка
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Добавить условие ВыбТовар
Ответ #9 - 24. Октября 2007 :: 06:17
Печать  
Тогда смотри здесь http://www.1cpp.ru/docum/html/ODBC.html
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Добавить условие ВыбТовар
Ответ #10 - 24. Октября 2007 :: 06:22
Печать  
>>ПрисоединитьИБ НЕТУ   

У тебя старая дока, не исключено что и старая длл-ка (работать все вавно не будет) Улыбка
Скачай вот тут:
http://www.1cpp.ru/index.php/Download
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Добавить условие ВыбТовар
Ответ #11 - 24. Октября 2007 :: 06:22
Печать  
И с начала почитай: http://www.1cpp.ru/forum/YaBB.pl?num=1148038411
  
Наверх
ICQ  
IP записан
 
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Re: Добавить условие ВыбТовар
Ответ #12 - 24. Октября 2007 :: 23:53
Печать  
ТекстЗапроса = "
     |Select
     |    Товар [Товар $Справочник.Товары],
     |    Склад [Склад $Справочник.Склады], 
     |    КоличествоОстаток Количество
     |FROM
     |    $РегистрОстатки.ОстаткиТоваров(,,Товар in (Select val from #ВыбТовар) And Склад in (Select val from #ВыбСклад),(Товар, Склад), Количество ) остатки
     |";    

     Запрос = СоздатьОбъект("ODBCRecordSet");
     Запрос.УложитьСписокОбъектов(ВыбСклад,"#ВыбСклад","Склады");
     Запрос.УложитьСписокОбъектов(ВыбТовар,"#ВыбТовар","Товары");
     ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
     ТЗ.ВыбратьСтроку();
           
     
ПодключитьИБ() мало что дало Печаль
ВыбТовар - это товар в первой базе, во второй базе товара с таким ИД нет, можно как нибудь при подключенной второй ИБ создать справочник этой второй ИБ, чтобы найти там этот товар по коду???
И вообще, даже если убрать условие ВыбТовар, то товары при выгрузке в ТЗ ищутся по ИД и конечно же не находятся, т.к. базы разные.
В идеале с подключенной базы мне нужно вернуть код товара и  наименование....

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Добавить условие ВыбТовар
Ответ #13 - 25. Октября 2007 :: 01:27
Печать  
А фильтр тогда по наименованию чтоли? По какому реквизиту фильтровать будешь?
  
Наверх
ICQ  
IP записан
 
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Re: Добавить условие ВыбТовар
Ответ #14 - 25. Октября 2007 :: 02:37
Печать  
Я не про фильтры, а вообщем. Так можно в подключенной базе найти ВыбТовар - объект первой базы, по коду например ?

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