Переключение на Главную Страницу Страницы: 1 2 3 [4] 5  ОтправитьПечать
Очень популярная тема (более 25 ответов) Запрос к ТЧ разных документов (число прочтений - 13518 )
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 записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 
ОтправитьПечать