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


1C++

Сообщений: 39
Зарегистрирован: 02. Декабря 2009
Пол: Женский
Re: Обращение к реквизиту регистра
Ответ #15 - 02. Июля 2010 :: 10:25
Печать  
Ну да а если оставить таки образом то ошибка на  такая
nvalid column name 'Товар'.


|SELECT
|      Cast(Left(Рег.ПозицияДокумента,8) as datetime) [ДатаДок],
|      Рег.ПозицияДокумента [ПозицияДокумента],
|      Жур.IDDOC as [Док $Документ],
|      Жур.IDDocDef as Док_вид,
|   Жур.$ОбщийРеквизит.Подразделение as [Подразделение $Справочник.Подразделение],
|   COALESCE(ДокС.$ОбщийРеквизит.АвторПроведения, ДокА.$ОбщийРеквизит.АвторПроведения) as Автор,
|      "+?(ПериодичностьСтр <> "Пусто" ,"$НачалоПериода." + ПериодичностьСтр + "(Рег.ПозицияДокумента) Период,","")+"
|      Рег.Склад as [Склад $Справочник.Склады],
|      Рег.Товар as [Товар $Справочник.Товары],
|      Рег.ОстатокТовараКонечныйОстаток as Количество,
|      Рег.СтоимостьКонечныйОстаток as Сумма,
////*** брак ***//
|      sum(case when $РегПродажи.ТипБрак = 1
|                  then case when РегПродажи.debkred = 0
|                        then $РегПродажи.Количество
|                  else -$РегПродажи.Количество
|                  end
|            else 0
|      end) as ПродалиБракКоличество,
////***//
|      РегПродажи.Товар as [ТоварПродажи $Справочник.Товары],
|      РегПродажи.Себестоимость as ПродалиНаСумму,
|      РегПродажи.Количество as ПродалиКоличество,
|      ((Рег.ОстатокТовараПриход*100)/РегПродажи.Количество) as ПроцентВКоличестве,
|      ((Рег.СтоимостьПриход*100)/РегПродажи.Себестоимость) as ПроцентВСумме,
|   COALESCE($ДокС.Причина_списания,$ДокА.Причина_составления_Акта ) as [ПричинаСписания $Перечисление.Причина_Акта]
|FROM
|$РегистрОстаткиОбороты.Брак(:НачДата,:КонДата~,Документ,Движения,,
|"+?(ВыбСклад.GetListSize()>0,"(Склад IN (SELECT val FROM #v_selected_sklad))" + ?(ВыбТовар.GetListSize()>0, " and ", ""),"")+"
|"+?(ВыбТовар.GetListSize()>0,"(Товар IN (SELECT val FROM #v_selected_tovar))","")+"
|,(Товар,Склад),) as Рег
|LEFT JOIN _1SJOURN AS Жур (nolock) on Жур.date_time_iddoc=Рег.ПозицияДокумента
//|LEFT JOIN $РегистрОбороты.Продажи(:НачДата, :КонДата~,,,
//|"+?(ВыбТовар.GetListSize()>0,"(Товар IN (SELECT val FROM #v_selected_tovar))","")+"
//|ТипБрак =1,Товар,) as РегПродажи ON Рег.Товар = РегПродажи.Товар
|LEFT JOIN $Регистр.Продажи as РегПродажи ON Рег.Товар = $РегПродажи.Товар
|LEFT JOIN $Документ.Списание as ДокС (nolock) ON ДокС.IDDoc = Жур.IDDoc
|"+?(ВыбСотрудник.Выбран() =1 ,"and (ДокС.$ОбщийРеквизит.АвторПроведения =:Автор)","")+"
|"+?(ПричинаСписания.Выбран() =1 ,"and ($ДокС.Причина_списания =:Причина)","")+"
|LEFT JOIN $Документ.Акт_ТМЦ as ДокА (nolock) ON ДокА.IDDoc= Жур.IDDoc
|"+?(ВыбСотрудник.Выбран() =1 ,"and (ДокА.$ОбщийРеквизит.АвторПроведения =:Автор)","")+"
|"+?(ПричинаСписания.Выбран() =1 ,"and ($ДокА.Причина_составления_Акта =:Причина)","")+"
|WHERE
|(Жур.IDDocDef = $ВидДокумента.Списание or  Жур.IDDocDef = $ВидДокумента.Акт_ТМЦ)
|and Жур.Closed & 1 = 1
|"+?(Подразделение.Выбран() =1 ,"and (Жур.$ОбщийРеквизит.Подразделение =:Подразделение)","")+"
|"+?(ВыбТовар.GetListSize()>0,"($РегПродажи.Товар IN (SELECT val FROM #v_selected_tovar))","")+"
|and РегПродажи.date_time_iddoc between :НачДата and :КонДата~
|and not COALESCE(ДокС.IDDOC, ДокА.IDDOC) is null
|";

я совсем запуталась в этом запросе((((((((((
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Обращение к реквизиту регистра
Ответ #16 - 02. Июля 2010 :: 10:25
Печать  
Eprst писал(а) 02. Июля 2010 :: 10:17:
можно и попроще написать:


Код
Выбрать все
sum($РегПродажи.ТипБрак* $РегПродажи.Количество * (1 -  РегПродажи.debkred * 2) )	 as ПродалиБракКоличество, 


Т.е. ты совершенно точно уверен, что ТипБрак бывает только 0 или 1?  Улыбка

premature optimization is the root of all evil © Дональд Кнут Круглые глаза
  

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Обращение к реквизиту регистра
Ответ #17 - 02. Июля 2010 :: 10:29
Печать  
berezdetsky писал(а) 02. Июля 2010 :: 10:25:
Т.е. ты совершенно точно уверен, что ТипБрак бывает только 0 или 1?  Улыбка

premature optimization is the root of all evil © Дональд Кнут Круглые глаза


ну, судя со слов самого автора, у неё только 0 или 1..Но всё равно, хотя бы от 1 кейса избавится Улыбка
  
Наверх
 
IP записан
 
Anna
Junior Member
**
Отсутствует


1C++

Сообщений: 39
Зарегистрирован: 02. Декабря 2009
Пол: Женский
Re: Обращение к реквизиту регистра
Ответ #18 - 02. Июля 2010 :: 10:31
Печать  
Ну да Тип брак либо 1 либо 0. Либо брак продали либо нет..
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Обращение к реквизиту регистра
Ответ #19 - 02. Июля 2010 :: 10:37
Печать  
Код
Выбрать все
|SELECT
|	Cast(Left(Рег.ПозицияДокумента,8) as datetime) [ДатаДок],
|	Рег.ПозицияДокумента [ПозицияДокумента],
|	Жур.IDDOC as [Док $Документ],
|	Жур.IDDocDef as Док_вид,
|   Жур.$ОбщийРеквизит.Подразделение as [Подразделение $Справочник.Подразделение],
|   COALESCE(ДокС.$ОбщийРеквизит.АвторПроведения, ДокА.$ОбщийРеквизит.АвторПроведения) as Автор,
|	"+?(ПериодичностьСтр <> "Пусто" ,"$НачалоПериода." + ПериодичностьСтр + "(Рег.ПозицияДокумента) Период,","")+"
|	Рег.Склад as [Склад $Справочник.Склады],
|	Рег.Товар as [Товар $Справочник.Товары],
|	Рег.ОстатокТовараКонечныйОстаток as Количество,
|	Рег.СтоимостьКонечныйОстаток as Сумма,
|	РегПродажи.Товар as [ТоварПродажи $Справочник.Товары],
|	РегПродажи.Себестоимость as ПродалиНаСумму,
|	РегПродажи.ПродалиКоличество as ПродалиКоличество,
|	РегПродажи.ПродалиБракКоличество as ПродалиБракКоличество,
|	((Рег.ОстатокТовараПриход*100)/РегПродажи.ПродалиКоличество) as ПроцентВКоличестве,
|	((Рег.СтоимостьПриход*100)/РегПродажи.Себестоимость) as ПроцентВСумме,
|   COALESCE($ДокС.Причина_списания,$ДокА.Причина_составления_Акта ) as [ПричинаСписания $Перечисление.Причина_Акта]
|FROM
|$РегистрОстаткиОбороты.Брак(:НачДата,:КонДата~,Документ,Движения,,
|"+?(ВыбСклад.GetListSize()>0,"(Склад IN (SELECT val FROM #v_selected_sklad))" + ?(ВыбТовар.GetListSize()>0, " and ", ""),"")+"
|"+?(ВыбТовар.GetListSize()>0,"(Товар IN (SELECT val FROM #v_selected_tovar))","")+"
|,(Товар,Склад),) as Рег
|LEFT JOIN _1SJOURN AS Жур (nolock) on Жур.date_time_iddoc=Рег.ПозицияДокумента
|LEFT JOIN (select
|	sum(case when $РегПродажи.ТипБрак = 1
|	then case when РегПродажи.debkred = 0
|		then $РегПродажи.Количество
|		else -$РегПродажи.Количество
|		end
|	else 0
|	end) as ПродалиБракКоличество,
|	sum(case when $РегПродажи.ТипБрак = 0
|	then case when РегПродажи.debkred = 0
|		then $РегПродажи.Количество
|		else -$РегПродажи.Количество
|		end
|	else 0
|	end) as ПродалиКоличество,
|	sum($РегПродажи.Себестоимость) as Себестоимость,
|	$РегПродажи.Товар as Товар
|from $Регистр.Продажи РегПродажи (nolock)
|where "+?(ВыбТовар.GetListSize()>0,"($РегПродажи.Товар IN (SELECT val FROM #v_selected_tovar)) and ","")+"
|	РегПродажи.date_time_iddoc between :НачДата and :КонДата~
|group by $РегПродажи.Товар) as РегПродажи ON Рег.Товар = РегПродажи.Товар
|LEFT JOIN $Документ.Списание as ДокС (nolock) ON ДокС.IDDoc = Жур.IDDoc
|"+?(ВыбСотрудник.Выбран() =1 ,"and (ДокС.$ОбщийРеквизит.АвторПроведения =:Автор)","")+"
|"+?(ПричинаСписания.Выбран() =1 ,"and ($ДокС.Причина_списания =:Причина)","")+"
|LEFT JOIN $Документ.Акт_ТМЦ as ДокА (nolock) ON ДокА.IDDoc= Жур.IDDoc
|"+?(ВыбСотрудник.Выбран() =1 ,"and (ДокА.$ОбщийРеквизит.АвторПроведения =:Автор)","")+"
|"+?(ПричинаСписания.Выбран() =1 ,"and ($ДокА.Причина_составления_Акта =:Причина)","")+"
|WHERE
|(Жур.IDDocDef = $ВидДокумента.Списание or  Жур.IDDocDef = $ВидДокумента.Акт_ТМЦ)
|and Жур.Closed & 1 = 1
|"+?(Подразделение.Выбран() =1 ,"and (Жур.$ОбщийРеквизит.Подразделение =:Подразделение)","")+"
|and not COALESCE(ДокС.IDDOC, ДокА.IDDOC) is null
 



так работает?
  

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


1C++

Сообщений: 39
Зарегистрирован: 02. Декабря 2009
Пол: Женский
Re: Обращение к реквизиту регистра
Ответ #20 - 02. Июля 2010 :: 10:40
Печать  
Да))) Очень довольный ...Пойду документацию читать(стыдно ).....спасибо Вам всем за помощь..
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать