Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Запрос к ТЧ разных документов (число прочтений - 13497 )
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Запрос к ТЧ разных документов
06. Марта 2012 :: 10:48
Печать  
Здравствуйте. Подскажите новичку как правильно написать запрос к табличной части в разных документах. Я написал запрос к документу РеализацияТоваров, а если я хочу РеализацияТоваров, ПоступлениеТоваров, Списание и т.д. Подскажите пожалуйста. Спасибо

     RS = СоздатьОбъект("ODBCRecordset");
     RS.УстБД1С();
     ТекстЗапроса = "
     |SELECT
     |    $Док.Склад as [Склад $Справочник.МестаХранения],
     |    $ДокС.ТМЦ as [Товар $Справочник.Номенклатура],
     |    SUM($ДокС.Количество) as Количество
     |FROM
     |    $ДокументСтроки.РеализацияТоваров as ДокС
     |INNER JOIN
     |    $Документ.РеализацияТоваров as Док ON Док.IDDoc = ДокС.IDDoc AND
     |                                  $Док.Склад = :ВыбСклад1
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |GROUP BY
     |    $Док.Склад, $ДокС.ТМЦ WITH ROLLUP";
     RS.УстановитьТекстовыйПараметр("ВыбСклад1", ВыбСклад);
     RS.УстановитьТекстовыйПараметр("НачДата", ВыбНачПериода);
     RS.УстановитьТекстовыйПараметр("КонДата", ВыбКонПериода);
     ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос к ТЧ разных документов
Ответ #1 - 06. Марта 2012 :: 10:56
Печать  
через union вестимо
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #2 - 06. Марта 2012 :: 10:59
Печать  
А по подробней можно, небольшой пример. Заранее спс
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #3 - 06. Марта 2012 :: 11:04
Печать  
Eprst писал(а) 06. Марта 2012 :: 10:56:
через union вестимо

А по подробней можно, как испоьзовать в данном примере. Заранее спс
  
Наверх
 
IP записан
 
antoneus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 16. Марта 2009
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #4 - 06. Марта 2012 :: 12:05
Печать  
а через coalesce не?

SELECT
     |    coalesce($Реализация.Склад, $Поступление.Склад) as [Склад $Справочник.МестаХранения],
....
     |FROM
     |    _1sjourn (nolock)
...
left join
...таблицы документов...
where iddocdef in ($ВидДокумента.РеализацияТоваров, ...) and ...условия...
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #5 - 07. Марта 2012 :: 01:28
Печать  
antoneus писал(а) 06. Марта 2012 :: 12:05:
а через coalesce не?
а подумать не?
если ты будешь джойнить разные доки друг к другу, то часть строк у тебя задублируется, а часть пропадет. Объяснять? или сам поймешь?
UNION же позволит в тех же полях получить данные из разных таблиц без пересечений, а объединением... как и следует из значения имени упомянутого оператора.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #6 - 07. Марта 2012 :: 06:53
Печать  
Dmitry The Wing писал(а) 07. Марта 2012 :: 01:28:
Объяснять? или сам поймешь?

Объясни, конечно.  Улыбка
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #7 - 07. Марта 2012 :: 08:10
Печать  
Ivanych писал(а) 06. Марта 2012 :: 10:48:
Здравствуйте. Подскажите новичку как правильно написать запрос к табличной части в разных документах. Я написал запрос к документу РеализацияТоваров, а если я хочу РеализацияТоваров, ПоступлениеТоваров, Списание и т.д. Подскажите пожалуйста. Спасибо


Примерно так:
Код
Выбрать все
   ТекстЗапроса = "
   |SELECT
   |	TMP.Склад as [Склад $Справочник.МестаХранения],
   |    TMP.ТМЦ as [Товар $Справочник.Номенклатура],
   |    SUM(TMP.Количество) as Количество
   |FROM
   |(
   |SELECT
   |    $Док.Склад as [Склад],
   |    $ДокС.ТМЦ as [Товар],
   |    $ДокС.Количество as Количество
   |FROM
   |    $ДокументСтроки.РеализацияТоваров as ДокС
   |INNER JOIN
   |    $Документ.РеализацияТоваров as Док ON Док.IDDoc = ДокС.IDDoc AND
   |					    $Док.Склад = :ВыбСклад1
   |INNER JOIN
   |    _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
   |			     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   |			     Жур.Closed & 1 = 1
   |
   |UNION ALL
   |
   |SELECT
   |    $Док2.Склад as [Склад],
   |    $ДокС2.ТМЦ as [Товар],
   |    $ДокС.Количество as Количество
   |FROM
   |    $ДокументСтроки.ПоступлениеТоваров as ДокС2
   |INNER JOIN
   |    $Документ.ПоступлениеТоваров as Док2 ON Док2.IDDoc = ДокС2.IDDoc AND
   |					    $Док2.Склад = :ВыбСклад1
   |INNER JOIN
   |    _1SJourn as Жур ON Жур.IDDoc = ДокС2.IDDoc AND
   |			     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   |			     Жур.Closed & 1 = 1
   |
   |UNION ALL
   |
   |SELECT
   |    $Док3.Склад as [Склад],
   |    $ДокС3.ТМЦ as [Товар],
   |    $ДокС.Количество as Количество
   |FROM
   |    $ДокументСтроки.Списание as ДокС3
   |INNER JOIN
   |    $Документ.Списание as Док3 ON Док3.IDDoc = ДокС3.IDDoc AND
   |					    $Док3.Склад = :ВыбСклад1
   |INNER JOIN
   |    _1SJourn as Жур ON Жур.IDDoc = ДокС3.IDDoc AND
   |			     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   |			     Жур.Closed & 1 = 1
   |) AS TNP
   |GROUP BY
   |    TMP.Склад, TMP.ТМЦ WITH ROLLUP
   |";
 

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


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #8 - 11. Марта 2012 :: 03:10
Печать  
Огромное спасибо.
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #9 - 11. Марта 2012 :: 05:35
Печать  
pvase писал(а) 07. Марта 2012 :: 08:10:
Ivanych писал(а) 06. Марта 2012 :: 10:48:
Здравствуйте. Подскажите новичку как правильно написать запрос к табличной части в разных документах. Я написал запрос к документу РеализацияТоваров, а если я хочу РеализацияТоваров, ПоступлениеТоваров, Списание и т.д. Подскажите пожалуйста. Спасибо


Примерно так:
Код
Выбрать все
   ТекстЗапроса = "
   |SELECT
   |	TMP.Склад as [Склад $Справочник.МестаХранения],
   |    TMP.ТМЦ as [Товар $Справочник.Номенклатура],
   |    SUM(TMP.Количество) as Количество
   |FROM
   |(
   |SELECT
   |    $Док.Склад as [Склад],
   |    $ДокС.ТМЦ as [Товар],
   |    $ДокС.Количество as Количество
   |FROM
   |    $ДокументСтроки.РеализацияТоваров as ДокС
   |INNER JOIN
   |    $Документ.РеализацияТоваров as Док ON Док.IDDoc = ДокС.IDDoc AND
   |					    $Док.Склад = :ВыбСклад1
   |INNER JOIN
   |    _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
   |			     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   |			     Жур.Closed & 1 = 1
   |
   |UNION ALL
   |
   |SELECT
   |    $Док2.Склад as [Склад],
   |    $ДокС2.ТМЦ as [Товар],
   |    $ДокС.Количество as Количество
   |FROM
   |    $ДокументСтроки.ПоступлениеТоваров as ДокС2
   |INNER JOIN
   |    $Документ.ПоступлениеТоваров as Док2 ON Док2.IDDoc = ДокС2.IDDoc AND
   |					    $Док2.Склад = :ВыбСклад1
   |INNER JOIN
   |    _1SJourn as Жур ON Жур.IDDoc = ДокС2.IDDoc AND
   |			     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   |			     Жур.Closed & 1 = 1
   |
   |UNION ALL
   |
   |SELECT
   |    $Док3.Склад as [Склад],
   |    $ДокС3.ТМЦ as [Товар],
   |    $ДокС.Количество as Количество
   |FROM
   |    $ДокументСтроки.Списание as ДокС3
   |INNER JOIN
   |    $Документ.Списание as Док3 ON Док3.IDDoc = ДокС3.IDDoc AND
   |					    $Док3.Склад = :ВыбСклад1
   |INNER JOIN
   |    _1SJourn as Жур ON Жур.IDDoc = ДокС3.IDDoc AND
   |			     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   |			     Жур.Closed & 1 = 1
   |) AS TNP
   |GROUP BY
   |    TMP.Склад, TMP.ТМЦ WITH ROLLUP
   |";
 



Спасибо за пример. Очень помогло. А можно еще уточнить как использовать в прямых запросах
Если ВыбСклад.Выбран()=1 Тогда
ТекстЗапросаРеализация = ТекстЗапросаРеализация +"
|Условие(Склад = ВыбСклад);";
КонецЕсли;

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


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Запрос к ТЧ разных документов
Ответ #10 - 11. Марта 2012 :: 05:40
Печать  
Код
Выбрать все
ТекстЗапроса = "
....

" + ?( ВыбСклад.Выбран()=1, "AND $Док.Склад = :ВыбСклад1", "") + "
... 

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


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #11 - 11. Марта 2012 :: 05:55
Печать  
Anatol писал(а) 11. Марта 2012 :: 05:40:
Код
Выбрать все
ТекстЗапроса = "
....

" + ?( ВыбСклад.Выбран()=1, "AND $Док.Склад = :ВыбСклад1", "") + "
... 


Спасибо работает, а если выбсклад.этогруппа
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #12 - 11. Марта 2012 :: 05:56
Печать  
Ivanych писал(а) 11. Марта 2012 :: 05:55:
Anatol писал(а) 11. Марта 2012 :: 05:40:
Код
Выбрать все
ТекстЗапроса = "
....

" + ?( ВыбСклад.Выбран()=1, "AND $Док.Склад = :ВыбСклад1", "") + "
... 


Спасибо работает, а если выбсклад.этогруппа

Или список
  
Наверх
 
IP записан
 
antoneus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 16. Марта 2009
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #13 - 11. Марта 2012 :: 06:05
Печать  
УложитьСписокОбъектов
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #14 - 11. Марта 2012 :: 06:14
Печать  
antoneus писал(а) 11. Марта 2012 :: 06:05:
УложитьСписокОбъектов

Спасибо разобрался. Улыбка
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Запрос к ТЧ разных документов
Ответ #15 - 11. Марта 2012 :: 06:15
Печать  
Код
Выбрать все
AND $Док.Склад in (select val from #врФильтрСклада) 



ну и УложитьСписокОбъектов
  
Наверх
wwwICQ  
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #16 - 11. Марта 2012 :: 08:47
Печать  
Anatol писал(а) 11. Марта 2012 :: 06:15:
Код
Выбрать все
AND $Док.Склад in (select val from #врФильтрСклада) 



ну и УложитьСписокОбъектов

А если, я хочу по документу возврат например, количество со знаком минус получить
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #17 - 11. Марта 2012 :: 08:53
Печать  
Ivanych писал(а) 11. Марта 2012 :: 08:47:
Anatol писал(а) 11. Марта 2012 :: 06:15:
Код
Выбрать все
AND $Док.Склад in (select val from #врФильтрСклада) 



ну и УложитьСписокОбъектов

А если, я хочу по документу возврат например, количество со знаком минус получить

Все разобрался спс
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #18 - 11. Марта 2012 :: 09:18
Печать  
Помогите разобраться, выдает не тот элемент который указан в документе
     |SELECT
     |    $Док14.Склад as [Склад],
     |    $ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС14.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
В документе Тип значение ТМЦ - неопределенный
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Запрос к ТЧ разных документов
Ответ #19 - 11. Марта 2012 :: 09:40
Печать  
SUBSTRING($ДокС14.ТМЦ, 6, 9) IN (SELECT Val FROM #ГруппаТМЦ)

будет работать начиная с MSSQL2005
  
Наверх
wwwICQ  
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #20 - 11. Марта 2012 :: 09:48
Печать  
Anatol писал(а) 11. Марта 2012 :: 09:40:
SUBSTRING($ДокС14.ТМЦ, 6, 9) IN (SELECT Val FROM #ГруппаТМЦ)

будет работать начиная с MSSQL2005

А не выбран ГруппаТМЦ т.е. по всем элементам
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #21 - 11. Марта 2012 :: 09:50
Печать  
Anatol писал(а) 11. Марта 2012 :: 09:40:
SUBSTRING($ДокС14.ТМЦ, 6, 9) IN (SELECT Val FROM #ГруппаТМЦ)

будет работать начиная с MSSQL2005

В документе указан элемент с кодом ЦЦТР98755340, а ТЗ выдает элемент с кодом 913
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #22 - 11. Марта 2012 :: 09:53
Печать  
Anatol писал(а) 11. Марта 2012 :: 09:40:
SUBSTRING($ДокС14.ТМЦ, 6, 9) IN (SELECT Val FROM #ГруппаТМЦ)

будет работать начиная с MSSQL2005

нет то же самое
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Запрос к ТЧ разных документов
Ответ #23 - 11. Марта 2012 :: 09:55
Печать  
пиши в аську
  
Наверх
wwwICQ  
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #24 - 12. Марта 2012 :: 06:20
Печать  
Помогите разобраться, что делаю не так?
Помогите разобраться, выдает не тот элемент который указан в документе
     |SELECT
     |    $Док14.Склад as [Склад],
     |    $ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС14.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
В документе Тип значение ТМЦ - неопределенный
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #25 - 12. Марта 2012 :: 06:45
Печать  
Ivanych писал(а) 12. Марта 2012 :: 06:20:
$ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
В документе Тип значение ТМЦ - неопределенный
Найди противоречия в этих двух строках...
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #26 - 12. Марта 2012 :: 06:53
Печать  
Dmitry The Wing писал(а) 12. Марта 2012 :: 06:45:
Ivanych писал(а) 12. Марта 2012 :: 06:20:
$ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
В документе Тип значение ТМЦ - неопределенный
Найди противоречия в этих двух строках...

Я пробывал иначе ТМЦ $Справочник то же самое
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #27 - 12. Марта 2012 :: 06:57
Печать  
Dmitry The Wing писал(а) 12. Марта 2012 :: 06:45:
Ivanych писал(а) 12. Марта 2012 :: 06:20:
$ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
В документе Тип значение ТМЦ - неопределенный
Найди противоречия в этих двух строках...

Всегда выскакивает один и тот же элемент
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #28 - 12. Марта 2012 :: 07:06
Печать  
Ivanych писал(а) 12. Марта 2012 :: 06:20:
Помогите разобраться, что делаю не так?
Помогите разобраться, выдает не тот элемент который указан в документе
     |SELECT
     |    $Док14.Склад as [Склад],
     |    $ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС14.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
В документе Тип значение ТМЦ - неопределенный



Код :
Код
Выбрать все
ТекстЗапроса = "
|SELECT
     |    $Док14.Склад as [Склад],
     |    $ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |			     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |			     Жур.Closed & 1 = 1
|";
Если  ПустоеЗначение(ВыбСклад) = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "
| AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)
|";
КонецЕсли;
Если  ПустоеЗначение(ВыбТМЦ) = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "
|AND $ДокС14.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)
|";
КонецЕсли;
 



Цитата:
В документе Тип значение ТМЦ - неопределенный

Из-за этого второе условие никогда не будет срабатывать
надо приводить во временную таблицу ТМЦ к неопределенному типу.

Проверь сначала что условие по складу работает.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #29 - 12. Марта 2012 :: 07:16
Печать  
Ivanych писал(а) 12. Марта 2012 :: 06:53:
Dmitry The Wing писал(а) 12. Марта 2012 :: 06:45:
Ivanych писал(а) 12. Марта 2012 :: 06:20:
$ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
В документе Тип значение ТМЦ - неопределенный
Найди противоречия в этих двух строках...

Я пробывал иначе ТМЦ $Справочник то же самое


Я не стал повторять сообщение: Anatol писал(а) 11. Марта 2012 :: 09:40:
SUBSTRING($ДокС14.ТМЦ, 6, 9)

Но про типизацию дополню: типизировать надо также, как и в конфигураторе. Разве у поля ТМЦ тип Справочник?
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #30 - 12. Марта 2012 :: 08:59
Печать  
Dmitry The Wing писал(а) 12. Марта 2012 :: 07:16:
Ivanych писал(а) 12. Марта 2012 :: 06:53:
Dmitry The Wing писал(а) 12. Марта 2012 :: 06:45:
Ivanych писал(а) 12. Марта 2012 :: 06:20:
$ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
В документе Тип значение ТМЦ - неопределенный
Найди противоречия в этих двух строках...

Я пробывал иначе ТМЦ $Справочник то же самое

Объект не найден(9/Y)
Я не стал повторять сообщение: Anatol писал(а) 11. Марта 2012 :: 09:40:
SUBSTRING($ДокС14.ТМЦ, 6, 9)

Но про типизацию дополню: типизировать надо также, как и в конфигураторе. Разве у поля ТМЦ тип Справочник?

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


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #31 - 12. Марта 2012 :: 09:00
Печать  
Dmitry The Wing писал(а) 12. Марта 2012 :: 07:16:
Ivanych писал(а) 12. Марта 2012 :: 06:53:
Dmitry The Wing писал(а) 12. Марта 2012 :: 06:45:
Ivanych писал(а) 12. Марта 2012 :: 06:20:
$ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
В документе Тип значение ТМЦ - неопределенный
Найди противоречия в этих двух строках...

Я пробывал иначе ТМЦ $Справочник то же самое

     |SELECT
     |    $Док14.Склад as [Склад],
     |    SUBSTRING($ДокС14.ТМЦ, 6, 9) as [ТМЦ $Неопределенный], 
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС14.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1

Я не стал повторять сообщение: Anatol писал(а) 11. Марта 2012 :: 09:40:
SUBSTRING($ДокС14.ТМЦ, 6, 9)

Но про типизацию дополню: типизировать надо также, как и в конфигураторе. Разве у поля ТМЦ тип Справочник?

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


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #32 - 12. Марта 2012 :: 09:01
Печать  
Ivanych писал(а) 12. Марта 2012 :: 09:00:
Dmitry The Wing писал(а) 12. Марта 2012 :: 07:16:
Ivanych писал(а) 12. Марта 2012 :: 06:53:
Dmitry The Wing писал(а) 12. Марта 2012 :: 06:45:
Ivanych писал(а) 12. Марта 2012 :: 06:20:
$ДокС14.ТМЦ as [ТМЦ $Справочник.Номенклатура],
В документе Тип значение ТМЦ - неопределенный
Найди противоречия в этих двух строках...

Я пробывал иначе ТМЦ $Справочник то же самое

     |SELECT
     |    $Док14.Склад as [Склад],
     |    SUBSTRING($ДокС14.ТМЦ, 6, 9) as [ТМЦ $Неопределенный],  
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС14.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1

Я не стал повторять сообщение: Anatol писал(а) 11. Марта 2012 :: 09:40:
SUBSTRING($ДокС14.ТМЦ, 6, 9)

Но про типизацию дополню: типизировать надо также, как и в конфигураторе. Разве у поля ТМЦ тип Справочник?



Объект не найден(9/Y)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос к ТЧ разных документов
Ответ #33 - 12. Марта 2012 :: 09:03
Печать  
Нахрена ты пишешь
SUBSTRING($ДокС14.ТМЦ, 6, 9)
в селекте ??????

У тебя реквизит ТМЦ какого типа в документе ?
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #34 - 12. Марта 2012 :: 09:05
Печать  
Eprst писал(а) 12. Марта 2012 :: 09:03:
Нахрена ты пишешь
SUBSTRING($ДокС14.ТМЦ, 6, 9)
в селекте ??????

У тебя реквизит ТМЦ какого типа в документе ?

Неопределенный
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #35 - 12. Марта 2012 :: 09:08
Печать  
Eprst писал(а) 12. Марта 2012 :: 09:03:
Нахрена ты пишешь
SUBSTRING($ДокС14.ТМЦ, 6, 9)
в селекте ??????

У тебя реквизит ТМЦ какого типа в документе ?

Вот весь код

     RS = СоздатьОбъект("ODBCRecordset");
     RS.УстБД1С();
     ТекстЗапроса = "
     |SELECT
     |       TMP.Склад as [Склад $Справочник.МестаХранения],
     |    TMP.ТМЦ as [ТМЦ $Справочник.Номенклатура],
     |    SUM(TMP.Количество) as Количество,      
     |    SUM(TMP.Сумма) as Сумма      
     |FROM
     |(
     |SELECT
     |    $Док.Склад as [Склад],
     |    $ДокС.ТМЦ as [ТМЦ],
     |    $ДокС.Количество as Количество,
     |    $ДокС.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваров as ДокС
     |INNER JOIN
     |    $Документ.РеализацияТоваров as Док ON Док.IDDoc = ДокС.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док2.Склад as [Склад],
     |    $ДокС2.ТМЦ as [ТМЦ],
     |    $ДокС2.Количество as Количество,
     |    $ДокС2.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровКоммисия as ДокС2
     |INNER JOIN
     |    $Документ.РеализацияТоваровКоммисия as Док2 ON Док2.IDDoc = ДокС2.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док2.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС2.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС2.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док3.Склад as [Склад],
     |    $ДокС3.ТМЦ as [ТМЦ],
     |    $ДокС3.Количество as Количество,
     |    $ДокС3.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровАльФараби as ДокС3
     |INNER JOIN
     |    $Документ.РеализацияТоваровАльФараби as Док3 ON Док3.IDDoc = ДокС3.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док3.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС3.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС3.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док4.Склад as [Склад],
     |    $ДокС4.ТМЦ as [ТМЦ],
     |    $ДокС4.Количество as Количество,
     |    $ДокС4.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровАрман as ДокС4
     |INNER JOIN
     |    $Документ.РеализацияТоваровАрман as Док4 ON Док4.IDDoc = ДокС4.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док4.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС4.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС4.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док5.Склад as [Склад],
     |    $ДокС5.ТМЦ as [ТМЦ],
     |    $ДокС5.Количество as Количество,
     |    $ДокС5.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровДастан as ДокС5
     |INNER JOIN
     |    $Документ.РеализацияТоваровДастан as Док5 ON Док5.IDDoc = ДокС5.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док5.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС5.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС5.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док6.Склад as [Склад],
     |    $ДокС6.ТМЦ as [ТМЦ],
     |    $ДокС6.Количество as Количество,
     |    $ДокС6.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровДомБыта as ДокС6
     |INNER JOIN
     |    $Документ.РеализацияТоваровДомБыта as Док6 ON Док6.IDDoc = ДокС6.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док6.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС6.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС6.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док7.Склад as [Склад],
     |    $ДокС7.ТМЦ as [ТМЦ],
     |    $ДокС7.Количество as Количество,
     |    $ДокС7.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровДомКниг as ДокС7
     |INNER JOIN
     |    $Документ.РеализацияТоваровДомКниг as Док7 ON Док7.IDDoc = ДокС7.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док7.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС7.ТМЦ IN (SELECT Val FROM #Групп
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос к ТЧ разных документов
Ответ #36 - 12. Марта 2012 :: 09:08
Печать  
так тогда

$ДокС14.ТМЦ as [ТМЦ $Неопределенный], 


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


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #37 - 12. Марта 2012 :: 09:09
Печать  
Ivanych писал(а) 12. Марта 2012 :: 09:05:
Eprst писал(а) 12. Марта 2012 :: 09:03:
Нахрена ты пишешь
SUBSTRING($ДокС14.ТМЦ, 6, 9)
в селекте ??????

У тебя реквизит ТМЦ какого типа в документе ?

Неопределенный

     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС7.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док8.Склад as [Склад],
     |    $ДокС8.ТМЦ as [ТМЦ],
     |    $ДокС8.Количество as Количество,
     |    $ДокС8.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровДомМинистерств as ДокС8
     |INNER JOIN
     |    $Документ.РеализацияТоваровДомМинистерств as Док8 ON Док8.IDDoc = ДокС8.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док8.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС8.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС8.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док9.Склад as [Склад],
     |    $ДокС9.ТМЦ as [ТМЦ],
     |    $ДокС9.Количество as Количество,
     |    $ДокС9.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровДостык as ДокС9
     |INNER JOIN
     |    $Документ.РеализацияТоваровДостык as Док9 ON Док9.IDDoc = ДокС9.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док9.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС9.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС9.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док10.Склад as [Склад],
     |    $ДокС10.ТМЦ as [ТМЦ],
     |    $ДокС10.Количество as Количество,
     |    $ДокС10.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровЖалын as ДокС10
     |INNER JOIN
     |    $Документ.РеализацияТоваровЖалын as Док10 ON Док10.IDDoc = ДокС10.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док10.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС10.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС10.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док11.Склад as [Склад],
     |    $ДокС11.ТМЦ as [ТМЦ],
     |    $ДокС11.Количество as Количество,
     |    $ДокС11.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровНаМайлина as ДокС11
     |INNER JOIN
     |    $Документ.РеализацияТоваровНаМайлина as Док11 ON Док11.IDDoc = ДокС11.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док11.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС11.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС11.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док12.Склад as [Склад],
     |    $ДокС12.ТМЦ as [ТМЦ],
     |    $ДокС12.Количество as Количество,
     |    $ДокС12.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровНасихат as ДокС12
     |INNER JOIN
     |    $Документ.РеализацияТоваровНасихат as Док12 ON Док12.IDDoc = ДокС12.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док12.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС12.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС12.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док13.Склад as [Склад],
     |    $ДокС13.ТМЦ as [ТМЦ],
     |    $ДокС13.Количество as Количество,
     |    $ДокС13.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваровРПС as ДокС13
     |INNER JOIN
     |    $Документ.РеализацияТоваровРПС as Док13 ON Док13.IDDoc = ДокС13.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док13.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС13.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС13.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |
     |SELECT
     |    $Док14.Склад as [Склад],
     |    $ДокС14.ТМЦ as [ТМЦ $Неопределенный], 
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #38 - 12. Марта 2012 :: 09:10
Печать  
Ivanych писал(а) 12. Марта 2012 :: 09:05:
Eprst писал(а) 12. Марта 2012 :: 09:03:
Нахрена ты пишешь
SUBSTRING($ДокС14.ТМЦ, 6, 9)
в селекте ??????

У тебя реквизит ТМЦ какого типа в документе ?

Неопределенный

     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС14.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |) AS TMP
     |
     |GROUP BY
     |    TMP.Склад, TMP.ТМЦ WITH ROLLUP";
     RS.УстановитьТекстовыйПараметр("ВыбСклад1", ВыбСклад);
     RS.УложитьСписокОбъектов(ВыбСклад, "#ГруппаСклад", "МестаХранения");
     RS.УложитьСписокОбъектов(ВыбТМЦ, "#ГруппаТМЦ", "Номенклатура");
     RS.УстановитьТекстовыйПараметр("НачДата", ВыбНачПериода);
     RS.УстановитьТекстовыйПараметр("КонДата", ВыбКонПериода);
     ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #39 - 12. Марта 2012 :: 09:11
Печать  
Eprst писал(а) 12. Марта 2012 :: 09:08:
так тогда

$ДокС14.ТМЦ as [ТМЦ $Неопределенный],  



Пробывал выдает другой элемент.
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #40 - 12. Марта 2012 :: 09:16
Печать  
Eprst писал(а) 12. Марта 2012 :: 09:08:
так тогда

$ДокС14.ТМЦ as [ТМЦ $Неопределенный],  



Если здесь выставляю неопределенный
     |SELECT
     |       TMP.Склад as [Склад $Справочник.МестаХранения],
     |    TMP.ТМЦ as [ТМЦ $неопределенный],
     |    SUM(TMP.Количество) as Количество,      
     |    SUM(TMP.Сумма) as Сумма      
     |FROM
Тогда реализации пустые и наоборот
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #41 - 12. Марта 2012 :: 09:50
Печать  
Eprst писал(а) 12. Марта 2012 :: 09:08:
так тогда

$ДокС14.ТМЦ as [ТМЦ $Неопределенный],  



Так не пойдет ему нужно на этот значение условие накладывать
а как написал ты выводиться в результирующий набор.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #42 - 12. Марта 2012 :: 09:52
Печать  
(Ivanych) ты 28 пробывал ???

ps Сначала с пустым ТМЦ
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #43 - 12. Марта 2012 :: 09:57
Печать  
Z1 писал(а) 12. Марта 2012 :: 09:52:
(Ivanych) ты 28 пробывал ???

ps Сначала с пустым ТМЦ

Пробывал, а условие по складу работает норм
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #44 - 12. Марта 2012 :: 10:01
Печать  
Ivanych писал(а) 12. Марта 2012 :: 09:57:
Z1 писал(а) 12. Марта 2012 :: 09:52:
(Ivanych) ты 28 пробывал ???

ps Сначала с пустым ТМЦ

Пробывал, а условие по складу работает норм

Как сделать условия для ТМЦ сам догадаешься или надо расписывать ???
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #45 - 12. Марта 2012 :: 10:03
Печать  
Z1 писал(а) 12. Марта 2012 :: 10:01:
Ivanych писал(а) 12. Марта 2012 :: 09:57:
Z1 писал(а) 12. Марта 2012 :: 09:52:
(Ivanych) ты 28 пробывал ???

ps Сначала с пустым ТМЦ

Пробывал, а условие по складу работает норм

Как сделать условия для ТМЦ сам догадаешься или надо расписывать ???

Надо, если не сложно не конечно  Улыбка
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #46 - 12. Марта 2012 :: 10:38
Печать  
Всем спасибо Анатолий помог разобраться.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #47 - 12. Марта 2012 :: 10:44
Печать  
Ivanych писал(а) 12. Марта 2012 :: 10:38:
Всем спасибо Анатолий помог разобраться.

выкладывай решение.
а  его можно будет покритиковать
б может оно пригодиться другим будущим  читателям ветки
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #48 - 12. Марта 2012 :: 10:59
Печать  
Z1 писал(а) 12. Марта 2012 :: 10:44:
Ivanych писал(а) 12. Марта 2012 :: 10:38:
Всем спасибо Анатолий помог разобраться.

выкладывай решение.
а  его можно будет покритиковать
б может оно пригодиться другим будущим  читателям ветки


     RS = СоздатьОбъект("ODBCRecordset");
     RS.УстБД1С();
     ТекстЗапроса = "
     |SELECT
     |       TMP.Склад as [Склад $Справочник.МестаХранения],
     |    TMP.ТМЦ as [ТМЦ $Справочник.Номенклатура],
     |    SUM(TMP.Количество) as Количество,      
     |    SUM(TMP.Сумма) as Сумма      
     |FROM
     |(
     |SELECT
     |    $Док.Склад as [Склад],
     |    $ДокС.ТМЦ as [ТМЦ],
     |    $ДокС.Количество as Количество,
     |    $ДокС.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваров as ДокС
     |INNER JOIN
     |    $Документ.РеализацияТоваров as Док ON Док.IDDoc = ДокС.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |SELECT
     |    $Док14.Склад as [Склад],
     |    SUBSTRING($ДокС14.ТМЦ, 7, 9) as [ТМЦ],  
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND SUBSTRING($ДокС14.ТМЦ, 7, 9) IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |) AS TMP
     |
     |GROUP BY
     |    TMP.Склад, TMP.ТМЦ WITH ROLLUP";
     RS.УстановитьТекстовыйПараметр("ВыбСклад1", ВыбСклад);
     RS.УложитьСписокОбъектов(ВыбСклад, "#ГруппаСклад", "МестаХранения");
     RS.УложитьСписокОбъектов(ВыбТМЦ, "#ГруппаТМЦ", "Номенклатура");
     RS.УстановитьТекстовыйПараметр("НачДата", ВыбНачПериода);
     RS.УстановитьТекстовыйПараметр("КонДата", ВыбКонПериода);
     ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос к ТЧ разных документов
Ответ #49 - 12. Марта 2012 :: 11:03
Печать  
Блин.. что ж ты сразу то не написал, что это один из селектов, объединенных в юнион ??

Тебе придется везде либо добавлять вид справочника и типизировать всё типу справочник (а еще лучше - добавлять тип и вид и типизировать к "неопределенный")

Ибо неясно, зачем тип Неопределенный в табличной части дока.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос к ТЧ разных документов
Ответ #50 - 12. Марта 2012 :: 11:05
Печать  
Цитата:
|    SUBSTRING($ДокС14.ТМЦ, 7, 9) as [ТМЦ],  


Это не верное решение - при типизации к конкретному виду справочника ты потеряешь часть значений из этого документа других видов и типов.

Верное оно будет, если только фильтр на ТМЦ задан конкретными значениями одного вида справочника
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #51 - 12. Марта 2012 :: 11:07
Печать  
Eprst писал(а) 12. Марта 2012 :: 11:03:
Блин.. что ж ты сразу то не написал, что это один из селектов, объединенных в юнион ??

Тебе придется везде либо добавлять вид справочника и типизировать всё типу справочник (а еще лучше - добавлять тип и вид и типизировать к "неопределенный")

Ибо неясно, зачем тип Неопределенный в табличной части дока.

Это только в одном виде документа ВозвратотПокупателя Неопределенный, а во всех остальных определенный справочник
Меня интересует товар, а еще бывает материалы
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #52 - 12. Марта 2012 :: 11:09
Печать  
Eprst писал(а) 12. Марта 2012 :: 11:05:
Цитата:
|    SUBSTRING($ДокС14.ТМЦ, 7, 9) as [ТМЦ],  


Это не верное решение - при типизации к конкретному виду справочника ты потеряешь часть значений из этого документа других видов и типов.

Верное оно будет, если только фильтр на ТМЦ задан конкретными значениями одного вида справочника

Пойдет. Это как раз и надо.
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #53 - 12. Марта 2012 :: 11:10
Печать  
Eprst писал(а) 12. Марта 2012 :: 11:05:
Цитата:
|    SUBSTRING($ДокС14.ТМЦ, 7, 9) as [ТМЦ],  


Это не верное решение - при типизации к конкретному виду справочника ты потеряешь часть значений из этого документа других видов и типов.

Верное оно будет, если только фильтр на ТМЦ задан конкретными значениями одного вида справочника


А есть другие варианты?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #54 - 12. Марта 2012 :: 11:11
Печать  
Eprst писал(а) 12. Марта 2012 :: 11:05:
Цитата:
|    SUBSTRING($ДокС14.ТМЦ, 7, 9) as [ТМЦ],  


Это не верное решение - при типизации к конкретному виду справочника ты потеряешь часть значений из этого документа других видов и типов.

Верное оно будет, если только фильтр на ТМЦ задан конкретными значениями одного вида справочника


Да вроде верное ( не оптимальное правда)
он же оставляет только элементы принадлежащие конкретной папки конкретного справочника.

ps надо или нет оставлять тип неопределенный в табличной части документа отсюда не видно.Лучше этот вопрос(если это вопрос) вынести в отдельную ветку.Для очень далекой перспективы конечно от типа неопределенный
надо избавляться в табличной части документа.

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос к ТЧ разных документов
Ответ #55 - 12. Марта 2012 :: 11:12
Печать  
Ivanych писал(а) 12. Марта 2012 :: 11:10:
А есть другие варианты?


Есть - приводить все ТМЦ в запросе к неопределенному виду и типизировать как Неопределенный

А так - у тебя "частное" решение. которое будет работать только если есть фильтр по ТМЦ
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #56 - 12. Марта 2012 :: 11:19
Печать  
Eprst писал(а) 12. Марта 2012 :: 11:12:
Ivanych писал(а) 12. Марта 2012 :: 11:10:
А есть другие варианты?


Есть - приводить все ТМЦ в запросе к неопределенному виду и типизировать как Неопределенный

А так - у тебя "частное" решение. которое будет работать только если есть фильтр по ТМЦ


Я приводил все ТМЦ в запросе к неопределенному виду и типизировать как Неопределенный и там где опрделенный тип были пустые поля, а это решение и без фильтра работает по ТМЦ.
Правда может и ошибся при написание где то, но так вроде все норм.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #57 - 12. Марта 2012 :: 11:24
Печать  
в (48) поставь еще условия на Жур.iddocdef =
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #58 - 12. Марта 2012 :: 11:30
Печать  
Ivanych писал(а) 12. Марта 2012 :: 11:10:
Eprst писал(а) 12. Марта 2012 :: 11:05:
Цитата:
|    SUBSTRING($ДокС14.ТМЦ, 7, 9) as [ТМЦ],  


Это не верное решение - при типизации к конкретному виду справочника ты потеряешь часть значений из этого документа других видов и типов.

Верное оно будет, если только фильтр на ТМЦ задан конкретными значениями одного вида справочника


А есть другие варианты?

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос к ТЧ разных документов
Ответ #59 - 12. Марта 2012 :: 11:37
Печать  
Ivanych писал(а) 12. Марта 2012 :: 11:19:
Я приводил все ТМЦ в запросе к неопределенному виду и типизировать как Неопределенный


^) В каком месте ?

Нужно достраивать поле до тип+вид+id  - у тебя этого нет нигде.
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #60 - 12. Марта 2012 :: 11:50
Печать  
Eprst писал(а) 12. Марта 2012 :: 11:37:
Ivanych писал(а) 12. Марта 2012 :: 11:19:
Я приводил все ТМЦ в запросе к неопределенному виду и типизировать как Неопределенный


^) В каком месте ?

Нужно достраивать поле до тип+вид+id  - у тебя этого нет нигде.


    RS = СоздатьОбъект("ODBCRecordset");
     RS.УстБД1С();
     ТекстЗапроса = "
     |SELECT
     |       TMP.Склад as [Склад $Справочник.МестаХранения],
     |    TMP.ТМЦ as [ТМЦ $Неопределенный],
     |    SUM(TMP.Количество) as Количество,      
     |    SUM(TMP.Сумма) as Сумма      
     |FROM
     |(
     |SELECT
     |    $Док.Склад as [Склад],
     |    $ДокС.ТМЦ as [ТМЦ],
     |    $ДокС.Количество as Количество,
     |    $ДокС.Сумма as Сумма
     |FROM
     |    $ДокументСтроки.РеализацияТоваров as ДокС
     |INNER JOIN
     |    $Документ.РеализацияТоваров as Док ON Док.IDDoc = ДокС.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND $ДокС.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |UNION ALL
     |SELECT
     |    $Док14.Склад as [Склад],
     |    $ДокС14.ТМЦ as [ТМЦ], 
     |    -($ДокС14.Количество) as Количество,
     |    -($ДокС14.Сумма) as Сумма
     |FROM
     |    $ДокументСтроки.ВозвратОтПокупателя as ДокС14
     |INNER JOIN
     |    $Документ.ВозвратОтПокупателя as Док14 ON Док14.IDDoc = ДокС14.IDDoc
     |                                  " + ?( ВыбСклад.Выбран()=1, "AND $Док14.Склад IN (SELECT Val FROM #ГруппаСклад)", "") + "
     |                                  " + ?( ВыбТМЦ.Выбран()=1, "AND ДокС14.ТМЦ IN (SELECT Val FROM #ГруппаТМЦ)", "") + "
     |INNER JOIN
     |    _1SJourn as Жур ON Жур.IDDoc = ДокС14.IDDoc AND
     |                       Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                       Жур.Closed & 1 = 1
     |) AS TMP
     |
     |GROUP BY
     |    TMP.Склад, TMP.ТМЦ WITH ROLLUP";
     RS.УстановитьТекстовыйПараметр("ВыбСклад1", ВыбСклад);
     RS.УложитьСписокОбъектов(ВыбСклад, "#ГруппаСклад", "МестаХранения");
     RS.УложитьСписокОбъектов(ВыбТМЦ, "#ГруппаТМЦ", "Номенклатура");
     RS.УстановитьТекстовыйПараметр("НачДата", ВыбНачПериода);
     RS.УстановитьТекстовыйПараметр("КонДата", ВыбКонПериода);
     ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);

Где то, чего то не дописал, судя по всему?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #61 - 12. Марта 2012 :: 12:44
Печать  
Сначала написал функцию для укладки во временную таблицу 23
Код
Выбрать все
Функция СоздатьСписок_23(rc,ПапкаСписок,ОсновноеИмя,Имя_23)
	Если ПустоеЗначение(ПапкаСписок) = 1 Тогда
		Сообщить("Нельзя с пустым элементом");
		return -1;
	КонецЕсли;
	Если ПустоеЗначение(ОсновноеИмя) = 1 Тогда
		Сообщить("Нельзя с пустым именем вспомагат таблицы");
		return -1;
	КонецЕсли;
	Имя_23 = ОсновноеИмя + "_23";
	meta = СоздатьОбъект("MetaDataWork");
	Зн_Стр =  Глоб_meta.ЗначениеВСамуюДлиннуюСтрокуБД(ПапкаСписок) ;
	ЛевСтр_6  = Лев(Зн_Стр,6);
	ПравСтр_8 = Прав(Зн_Стр,8);

	попытка
		ТекстЗапроса = "drop table "+Имя_23;
		rc.ВыполнитьСкалярный(ТекстЗапроса);
	Исключение
	КонецПопытки;
	Список_1 = СоздатьОбъект("СписокЗначений");
	Список_1.ДобавитьЗначение(ПапкаСписок,"");
	rc.УложитьСписокОбъектов(Список_1, ОсновноеИмя, СокрЛП(ПапкаСписок.Вид()) );
	ТЗ101 =  rc.ВыполнитьИнструкцию("select val from " + ОсновноеИмя);
	ТекстЗапроса = "create table " + Имя_23 + " (
	|val char(23),
	|CONSTRAINT PK0_"+ СтрЗаменить(Имя_23,"#","") + "  PRIMARY KEY (val)
	|)";
	попытка
		rc.ВыполнитьСкалярный(ТекстЗапроса);
	Исключение
		Сообщить("Ошибка 1 все остановили");
		return -2 ;
	КонецПопытки;
	ТекстЗАпроса =
	"insert into "+ Имя_23 +"(val) select '"+ ЛевСтр_6 + "' + val + '"+ ПравСтр_8 +"' from " + ОсновноеИмя;
	попытка
		rc.ВыполнитьСкалярный(ТекстЗапроса);
	Исключение
		Сообщить("Ошибка 2 все остановили");
		return -3;
	КонецПопытки;

	return 1;

КонецФункции

Процедура Сформировать()
	rc = СоздатьОбъект("ODBCRecordSet");
	Имя_23 = "";
	рез = СоздатьСписок_23(rc, ВыбТМЦ,"#СписокТМЦ",Имя_23);
	Если рез <= 0 Тогда
		Сообщить("Ошибка выполнения");
		return;
	КонецЕсли;


	ТЗ101 =  rc.ВыполнитьИнструкцию("select val from " + Имя_23);
	ТЗ101.ВыбратьСтроку();

КонецПроцедуры

 



(Ivanych) проверь что код этого поста работает.(у меня работает но у меня нет вообще неопределенных реквизитов)
после этого можно будет и сам запрос написать.
  
Наверх
 
IP записан
 
Ivanych
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 50
Зарегистрирован: 21. Февраля 2012
Re: Запрос к ТЧ разных документов
Ответ #62 - 13. Марта 2012 :: 03:33
Печать  
Z1 писал(а) 12. Марта 2012 :: 12:44:
Сначала написал функцию для укладки во временную таблицу 23
Код
Выбрать все
Функция СоздатьСписок_23(rc,ПапкаСписок,ОсновноеИмя,Имя_23)
	Если ПустоеЗначение(ПапкаСписок) = 1 Тогда
		Сообщить("Нельзя с пустым элементом");
		return -1;
	КонецЕсли;
	Если ПустоеЗначение(ОсновноеИмя) = 1 Тогда
		Сообщить("Нельзя с пустым именем вспомагат таблицы");
		return -1;
	КонецЕсли;
	Имя_23 = ОсновноеИмя + "_23";
	meta = СоздатьОбъект("MetaDataWork");
	Зн_Стр =  Глоб_meta.ЗначениеВСамуюДлиннуюСтрокуБД(ПапкаСписок) ;
	ЛевСтр_6  = Лев(Зн_Стр,6);
	ПравСтр_8 = Прав(Зн_Стр,8);

	попытка
		ТекстЗапроса = "drop table "+Имя_23;
		rc.ВыполнитьСкалярный(ТекстЗапроса);
	Исключение
	КонецПопытки;
	Список_1 = СоздатьОбъект("СписокЗначений");
	Список_1.ДобавитьЗначение(ПапкаСписок,"");
	rc.УложитьСписокОбъектов(Список_1, ОсновноеИмя, СокрЛП(ПапкаСписок.Вид()) );
	ТЗ101 =  rc.ВыполнитьИнструкцию("select val from " + ОсновноеИмя);
	ТекстЗапроса = "create table " + Имя_23 + " (
	|val char(23),
	|CONSTRAINT PK0_"+ СтрЗаменить(Имя_23,"#","") + "  PRIMARY KEY (val)
	|)";
	попытка
		rc.ВыполнитьСкалярный(ТекстЗапроса);
	Исключение
		Сообщить("Ошибка 1 все остановили");
		return -2 ;
	КонецПопытки;
	ТекстЗАпроса =
	"insert into "+ Имя_23 +"(val) select '"+ ЛевСтр_6 + "' + val + '"+ ПравСтр_8 +"' from " + ОсновноеИмя;
	попытка
		rc.ВыполнитьСкалярный(ТекстЗапроса);
	Исключение
		Сообщить("Ошибка 2 все остановили");
		return -3;
	КонецПопытки;

	return 1;

КонецФункции

Процедура Сформировать()
	rc = СоздатьОбъект("ODBCRecordSet");
	Имя_23 = "";
	рез = СоздатьСписок_23(rc, ВыбТМЦ,"#СписокТМЦ",Имя_23);
	Если рез <= 0 Тогда
		Сообщить("Ошибка выполнения");
		return;
	КонецЕсли;


	ТЗ101 =  rc.ВыполнитьИнструкцию("select val from " + Имя_23);
	ТЗ101.ВыбратьСтроку();

КонецПроцедуры

 



(Ivanych) проверь что код этого поста работает.(у меня работает но у меня нет вообще неопределенных реквизитов)
после этого можно будет и сам запрос написать.

Спасибо обязательно попробую, как только разберусь что к чему.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к ТЧ разных документов
Ответ #63 - 13. Марта 2012 :: 06:05
Печать  
(62) Функция СоздатьСписок_23 укладывает во временную таблицу
папку или элемент конкретного справочника
т.е полная аналогия к rc.УложитьСписокОбъектов
только укладывает в char(23) c типом 1с неопределенный
параметры
rc                    
ПапкаСписок    элемент или папка справочника
ОсновноеИмя   имя временной таблицы ( в нее укладывается стандартным образом)
Имя_23 выход. параметр имя верменной таблицы где будут размещены элементы справочника но с длиной 23

написал еще один тест. функция работает правильно
вот тест

Код
Выбрать все
Процедура Сформировать()
	rc = СоздатьОбъект("ODBCRecordSet");
	Имя_23 = "";
	рез = СоздатьСписок_23(rc, ВыбТовар,"#СписокТМЦ",Имя_23);
	Если рез <= 0 Тогда
		Сообщить("Ошибка выполнения");
		return;
	КонецЕсли;

	ТекстЗапроса =  "select val [Знач $Неопределеный] from " + Имя_23;
	ТЗ102 =  rc.ВыполнитьИнструкцию(ТекстЗапроса);
	ТЗ102.ВыбратьСтроку();
КонецПроцедуры

 


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