Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Табличная часть подчиненных документов (число прочтений - 3127 )
Loko
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 01. Мая 2008
Пол: Мужской
Табличная часть подчиненных документов
09. Августа 2008 :: 13:40
Печать  
Здравствуйте! Не могу разобраться с одним запросом. Прошу Вашей помощи.
Задача (неск. урезаная): Есть документ (Док1). У него есть несколько подчиненных документов (док2), которые вводятся на основание дока1. Мне необходимо сопоставить табличные части этих документов по товару и количеству.

Следующий запрос выводить табличную часть Дока1.

ТекстЗапроса = "
|SELECT
|$Док1.Товар as [ТоварОбщий $Справочник.Товары], 
|$Док1.Количество as [Количество],
|Жур.IDDoc  as [Док $Документ.Док1],
|$Док.Контрагент as [Контрагент $Справочник.Контрагенты]
|FROM
|      $ДокументСтроки.Док1 as Док1
|INNER JOIN
|      $Документ.Док1 as Док ON Док.IDDoc = Док1.IDDoc 
|INNER JOIN
|      _1SJourn as Жур ON Жур.IDDoc = Док1.IDDoc
|WHERE $Док1=:ВыбДок";

Что нужно дописать, чтобы присоединить табличную часть подчиненных документов (соединение по товару).

p.s. в вышеуказанном запросе могут быть ошибки. это не суть важно.
  
Наверх
 
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Табличная часть подчиненных документов
Ответ #1 - 09. Августа 2008 :: 19:13
Печать  
требуется уточнение: если несколько документов Док2, то количества их суммируются? Или сравнивается каждый док2 с док1?
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
Loko
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 01. Мая 2008
Пол: Мужской
Re: Табличная часть подчиненных документов
Ответ #2 - 10. Августа 2008 :: 00:46
Печать  
да, суммируется.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Табличная часть подчиненных документов
Ответ #3 - 10. Августа 2008 :: 06:31
Печать  
Вообще-то такие весчи не тута обсуждаються.
Это раз.
А примеров на уту тему даже в описании 1С++ фатает.
Это два.
  
Наверх
 
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Табличная часть подчиненных документов
Ответ #4 - 10. Августа 2008 :: 07:54
Печать  
Для примера, вывод товаров с количествами основного и подчиненных документов:
Код
Выбрать все
SELECT
  $ДокСтр.Товар [Товар $Справочник.Товары], $ДокСтр.Количество, ПодчДок.Товар [ТоварПодч $Справочник.Товары], ПодчДок.Количество
FROM
  $ДокументСтроки.Док1 as ДокСтр
RIGHT OUTER JOIN
  (SELECT $ПодчДокСтр.Товар Товар, SUM($ПодчДокСтр.Количество) Количество
  FROM
    $ДокументСтроки.Док2 as ПодчДокСтр
  INNER JOIN
    _1SCRDOC Отбор ON Отбор.ChildID = ПодчДокСтр.IDDoc AND
			    Отбор. MDID = 0
			    AND Отбор.ParentVal = :ВыбДок*
  GROUP BY $ПодчДокСтр.Товар
  ) ПодчДок ON ПодчДок.Товар = $ДокСтр.Товар AND ДокСтр.IDDoc = :ВыбДок 


Контрагентов, проведенные или все подчиненные документы - подключай условия сам
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
Loko
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 01. Мая 2008
Пол: Мужской
Re: Табличная часть подчиненных документов
Ответ #5 - 10. Августа 2008 :: 11:16
Печать  
Спасибо, АндрейМ, получилось. А как модифицировать запрос не для одного документа-владельца (док1 или выбдок), а для неск. документов за опр. интервал? т.е. есть 2 документа типа "док1" (док1А и док1Б). в обоих документах в табл. части есть один товар (товарАБ). нужен общий свод по этому товару (и по всем товарам) по количеству во всех документах "док1" и сумма этого товара во всех подчинненных документах "док2" (тип один).

т.е. таблица сл. вида:
[товарАБ] _ [ОбщееКоличествоВоВсехДокахТипаДОК1] _[ОбщееКоличествоВоВсехПодчДокахТипаДок2] 

извиняюсь, если пишу не в том подфоруме.
  
Наверх
 
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Табличная часть подчиненных документов
Ответ #6 - 10. Августа 2008 :: 11:46
Печать  
Точно так-же, только собираешь количества в Док1 (предварительно собрав их во врем.таблице #Доки):
Код
Выбрать все
SELECT
  ДокСтр.Товар [Товар $Справочник.Товары], ДокСтр.Количество, ПодчДок.Товар [ТоварПодч $Справочник.Товары], ПодчДок.Количество

FROM
  (SELECT $ДокСтр.Товар Товар, SUM($ДокСтр.Количество) Количество
  FROM
    $ДокументСтроки.Док1 as ДокСтр
  WHERE ДокСтр.iddoc IN (SELECT val FROM #Доки)
  GROUP BY $ДокСтр.Товар) ДокСтр

RIGHT OUTER JOIN
  (SELECT $ПодчДокСтр.Товар Товар, SUM($ПодчДокСтр.Количество) Количество
  FROM
    $ДокументСтроки.Док2 as ПодчДокСтр
  INNER JOIN
    _1SCRDOC Отбор ON Отбор.ChildID = ПодчДокСтр.IDDoc AND
			    Отбор. MDID = 0
			    AND Отбор.ParentVal IN (SELECT 'O1'+$ВидДокумента36+val FROM #Доки)
  GROUP BY $ПодчДокСтр.Товар
  ) ПодчДок ON ПодчДок.Товар = $ДокСтр.Товар 


Можно, конечно, сделать запрос и побыстрее, но для общего ознакомления примерно так... Улыбка
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
Loko
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 01. Мая 2008
Пол: Мужской
Re: Табличная часть подчиненных документов
Ответ #7 - 19. Августа 2008 :: 03:37
Печать  
Спасибо, АндрейМ. По общему количеству во всех документах работает.

Задача усложняется тем, что необходимо группировать по каждому документу (док1) для выбранного товара (товарАБ), т.е.:

[Док1А]_[товарАБ] _ [ОбщееКоличествоВоВсехПодчДокахТипаДок2]  
[Док1Б]_[товарАБ] _ [ОбщееКоличествоВоВсехПодчДокахТипаДок2]
......
[Док1Я]_[товарАБ] _ [ОбщееКоличествоВоВсехПодчДокахТипаДок2]

Пробую так:

[code]  ДокСтр.Товар [Товар $Справочник.Товары], ДокСтр.Количество, ПодчДок.Товар [ТоварПодч $Справочник.Товары], ПодчДок.Количество

FROM
 (SELECT $ДокСтр.Товар Товар, SUM($ДокСтр.Количество) Количество
 FROM
   $ДокументСтроки.Док1 as ДокСтр
INNER JOIN
 $Документ.Док1 as Док ON Док.IDDoc = Док1.IDDoc
INNER JOIN
 _1SJourn as Жур ON Жур.IDDoc = ДокЛот.IDDoc
 WHERE ДокСтр.iddoc IN (SELECT val FROM #Доки)
 GROUP BY $ДокСтр.Товар) ДокСтр

RIGHT OUTER JOIN
 (SELECT Отбор.ParentVal as ДокОснование, $ПодчДокСтр.Товар Товар, SUM($ПодчДокСтр.Количество) Количество
 FROM
   $ДокументСтроки.Док2 as ПодчДокСтр
 INNER JOIN
   _1SCRDOC Отбор ON Отбор.ChildID = ПодчДокСтр.IDDoc AND
                     Отбор. MDID = 0
                     AND Отбор.ParentVal IN (SELECT 'O1'+$ВидДокумента36+val FROM #Доки)
 GROUP BY $ПодчДокСтр.Товар
 ) ПодчДок ON (ПодчДок.Товар = $ДокСтр.Товар) and (ПодчДок.ДокОснование = $Жур.IDDoc) [/code]

Объединение по "ПодчДок.ДокОснование = Жур.IDDoc" не идет(((

В запросе могут быть синтаксические ошибки (группировки и т.д.) это не суть важно.





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