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


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
UPDATE регистр взаиморасчеты.
04. Декабря 2006 :: 12:50
Печать  
Есть 2 документа РасхНакл иДвижениеСредств.
Добавилось еще одно измерение "Проект" - реквизит спр.сотрудники,в РасхНакл он зовется "Агент".
По РасхНакл регистр обновили так

|UPDATE 
|  $Регистр.ВзаиморасчетыПокупателей
|SET
|  $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес,
|$Регистр.ВзаиморасчетыПокупателей.Проект = case when $ШапкаДок.ПризнакНакладной = :Продажа then isnull($Агенты.Проект, $ПустойИД) else $ПустойИД end   
|FROM
|  $Регистр.ВзаиморасчетыПокупателей  Рег
|INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = Рег.iddoc
|LEFT JOIN $Справочник.Сотрудники Агенты (nolock) ON Агенты.id =  $ШапкаДок.Агент

А в ДвижСредств сложнее,у него в табличной части документы по которым идут Движения в регистр, как выбрать табличную часть документа ДвижСредств и если в табличной части документ РасхНакл взять из него реквизит Агент.Проект и update РегистрВзаиморасчеты?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE регистр взаиморасчеты.
Ответ #1 - 04. Декабря 2006 :: 13:02
Печать  
Код
Выбрать все
|FROM $Регистр.ВзаиморасчетыПокупателей  Рег
|   INNER JOIN $ДокументСтроки.ДвижениеСредств ДС ON ДС.IDDOC = Рег.iddoc AND ДС.LINENO_ = Рег.LINENO_
|   INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = $ДС.Док 


Это если строки ДвижениеСредств привязаны к движениям.
  

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


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: UPDATE регистр взаиморасчеты.
Ответ #2 - 04. Декабря 2006 :: 13:09
Печать  
Движение к строке не привязано.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE регистр взаиморасчеты.
Ответ #3 - 04. Декабря 2006 :: 13:17
Печать  
Тогда ищи сочетание реквизитов, однозначно связывающее движение со строкой. Или перепроводи. Печаль
  

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


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: UPDATE регистр взаиморасчеты.
Ответ #4 - 05. Декабря 2006 :: 05:05
Печать  
Сори, движения привязаны к строке,если я правильно понял так будет правильно

|UPDATE 
|    $Регистр.ВзаиморасчетыПокупателей
|SET
|    $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес,
|    $Регистр.ВзаиморасчетыПокупателей.Проект = case when $ШапкаДок.ПризнакНакладной = :Продажа then isnull($Агенты.Проект, $ПустойИД) else $ПустойИД end   
|FROM $Регистр.ВзаиморасчетыПокупателей  Рег 
|   INNER JOIN $ДокументСтроки.ДвижениеСредств ДС ON ДС.IDDOC = Рег.iddoc AND ДС.LINENO_ = Рег.LINENO_
|   INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = $ДС.Док";
RS.Отладка(1);
RS.УстановитьТекстовыйПараметр("Продажа", Перечисление.ПризнРасхНакл.Продажа);
ТЗ = RS.Выполнить(ТекстЗапроса);
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE регистр взаиморасчеты.
Ответ #5 - 05. Декабря 2006 :: 08:53
Печать  
sv_stas_sv писал(а) 05. Декабря 2006 :: 05:05:
Сори, движения привязаны к строке,если я правильно понял так будет правильно

|UPDATE  
|    $Регистр.ВзаиморасчетыПокупателей
|SET
|    $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес,
|    $Регистр.ВзаиморасчетыПокупателей.Проект = case when $ШапкаДок.ПризнакНакладной = :Продажа then isnull($Агенты.Проект, $ПустойИД) else $ПустойИД end  
|FROM $Регистр.ВзаиморасчетыПокупателей  Рег  
|   INNER JOIN $ДокументСтроки.ДвижениеСредств ДС ON ДС.IDDOC = Рег.iddoc AND ДС.LINENO_ = Рег.LINENO_
|   INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = $ДС.Док";
RS.Отладка(1);
RS.УстановитьТекстовыйПараметр("Продажа", Перечисление.ПризнРасхНакл.Продажа);
ТЗ = RS.Выполнить(ТекстЗапроса);

Так будет синтаксическая ошибка. Таблицу Агенты верни на место.
  

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


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: UPDATE регистр взаиморасчеты.
Ответ #6 - 05. Декабря 2006 :: 09:06
Печать  
А так

|UPDATE   
|    $Регистр.ВзаиморасчетыПокупателей
|SET
|    $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес,
|    $Регистр.ВзаиморасчетыПокупателей.Проект = case when $ШапкаДок.ПризнакНакладной = :Продажа then isnull($Агенты.Проект, $ПустойИД) else $ПустойИД end   
|FROM $Регистр.ВзаиморасчетыПокупателей  Рег   
|   INNER JOIN $ДокументСтроки.ДвижениеСредств ДС ON ДС.IDDOC = Рег.iddoc AND ДС.LINENO_ = Рег.LINENO_
|   INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = $ДС.Док
|LEFT JOIN $Справочник.Сотрудники Агенты (nolock) ON Агенты.id =  $ШапкаДок.Агент";
RS.Отладка(1);
RS.УстановитьТекстовыйПараметр("Продажа", Перечисление.ПризнРасхНакл.Продажа);
ТЗ = RS.Выполнить(ТекстЗапроса);
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE регистр взаиморасчеты.
Ответ #7 - 05. Декабря 2006 :: 10:13
Печать  
А так не скажу, т.к. не знаю ни названия, ни типа реквизита ДвижениеСредств, в котором хранится РасходнаяНакладная. $ДС.Док - замени Док на своё название.
Если его тип - "Документ", перепиши условие как "$ВидДокумента36.РасходнаяНакладная + ШапкаДок.iddoc = $ДС.Док".
Если его тип - "Неопределенный", перепиши условие как "'O1' + $ВидДокумента36.РасходнаяНакладная + ШапкаДок.iddoc = $ДС.Док".
  

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


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: UPDATE регистр взаиморасчеты.
Ответ #8 - 05. Декабря 2006 :: 10:28
Печать  
ДвижениеСредств это документ в табличной части которого есть реквизит ДокументОснование типа "Документ", из которых берутся данные в регистр, меня интерисует что если в табличной части документа ДвижениеСредств есть документ РасхНакл, то update регистр по реквизиту РасхНакл.Агент.Проект.
  
Наверх
 
IP записан
 
sv_stas_sv
Junior Member
**
Отсутствует


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: UPDATE регистр взаиморасчеты.
Ответ #9 - 05. Декабря 2006 :: 11:13
Печать  
Попробовал так

|UPDATE 
|    $Регистр.ВзаиморасчетыПокупателей
|SET
|    $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес,
|    $Регистр.ВзаиморасчетыПокупателей.Проект = case when $ШапкаДок.ПризнакНакладной = :Продажа then isnull($Агенты.Проект, $ПустойИД) else $ПустойИД end   
|FROM $Регистр.ВзаиморасчетыПокупателей  Рег 
|   INNER JOIN $ДокументСтроки.ДвиженияСредств ДС ON ДС.IDDOC = Рег.iddoc AND ДС.LINENO_ = Рег.LINENO_
|   INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = $ДС.РасходнаяНакладная
|   LEFT JOIN $Справочник.Сотрудники Агенты (nolock) ON Агенты.id =  $ШапкаДок.Агент";

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE регистр взаиморасчеты.
Ответ #10 - 05. Декабря 2006 :: 11:29
Печать  
Код
Выбрать все
|   INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on $ВидДокумента36.РасходнаяНакладная + ШапкаДок.iddoc = $ДС.ДокументОснование 

  

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