Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема помогите начинающему (число прочтений - 1811 )
FIXER
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 12
Зарегистрирован: 17. Марта 2014
помогите начинающему
17. Марта 2014 :: 03:06
Печать  
Имеется база 1с7.7 самописная, нужно выбрать из регистра "резервы товаров" измерение ПоСчету, в котором содержится документ Счет.А так же выбрать из документа Счет  из его шапки клиента "Клиент", чтобы отфильтровать выборку только по выбранному клиенту
                                       RS.УложитьСписокОбъектов(Клиент1, "#Группа", "Клиенты");
                             ТекстЗапроса = "
                             |SELECT
                             |      Рег.Товар as [Товар $Справочник.Товары],
                             |      Рег.ПоСчету as [ДокС $Документ.Счет],
                       //      |       Рег.ПоСчету.Клиент as [Клиент $Справочник.Клиенты],
                             |      Рег.РезервТовараПриход as Приход,
                             |      Рег.РезервТовараРасход as Расход
                             |FROM
                             |      $РегистрОстаткиОбороты.РезервыТоваров(:НачДата, :КонДата~,,,
                             |                               ,Клиент IN (SELECT Val FROM #Группа),
                             |                              (Товар,ПоСчету) ,(РезервТовара)) as Рег";

не работает именно закомменченая строка, подскажите пожалуйста чем её заменить, если не ошибаюсь через объединение таблиц эта проблема решается?
  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: помогите начинающему
Ответ #1 - 17. Марта 2014 :: 03:17
Печать  
Судя по строке "Клиент IN (SELECT Val FROM #Группа)", Клиент является измерением регистра. Фильтрация происходит непосредственно в запросе, а вам нужно всего лишь добавить клиента в выборку

ТекстЗапроса = "
|SELECT
| Рег.Товар as [Товар $Справочник.Товары],
| Рег.ПоСчету as [ДокС $Документ.Счет],
| Рег.Клиент as [Клиент $Справочник.Клиенты],
| Рег.РезервТовараПриход as Приход,
| Рег.РезервТовараРасход as Расход
|FROM
| $РегистрОстаткиОбороты.РезервыТоваров(:НачДата, :КонДата~,,,
|                                ,Клиент IN (SELECT Val FROM #Группа),
|                                (Товар,Клиент,ПоСчету) ,(РезервТовара)) as Рег
|";

Объединение таблиц нужно если есть необходимость наложения условия или выборки по каким-то реквизитам, не являющимся измерениями регистра. По какому-то доп. реквизиту документа "Счет" например или доп. реквизиту клиента
  
Наверх
 
IP записан
 
FIXER
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 12
Зарегистрирован: 17. Марта 2014
Re: помогите начинающему
Ответ #2 - 17. Марта 2014 :: 03:20
Печать  
Именно это и интересует наложение условия на реквизит измерения ПоСчету, в нём документ Счет из которого мне нужно получить из шапки Клиента
« Последняя редакция: 17. Марта 2014 :: 04:24 - FIXER »  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: помогите начинающему
Ответ #3 - 17. Марта 2014 :: 05:50
Печать  
ТекстЗапроса = "
|SELECT
| Рег.Товар as [Товар $Справочник.Товары],
| Рег.ПоСчету as [ДокС $Документ.Счет],
| $док.Клиент [КлиентПоСчету $Справочник.Клиенты],
| Рег.РезервТовараПриход as Приход,
| Рег.РезервТовараРасход as Расход
|FROM
| $РегистрОстаткиОбороты.РезервыТоваров(:НачДата, :КонДата~,,,
|                                ,Клиент IN (SELECT Val FROM #Группа),
|                                (Товар,ПоСчету) ,(РезервТовара)) as Рег
|       inner join $Документ.Счет док (nolock) on док.iddoc = Рег.ПоСчету
|                         AND $док.Клиент IN (SELECT Val FROM #КлиентыПоСчету)
|";
  
Наверх
 
IP записан
 
FIXER
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 12
Зарегистрирован: 17. Марта 2014
Re: помогите начинающему
Ответ #4 - 17. Марта 2014 :: 06:35
Печать  
Спасибо большое, решил проблему практически так же как и вы предложили, только INNER JOIN вставил во FROM
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать