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


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 01. Мая 2008
Пол: Мужской
Запрос по подчиненным документам из 3-х уровней
26. Сентября 2011 :: 07:07
Печать  
Здравствуйте!
Есть задача: есть 3 документа (документ1, документ2, документ3). при чем документ1 - документ основание для документа 2; документ2 - документ основание для документа3. Нужен список всех документов3 за опред. период, у которых заполнен документ основание (документ2), а у последнего заполнен свой документ основание (документ1). т.е. нужен список: док1-док2-док3.
док2-док3 (у док2 нет основания) или просто док3 (тоже нет основания)- не удовлетворяют условию.
помогите, плиз. голову уже сломал.
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Запрос по подчиненным документам из 3-х уровней
Ответ #1 - 26. Сентября 2011 :: 07:14
Печать  
попробуй посмотреть по форуму, такие вопросы очень частые
  
Наверх
wwwICQ  
IP записан
 
Loko
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 01. Мая 2008
Пол: Мужской
Re: Запрос по подчиненным документам из 3-х уровней
Ответ #2 - 26. Сентября 2011 :: 08:59
Печать  
Anatol, спасибо за ссылку)

вот тут примерно накидал черновой вариант:

Код
Выбрать все
|SELECT
|  Выборка.Док,
|  Выборка.Основание,
|  Отбор2.PARENTVAL
|
|FROM
|   (SELECT
|		Жур.IDDoc Док,
|		Жур.IDDocDef Док_вид,
|		Отбор.PARENTVAL Основание
|	FROM
|		_1Sjourn Жур    
|	INNER JOIN
|		_1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
|			     Отбор. MDID = 0 AND
|				 Отбор.Child_Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) as Выборка
|INNER JOIN
|	_1SCRDOC Отбор2 ON Отбор2.ChildID = Выборка.Основание AND
|		     Отбор2. MDID = 0 AND
|				 Отбор2.Child_Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~";
 


выходит пустая таблица(
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Запрос по подчиненным документам из 3-х уровней
Ответ #3 - 28. Сентября 2011 :: 07:34
Печать  
Документы-основания ОБЯЗАНЫ быть в том же интервале?
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос по подчиненным документам из 3-х уровней
Ответ #4 - 28. Сентября 2011 :: 15:27
Печать  
Я сделал так для 2005 SQL:
Код
Выбрать все
ТекстДерево = "
	|DECLARE @ИдДокРодителя Char(23)
	|SET @ИдДокРодителя = '" + глMDW.ЗначениеВСамуюДлиннуюСтрокуБД(ВыбДокумент.ТекущийДокумент()) + "'
	|
	|;WITH Spr(PARENTVAL, IDDOCFULL, IDDOC, SprLevel, _path) AS
	|(
	|SELECT
	|	T1.PARENTVAL AS PARENTVAL,
	|	TabJ.ТипОбъекта+TabJ.ВидОбъекта+TabJ.IDDOC AS IDDOCFULL,
	|	TabJ.IDDOC AS IDDOC,
	|	0 AS SprLevel,
	|	CAST(TabJ.DATE_TIME_IDDOC AS VarChar(MAX)) AS _path
	|
	|FROM
	|	_1SCRDOC AS T1
	|	INNER JOIN
	|		Журналы As TabJ ON (T1.CHILDID = TabJ.IDDOC)
	|WHERE
	|	T1.PARENTVAL = @ИдДокРодителя
	|UNION ALL
	|SELECT
	|	e.PARENTVAL,
	|	TabJ2.ТипОбъекта+TabJ2.ВидОбъекта+TabJ2.IDDOC AS IDDOCFULL,
	|	TabJ2.IDDOC AS IDDOC,
	|	SprLevel + 1,
	|	d._path + CAST(TabJ2.DATE_TIME_IDDOC AS VarChar(MAX))
	|FROM
	|	_1SCRDOC AS e
	|	INNER JOIN
	|		Журналы As TabJ2 ON (e.CHILDID = TabJ2.IDDOC)
	|	INNER JOIN
	|		Spr AS d ON e.PARENTVAL = d.IDDOCFULL
	|)
	|SELECT
	|	CAST(Spr._path AS VarChar(2000)) AS _path,
	|	Spr.SprLevel AS SprLevel,
	|	Spr.PARENTVAL AS PARENTVAL,
	|	Spr.IDDOCFULL AS IDDOCFULL,
	|	ТабЖурн.IDDOC AS [IDDOC],
	|	ТабЖурн.IDDOC AS [Документ $Документ],
	|	ТабЖурн.IDDOCDEF AS [Документ_вид],
	|	ТабЖурн.Проведен + ТабЖурн.ПометкаНаУдаление*2 AS СтатусДок,
	|	ТабЖурн._ПредставлениеВидДок AS ВидДок,
	|	ТабЖурн.НомерДок AS НомерДок,
	|	ТабЖурн.ДатаДок AS ДатаДок,
	|	ТабЖурн.ВремяДок AS ВремяДок,
	|	ТабЖурн.Автор AS [Автор $Справочник.Пользователи],
	|	CAST(ТабЖурн.Информация AS VarChar(2000)) AS [Информация $Неопределенный],
	|	CAST(ТабЖурн.Сумма AS VarChar(2000)) AS [Сумма $Неопределенный]
	|FROM Spr
	|INNER JOIN Журналы AS ТабЖурн ON (ТабЖурн.IDDOC = Spr.IDDOC)
	|ORDER BY
	|	_path
	|";
 

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



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос по подчиненным документам из 3-х уровней
Ответ #5 - 28. Сентября 2011 :: 15:30
Печать  
Где журналы - это представление на таблицу _1SJOURN:
Примерно так:
Код
Выбрать все
CREATE VIEW [dbo].[Журналы]
AS
SELECT
	TabJ.ROW_ID AS ROW_ID,
	TabJ.IDJOURNAL AS IDJOURNAL,
	TabJ.IDDOC AS IDDOC,
	TabJ.IDDOCDEF AS IDDOCDEF,
	TabJ.APPCODE AS APPCODE,
	TabJ.DATE_TIME_IDDOC AS DATE_TIME_IDDOC,
	TabJ.DNPREFIX AS DNPREFIX,
	CONVERT(DateTime,LEFT(TabJ.DATE_TIME_IDDOC,8),112) AS ДатаДок,
	CONVERT(varchar, DATEADD(ss, dbo.Convert36To10(SUBSTRING(TabJ.DATE_TIME_IDDOC,9,6))/10000, LEFT(DATE_TIME_IDDOC,8)), 108) AS ВремяДок,
	dbo.Convert36To10(SUBSTRING(TabJ.DATE_TIME_IDDOC,9,6))/10000 AS ВремяДок10,
	TabJ.DOCNO AS НомерДок,
	TabJ.CLOSED&1 AS Проведен,
	TabJ.ISMARK AS ПометкаНаУдаление,
	TabJ.ACTCNT AS ЧислоДвижений,
	TabJ.VERSTAMP AS Версия,
	'O1' AS ТипОбъекта,
	TabV.Вид AS ВидОбъекта,
	TabV.Идентификатор AS _ВидДокумента,
	TabV.Представление AS _ПредставлениеВидДок,
...
 

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