Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Заполнение реквизита регистра из документов (число прочтений - 2345 )
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Заполнение реквизита регистра из документов
02. Октября 2007 :: 09:54
Печать  
Добрый день!
Не подскажите каким запросом можно заполнить реквизит регистра значением из документов, создавших движение по данному регистру?
Хотя бы логику - постараюсь сам дотумкать Печаль
  
Наверх
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Заполнение реквизита регистра из документов
Ответ #1 - 02. Октября 2007 :: 12:12
Печать  
Код
Выбрать все
update $Регистр.Продажи
set $Регистр.Продажи.МестоПродажи = $Накладные.Склад
from $Регистр.Продажи as Продажи
left join $Документ.РасходнаяНакладная as Накладные on Продажи.iddoc = Накладные.iddoc
 

  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Заполнение реквизита регистра из документов
Ответ #2 - 02. Октября 2007 :: 12:48
Печать  
Огромное спасибо!
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Заполнение реквизита регистра из документов
Ответ #3 - 05. Октября 2007 :: 11:25
Печать  
Ну извините за дополнение.
А как примерно должен выглядеть запрос в том случае,
если у меня есть след. документы: Расходная, ТовЧек - ну в обсчем те доки, в которых есть реквизит, а есть например ПКО, в котором есть ДокОснование а вот в этом ДокОснование есть нужный реквизит, при этом ДокОснование имеет тип "Документ".
Заранее спасибо!
  
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Заполнение реквизита регистра из документов
Ответ #4 - 05. Октября 2007 :: 13:35
Печать  
Еще левое соединение (по аналогии с нужным видом(ами) документа(ов)) по RIGHT(ДокОснование, 9) = Док.iddoc
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Заполнение реквизита регистра из документов
Ответ #5 - 06. Октября 2007 :: 04:54
Печать  
leshik писал(а) 05. Октября 2007 :: 11:25:
Ну извините за дополнение.
А как примерно должен выглядеть запрос в том случае,
если у меня есть след. документы: Расходная, ТовЧек - ну в обсчем те доки, в которых есть реквизит, а есть например ПКО, в котором есть ДокОснование а вот в этом ДокОснование есть нужный реквизит, при этом ДокОснование имеет тип "Документ".
Заранее спасибо!

Код
Выбрать все
update $Регистр.Продажи
set $Регистр.Продажи.МестоПродажи = case j.iddocdef
    when $ВидДокумента.РасходнаяНакладная then $Накладные.Склад
    when $ВидДокумента.ТовЧек then $ТовЧек.Склад
    when $ВидДокумента.ПКО then
	  case left($ПКО.ДокОснование, 4)
		when $ВидДокумента36.РасходнаяНакладная then $РНОснование.Склад
		when $ВидДокумента36.ТовЧек then $ТЧОснование.Склад
		else $ПустойИД
	  end
    else $ПустойИД
end
from $Регистр.Продажи as Продажи
left join _1sjourn as j on Продажи.iddoc = j.iddoc
left join $Документ.РасходнаяНакладная as Накладные on j.iddocdef = $ВидДокумента.РасходнаяНакладная
    and Продажи.iddoc = Накладные.iddoc
left join $Документ.ТовЧек as ТовЧек on j.iddocdef = $ВидДокумента.ТовЧек
    and Продажи.iddoc = ТовЧек.iddoc
left join $Документ.ПКО as ПКО on j.iddocdef = $ВидДокумента.ПКО
    and Продажи.iddoc = ПКО.iddoc
left join $Документ.РасходнаяНакладная as РНОснование on left($ПКО.ДокОснование, 4) = $ВидДокумента36.РасходнаяНакладная
    and РНОснование.iddoc = right($ПКО.ДокОснование, 9)
left join $Документ.ТовЧек as ТЧОснование on left($ПКО.ДокОснование, 4) = $ВидДокумента36.ТовЧек
    and ТЧОснование.iddoc = right($ПКО.ДокОснование, 9)
 


Чтобы расширить количество обрабатываемых видов документов можно добавлять соответствующие предложения left join и case when по аналогии.

PS: to FAQ recomended.
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Заполнение реквизита регистра из документов
Ответ #6 - 06. Октября 2007 :: 17:38
Печать  
+ 1, так и делал, вот в цикле соединение и case:

Код
Выбрать все
ИмяТабл		= "tsc" + СокрЛП(СпрВ.ИмяТаблицыР);
ИмяПоля		= СокрЛП(СпрР.Источник.ПолеТаблицы);
Постфикс	= СпрР.Код + "v";
Алиас		= " as " + ИмяТабл + Постфикс;
ТекстЗапроса	= ТекстЗапроса + "case when left(t." + ИмяПоля + ", 4) = '" + СпрВ.Источник.ИД36_4 + "' then '" + СпрВ.Приемник.ИД36_4 + "' + " + ИмяТабл + Постфикс + ".id else  ";
ТекстСоединения	= ТекстСоединения + " left join " + ИмяТабл + Алиас + " on " + ИмяТабл + Постфикс + ".tid = right(t." + СокрЛП(СпрР.Источник.ПолеТаблицы) + ", 9)";
СчЭл = СчЭл + 1;
 


  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать