Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Как из виртуальной таблицы типизировать документ? (число прочтений - 8902 )
LDS
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 05. Ноября 2006
Как из виртуальной таблицы типизировать документ?
07. Ноября 2006 :: 13:00
Печать  
Подскажите пожалуйста:
выборка из виртуальной таблицы
SELECT      
*      
FROM $РегистрОстаткиОбороты.Покупатели(,,Документ) as РегПок

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

Такая конструкция не работает:
SELECT      
  РегПок.ПозицияДокумента as [ТекДокумент $Документ],      
  РегПок.ВидДокумента as ТекДокумент_вид            
FROM $РегистрОстаткиОбороты.Покупатели(,,Документ) as РегПок

Выходит ошибка
Недопустимая типизация поля ТекДокумент.
  
Наверх
 
IP записан
 
LDS
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 05. Ноября 2006
Re: Как из виртуальной таблицы типизировать докуме
Ответ #1 - 07. Ноября 2006 :: 13:04
Печать  
Или как-то иначе можно типизировать документ?
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как из виртуальной таблицы типизировать докуме
Ответ #2 - 07. Ноября 2006 :: 13:42
Печать  
так же как и не из виртуальной... ВТ это подзапрос...
если все таки еще не понятно как, почитать можно здесь:
http://www.1cpp.ru/forum/YaBB.pl?num=1148038411
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как из виртуальной таблицы типизировать докуме
Ответ #3 - 07. Ноября 2006 :: 14:27
Печать  
Код
Выбрать все
SELECT
    Right(РегПок.ПозицияДокумента, 9) as [ТекДокумент $Документ],
    РегПок.ВидДокумента as ТекДокумент_вид
... 

  

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


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Как из виртуальной таблицы типизировать докуме
Ответ #4 - 22. Ноября 2006 :: 10:02
Печать  
Так не получается.

Выдает ошибку "Для типизации поля "ТекДокумент", не найдено дополнительное типизирующее поле"  Озадачен
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как из виртуальной таблицы типизировать докуме
Ответ #5 - 22. Ноября 2006 :: 10:07
Печать  
Bess_Tolkovaia писал(а) 22. Ноября 2006 :: 10:02:
Так не получается.

Выдает ошибку "Для типизации поля "ТекДокумент", не найдено дополнительное типизирующее поле"  Озадачен

внимательно смотрим на предыдущий пример: в запросе обязательно должно быть дополнительное типизирующее поле с алиасом, составленным из алиаса документа и суффикса _вид (регистр букв важен) (в данном примере это поле ТекДокумент_вид)
  
Наверх
 
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Как из виртуальной таблицы типизировать докуме
Ответ #6 - 22. Ноября 2006 :: 10:42
Печать  
Ага. Внимательно посмотрела. Я уже и раньше пыталась получить обороты по регистру с разворотом по документам с самими документами - не получилось.
Сейчас решила еще раз попытаться.

Взяла запрос из учебника, чуть упростила :

Код
Выбрать все
ТекстЗапроса = "
	|SELECT
	|  Жур.IDDoc as [Док $Документ],
	|  Жур.IDDocDef as Док_вид
	|FROM
	|  _1SJourn Жур
	|WHERE
	|  Жур.Date_Time_IDDoc BETWEEN :НачПериода AND :КонПериода~ AND
	|  Жур.Closed & 1 = 1";
 



Работает - выдает список документов, с типизацией, все чудненько.

Получила остатки обороты из регистра - получилось.
Пытаюсь прикрутить туда еще и документ:

Код
Выбрать все
Если ВыбСклад.ЭтоГруппа()=0 Тогда
     ТекстУсловия = "(Склад = $ВидСправочника36.МестаХранения + :ВыбСклад) and";
Иначе
	ТекстУсловия ="(Склад IN (SELECT ($ВидСправочника36.МестаХранения+Val) FROM #ГруппаСклада)) And";
КонецЕсли;
Если ВыбТовар.ЭтоГруппа()=0 Тогда
	ТекстУсловия = "(Товар = $ВидСправочника36.Материалы + :ВыбТовар)";
Иначе
	ТекстУсловия ="(Товар IN (SELECT ($ВидСправочника36.Материалы+Val) FROM #ГруппаТовара))";
КонецЕсли;


ТекстЗапросаВсе = "
	|SELECT
	|	Рег.Товар as [Товар $Справочник],
	|	Рег.СН as [СН $Справочник],
	|	Рег.Склад as [Склад $Справочник],
	|	ВсеДоки.Док as [Док $Документ],
	|   IsNull(Рег.КоличествоНачальныйОстаток,0) as КоличествоНачОст,
	|	IsNull(Рег.КоличествоПриход,0) as КоличествоПриход,
	|	IsNull(Рег.КоличествоРасход,0) as КоличествоРасход,
	|	IsNull(Рег.КоличествоКонечныйОстаток,0) as КоличествоКонОст
	|FROM
	|   $РегистрОстаткиОбороты.ОстаткиСклад(:НачПериода,:КонПериода~,
	|		Document,ActionsAndPeriodBoundaries, ,
	|"	+ ТекстУсловия+",,) As Рег
	|
	|LEFT JOIN  
	|	(SELECT
	|		  Жур.IDDoc as [Док $Документ],
	|		  Жур.IDDocDef as Док_вид,
	|		Жур.Date_Time_IDDoc
	|	FROM
	|		  _1SJourn Жур
	|	WHERE
	|		  Жур.Date_Time_IDDoc BETWEEN :НачПериода AND :КонПериода~ AND
	|		  Жур.Closed & 1 = 1 ) as ВсеДоки
	|ON
	|	Рег.ПозицияДокумента =  ВсеДоки.Date_Time_IDDoc
	|
	|ORDER by Товар,СН,Док
	|";

 



Получаю ошибку:
State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid
column name 'Док'.

было и так "ВсеДоки.Док," вместо "ВсеДоки.Док as [Док $Документ]". С той же ошибкой.

Что я не так делаю?  Смущённый

-------
Упс. Убрала группировку по "Док" - та же ошибка. Получается в таблице ВсеДоки нету Док??? почему???  Ужас
  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Как из виртуальной таблицы типизировать докуме
Ответ #7 - 22. Ноября 2006 :: 10:58
Печать  
О блиииин
Это из серии "читайте между строк"

Кто ж его знал, что НАИМЕНОВАНИЯ полей имеют значения?
Вот это - работает

Код
Выбрать все
ТекстЗапросаВсе = "
|SELECT
|	Рег.Товар as [Товар $Справочник],
|	Рег.СН as [СН $Справочник],
|	Рег.Склад as [Склад $Справочник],
|	ВсеДоки.IDDoc as [Док $Документ],
|	ВсеДоки.IDDocDef as Док_вид,
|   IsNull(Рег.КоличествоНачальныйОстаток,0) as КоличествоНачОст,
|	IsNull(Рег.КоличествоПриход,0) as КоличествоПриход,
|	IsNull(Рег.КоличествоРасход,0) as КоличествоРасход,
|	IsNull(Рег.КоличествоКонечныйОстаток,0) as КоличествоКонОст
|FROM
|   $РегистрОстаткиОбороты.ОстаткиСклад(:НачПериода,:КонПериода~,
|		Document,ActionsAndPeriodBoundaries, ,
|"	+ ТекстУсловия+",,) As Рег
|
|LEFT JOIN
|	(SELECT
|		  Жур.IDDoc,
|		  Жур.IDDocDef,
|		Жур.Date_Time_IDDoc
|	FROM
|		  _1SJourn Жур
|	WHERE
|		  Жур.Date_Time_IDDoc BETWEEN :НачПериода AND :КонПериода~ AND
|		  Жур.Closed & 1 = 1 ) as ВсеДоки
|ON
|	Рег.ПозицияДокумента =  ВсеДоки.Date_Time_IDDoc
|
|ORDER by Товар,СН
|";
 

  
Наверх
ICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как из виртуальной таблицы типизировать докуме
Ответ #8 - 22. Ноября 2006 :: 10:59
Печать  
Bess_Tolkovaia писал(а) 22. Ноября 2006 :: 10:42:
Убрала группировку по "Док" - та же ошибка. Получается в таблице ВсеДоки нету Док??? почему???  Ужас

Алиас [Док $Документ] превращается в "Док" в момент типизации результата. Т.е. после выполнения запроса. Напиши в подзапросе "Жур.IDDoc AS Док" и указанной ошибки не станет.

OFF: IMHO, подключение _1sjourn в этом запросе вообще не нужно.
  

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


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Как из виртуальной таблицы типизировать докуме
Ответ #9 - 22. Ноября 2006 :: 12:16
Печать  
А как тогда сделать, без  _1sjourn?

То, что получилось - опять не совсем то... документы выбираются все, я мне нужно только те, которые фигурируют в оборотах по указанному складу и товару. Не соображу, какое соединение сделать... Хотя соединением тут не поможешь. Первый подзапрос должен каким-то образом накладывать фильтр на второй...Ужас  мммм... Пошла думать. Примерно даже знаю, о чем.
  
Наверх
ICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как из виртуальной таблицы типизировать докуме
Ответ #10 - 22. Ноября 2006 :: 12:23
Печать  
Код
Выбрать все
|SELECT
|	Рег.Товар as [Товар $Справочник],
|	Рег.СН as [СН $Справочник],
|	Рег.Склад as [Склад $Справочник],
|	$НачалоПериода.День(Рег.ПозицияДокумента) День,
|	Right(Рег.ПозицияДокумента, 9) as [Док $Документ],
|	Рег.ВидДокумента as Док_вид,
|	Рег.КоличествоНачальныйОстаток as КоличествоНачОст,
|	Рег.КоличествоПриход as КоличествоПриход,
|	Рег.КоличествоРасход as КоличествоРасход,
|	Рег.КоличествоКонечныйОстаток as КоличествоКонОст
|FROM
|   $РегистрОстаткиОбороты.ОстаткиСклад(:НачПериода,:КонПериода~,
|		Document,ActionsAndPeriodBoundaries, ,
|"	+ ТекстУсловия+",,) As Рег
|ORDER by Товар,СН, Рег.ПозицияДокумента
 

  

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


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Как из виртуальной таблицы типизировать докуме
Ответ #11 - 22. Ноября 2006 :: 13:07
Печать  
Хм. В начале у меня почти так и было (не было "$НачалоПериода.День(Рег.ПозицияДокумента) День,"), но
"Для типизации поля "Док", не найдено дополнительное типизирующее поле."

Для варианта с "$НачалоПериода.День(Рег.ПозицияДокумента) День," то же самое.
вооооот
  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Как из виртуальной таблицы типизировать докуме
Ответ #12 - 22. Ноября 2006 :: 14:06
Печать  
Ну вот вроде получилось то, что нужно

Код
Выбрать все
ТекстЗапросаВсе = "
|SELECT
|	Рег.Товар as [Товар $Справочник],
|	Рег.СН as [СН $Справочник],
|	Рег.Склад as [Склад $Справочник],
|	ВсеДоки.IDDoc as [Док $Документ],
|	ВсеДоки.IDDocDef as Док_вид,
|   IsNull(Рег.КоличествоНачальныйОстаток,0) as КоличествоНачОст,
|	IsNull(Рег.КоличествоПриход,0) as КоличествоПриход,
|	IsNull(Рег.КоличествоРасход,0) as КоличествоРасход,
|	IsNull(Рег.КоличествоКонечныйОстаток,0) as КоличествоКонОст
|FROM
|   $РегистрОстаткиОбороты.ОстаткиСклад(:НачПериода,:КонПериода~,
|		Document,ActionsAndPeriodBoundaries, ,
|"	+ ТекстУсловия+",,) As Рег
|
|LEFT JOIN
|	(SELECT		  Жур.IDDoc, Жур.IDDocDef,
|		Жур.Date_Time_IDDoc
|	FROM
|		  _1SJourn Жур
|	WHERE
|		  Жур.Date_Time_IDDoc IN (
|			SELECT 	РегДок.ПозицияДокумента
|			FROM   $РегистрОбороты.ОстаткиСклад(
|				:НачПериода,:КонПериода~, Document, ,
|				"	+ ТекстУсловия+",,) As РегДок )
|	) as ВсеДоки
|ON
|	Рег.ПозицияДокумента =  ВсеДоки.Date_Time_IDDoc
|
|ORDER by Товар,СН,IDDoc
|";

 



В итоговой таблице  по тем СН, у которых нет ни начальных ни конечных остатков, не выводится итоговая строка перед записями с документами. Жаль, но это можно учесть при выводе отчета.

Без _1SJourn  было бы здорово, но не знаю - как это сделать.
  
Наверх
ICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как из виртуальной таблицы типизировать докуме
Ответ #13 - 22. Ноября 2006 :: 14:49
Печать  
Bess_Tolkovaia писал(а) 22. Ноября 2006 :: 14:06:
Без _1SJourn  было бы здорово, но не знаю - как это сделать.

Озадачен Вариант, показанный в (10), у меня работает. Поле "День" там для удобства, на типизацию оно не влияет.
Покажи полный текст (с подставленным ТекстУсловия) и результат отладки.
  

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



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как из виртуальной таблицы типизировать докуме
Ответ #14 - 22. Ноября 2006 :: 14:52
Печать  
может ламерну, а не пробовали сделать нечто вроде
Код
Выбрать все
ТекстЗапросаВсе = "
|SELECT
|	Рег.Товар as [Товар $Справочник],
|	Рег.СН as [СН $Справочник],
|	Рег.Склад as [Склад $Справочник],
|	ВсеДоки.IDDoc as [Док $Документ],
|	ВсеДоки.IDDocDef as Док_вид,
|   IsNull(Рег.КоличествоНачальныйОстаток,0) as КоличествоНачОст,
|	IsNull(Рег.КоличествоПриход,0) as КоличествоПриход,
|	IsNull(Рег.КоличествоРасход,0) as КоличествоРасход,
|	IsNull(Рег.КоличествоКонечныйОстаток,0) as КоличествоКонОст
|FROM
|   $РегистрОстаткиОбороты.ОстаткиСклад(:НачПериода,:КонПериода~,
|		Document,ActionsAndPeriodBoundaries, ,
|"	+ ТекстУсловия+",,) As Рег
|
|[s]LEFT JOIN Жур.Date_Time_IDDoc as ВсеДоки ON right(Рег.ПозицияДокумента,9) =  ВсеДоки.IDDoc[/s]
|LEFT JOIN _1SJourn as ВсеДоки ON right(Рег.ПозицияДокумента,9) =  ВсеДоки.IDDoc
|ORDER by Товар,СН,IDDoc
|"; 

  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать