Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Документ из $РегистрОстаткиОбороты (число прочтений - 6134 )
Bibr
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Июня 2009
Документ из $РегистрОстаткиОбороты
10. Июня 2009 :: 13:59
Печать  
Имею регистр Взаиморасчеты с измерением Клиент и ресурсами СуммаВалютная, СуммаБазовая.
Нужно получить отчет по клиентам с выводом: начальный остаток, приходы/расходы (документ, суммаБаз, суммаВал), конечный остаток.
Шел по принципу усложнения.
Сейчас дошел до этого:

Код
Выбрать все
	ТекстЗапроса = ТекстЗапроса+"
	|SELECT  
	|	Рег.IDDoc as [Док $Документ],
	|	Рег.IDDocDef as Док_вид,
	|	Рег.Debkred as приход,
	|	Рег.Клиент as [Клиент $Справочник.Клиенты],
	|	Рег.СуммаБазоваяНачальныйОстаток as БазоваяНачОст,
	|	Рег.СуммаБазоваяПриход as БазоваяПриход,
	|	Рег.СуммаБазоваяРасход as БазоваяРасход,
	|	Рег.СуммаБазоваяКонечныйОстаток as БазоваяКонОст,
	|	Рег.СуммаВалютнаяНачальныйОстаток as ВалютнаяНачОст,
	|	Рег.СуммаВалютнаяПриход as ВалютнаяПриход,
	|	Рег.СуммаВалютнаяРасход as ВалютнаяРасход,
	|	Рег.СуммаВалютнаяКонечныйОстаток as ВалютнаяКонОст
	|FROM
	|	$РегистрОстаткиОбороты.Взаиморасчеты(:НачДата,:КонДата~,,,
	|                  INNER JOIN _1Sjourn as Жур ON Жур.IDDoc = Рег.IDDoc,
	|		Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~";
	Если ВыбКлиент.Выбран() = 1 Тогда
		Если ВыбКлиент.ЭтоГруппа()=1 Тогда
			ТекстЗапроса=ТекстЗапроса+"
			| AND Клиент IN (SELECT Val FROM #ВыбКлиент) ";
			Запрос.УложитьСписокОбъектов(ВыбКлиент, "#ВыбКлиент", "Клиенты");
		Иначе
			ТекстЗапроса=ТекстЗапроса+"
			| AND Клиент = :ВыбКлиент ";
			Запрос.УстановитьТекстовыйПараметр("ВыбКлиент", ВыбКлиент.ТекущийЭлемент());
		КонецЕсли;
	КонецЕсли;
	ТекстЗапроса=ТекстЗапроса+",(Клиент), (СуммаБазовая, СуммаВалютная)) as Рег  ";
	Запрос.УстановитьТекстовыйПараметр("НачДата", НачДата);
	Запрос.УстановитьТекстовыйПараметр("КонДата", КонДата);
 



не проходит.
State 42000, native 107, message [Microsoft][ODBC SQL Server Driver][SQL Server]The column prefix 'Рег' does not match with a table name or alias name used in the query.

подозреваю, что дело здесь в
INNER JOIN _1Sjourn as Жур ON Жур.IDDoc = Рег.IDDoc
пробовал убирать РЕГ - тоже не идет.

помогите пожалуйста.
  
Наверх
 
IP записан
 
Bibr
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Июня 2009
Re: Документ из $РегистрОстаткиОбороты
Ответ #1 - 10. Июня 2009 :: 14:00
Печать  
Код
Выбрать все
SELECT  
	Рег.IDDoc as [Док $Документ],
	Рег.IDDocDef as Док_вид,
	Рег.Debkred as приход,
	Рег.Клиент as [Клиент $Справочник.Клиенты],
	Рег.СуммаБазоваяНачальныйОстаток as БазоваяНачОст,
	Рег.СуммаБазоваяПриход as БазоваяПриход,
	Рег.СуммаБазоваяРасход as БазоваяРасход,
	Рег.СуммаБазоваяКонечныйОстаток as БазоваяКонОст,
	Рег.СуммаВалютнаяНачальныйОстаток as ВалютнаяНачОст,
	Рег.СуммаВалютнаяПриход as ВалютнаяПриход,
	Рег.СуммаВалютнаяРасход as ВалютнаяРасход,
	Рег.СуммаВалютнаяКонечныйОстаток as ВалютнаяКонОст
FROM
	$РегистрОстаткиОбороты.Взаиморасчеты(:НачДата,:КонДата~,,,
                               INNER JOIN _1Sjourn as Жур ON Жур.IDDoc = Рег.IDDoc,
								Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
 								AND Клиент IN (SELECT Val FROM #ВыбКлиент)
								,(Клиент), (СуммаБазовая, СуммаВалютная)) as Рег  
 



это конечный код
  
Наверх
 
IP записан
 
Bibr
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Июня 2009
Re: Документ из $РегистрОстаткиОбороты
Ответ #2 - 10. Июня 2009 :: 14:02
Печать  
если пытаюсь делать INNER JOIN и Where вне тела РегистрОстаткиОбороты тоже не проходит
  
Наверх
 
IP записан
 
Bibr
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Июня 2009
Re: Документ из $РегистрОстаткиОбороты
Ответ #3 - 10. Июня 2009 :: 14:14
Печать  
Еще момент.
Основная статья, по которой я сейчас осваиваю прямые запросы -
http://www.kb.mista.ru/article.php?id=86

В ней есть строки
Код
Выбрать все
|    $РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата, :КонДата~,,,
|                               Склад = :ВыбСклад,
|                               (Товар), (Сумма, Количество)) as Рег"; 


насколько я понимаю, это неверно - судя по синтаксису "РегистрОстаткиОбороты" одной  запятой после :КонДата~ не хватает. Или я не прав?
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Документ из $РегистрОстаткиОбороты
Ответ #4 - 10. Июня 2009 :: 15:11
Печать  
попробуй внимательно расставить запятые

$РегистрОстаткиОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][, <Периодичность>][,<МетодДополнения>][,        <Соединение>][,        <Условие>][,        <Измерение>][,<Ресурс>]
) [as <Алиас>]

в твоем последнем коде действительно не хватает запятой
  
Наверх
ICQ  
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: Документ из $РегистрОстаткиОбороты
Ответ #5 - 11. Июня 2009 :: 03:27
Печать  
Bibr писал(а) 10. Июня 2009 :: 14:00:
Код
Выбрать все
SELECT  
	Рег.IDDoc as [Док $Документ],
	Рег.IDDocDef as Док_вид,
	Рег.Debkred as приход,
	Рег.Клиент as [Клиент $Справочник.Клиенты],
	Рег.СуммаБазоваяНачальныйОстаток as БазоваяНачОст,
	Рег.СуммаБазоваяПриход as БазоваяПриход,
	Рег.СуммаБазоваяРасход as БазоваяРасход,
	Рег.СуммаБазоваяКонечныйОстаток as БазоваяКонОст,
	Рег.СуммаВалютнаяНачальныйОстаток as ВалютнаяНачОст,
	Рег.СуммаВалютнаяПриход as ВалютнаяПриход,
	Рег.СуммаВалютнаяРасход as ВалютнаяРасход,
	Рег.СуммаВалютнаяКонечныйОстаток as ВалютнаяКонОст
FROM
	$РегистрОстаткиОбороты.Взаиморасчеты(:НачДата,:КонДата~,,,
                               INNER JOIN _1Sjourn as Жур ON Жур.IDDoc = Рег.IDDoc,
								Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
 								AND Клиент IN (SELECT Val FROM #ВыбКлиент)
								,(Клиент), (СуммаБазовая, СуммаВалютная)) as Рег  
 



это конечный код


« Последняя редакция: 11. Июня 2009 :: 04:34 - leov-001 »  
Наверх
 
IP записан
 
Bibr
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Июня 2009
Re: Документ из $РегистрОстаткиОбороты
Ответ #6 - 11. Июня 2009 :: 05:10
Печать  
ol писал(а) 10. Июня 2009 :: 15:11:
попробуй внимательно расставить запятые

$РегистрОстаткиОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][, <Периодичность>][,<МетодДополнения>][,        <Соединение>][,        <Условие>][,        <Измерение>][,<Ресурс>]
) [as <Алиас>]

в твоем последнем коде действительно не хватает запятой


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


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Июня 2009
Re: Документ из $РегистрОстаткиОбороты
Ответ #7 - 11. Июня 2009 :: 05:13
Печать  
leov-001 писал(а) 11. Июня 2009 :: 03:27:
Рег.IDDoc,


и?
я в первом посте это же и написал - проблема скорее всего в Рег.IDDoc.
только ни с Рег ни без него не выходит. а как еще обратиться к документу я не понимаю.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Документ из $РегистрОстаткиОбороты
Ответ #8 - 11. Июня 2009 :: 06:36
Печать  
А ничего что:
Цитата:
ПозицияДокумента - тип char(23); строка в формате date_time_iddoc (8+6+9); существует только в том случае, если указана периодичность Документ;
ВидДокумента - тип int; идентификатор вида документа; существует только в том случае, если указана периодичность Документ.
(Ц) дока на 1С++
  
Наверх
ICQ  
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Документ из $РегистрОстаткиОбороты
Ответ #9 - 11. Июня 2009 :: 07:29
Печать  
Bibr писал(а) 11. Июня 2009 :: 05:10:
ol писал(а) 10. Июня 2009 :: 15:11:
попробуй внимательно расставить запятые

$РегистрОстаткиОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][, <Периодичность>][,<МетодДополнения>][,        <Соединение>][,        <Условие>][,        <Измерение>][,<Ресурс>]
) [as <Алиас>]

в твоем последнем коде действительно не хватает запятой


последний код не мой, а из статьи. читай внимательней


извини, хотел помочь
  
Наверх
ICQ  
IP записан
 
Bibr
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Июня 2009
Re: Документ из $РегистрОстаткиОбороты
Ответ #10 - 11. Июня 2009 :: 08:55
Печать  
ol писал(а) 11. Июня 2009 :: 07:29:
извини, хотел помочь


Да ничего.
Просто начинаю уже злиться - не получается.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Документ из $РегистрОстаткиОбороты
Ответ #11 - 11. Июня 2009 :: 09:18
Печать  
Результат ВТ РегистрОстаткиОбороты не содержит полей IDDoc, IDDocDef, Debkred.
Внутри ВТ РегистрОстаткиОбороты нет доступа к полям IDDoc, Date_Time_IDDoc
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Документ из $РегистрОстаткиОбороты
Ответ #12 - 11. Июня 2009 :: 09:34
Печать  
Код
Выбрать все
	ТекстЗапроса = "
	|SELECT
	|	right(Рег.ПозицияДокумента,9) as [Док $Документ],
	|	Рег.ВидДокумента as Док_вид,
	|	Рег.Клиент as [Клиент $Справочник.Клиенты],
	|	Рег.СуммаБазоваяНачальныйОстаток as БазоваяНачОст,
	|	Рег.СуммаБазоваяПриход as БазоваяПриход,
	|	Рег.СуммаБазоваяРасход as БазоваяРасход,
	|	Рег.СуммаБазоваяКонечныйОстаток as БазоваяКонОст,
	|	Рег.СуммаВалютнаяНачальныйОстаток as ВалютнаяНачОст,
	|	Рег.СуммаВалютнаяПриход as ВалютнаяПриход,
	|	Рег.СуммаВалютнаяРасход as ВалютнаяРасход,
	|	Рег.СуммаВалютнаяКонечныйОстаток as ВалютнаяКонОст
	|FROM $РегистрОстаткиОбороты.Взаиморасчеты(:НачДата, :КонДата~, Документ,,,
	|	 /*ОтборПоКлиенту*/,
	|	 (Клиент), (СуммаБазовая, СуммаВалютная)
	|     ) as Рег
	|order by Рег.Клиент, Рег.ПозицияДокумента
	|";
	Если ВыбКлиент.Выбран() = 1 Тогда
		Если ВыбКлиент.ЭтоГруппа()=1 Тогда
			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"/*ОтборПоКлиенту*/","Клиент IN (SELECT Val FROM #ВыбКлиент)");
			Запрос.УложитьСписокОбъектов(ВыбКлиент, "#ВыбКлиент", "Клиенты");
		Иначе
			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"/*ОтборПоКлиенту*/","Клиент = :ВыбКлиент");
			Запрос.УстановитьТекстовыйПараметр("ВыбКлиент", ВыбКлиент);
		КонецЕсли;
	КонецЕсли;
	Запрос.УстановитьТекстовыйПараметр("НачДата", НачДата);
	Запрос.УстановитьТекстовыйПараметр("КонДата", КонДата);
 

  

1&&2&&3
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Документ из $РегистрОстаткиОбороты
Ответ #13 - 11. Июня 2009 :: 09:44
Печать  
http://www.1cpp.ru/docum/1cpp.chm.zip

первоисточник
  
Наверх
ICQ  
IP записан
 
Bibr
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Июня 2009
Re: Документ из $РегистрОстаткиОбороты
Ответ #14 - 11. Июня 2009 :: 11:11
Печать  
Спасибо огромное!! Начал понимать!

Просто исходя из этого http://www.script-coding.info/v77tables.html#3.4.2.4.
я решил, что в РегистрОстаткиОбороты используется макроподстановка типа и что в результирующей таблице эти поля будут
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать