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



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Помогите начинающему
21. Марта 2008 :: 08:19
Печать  
Есть такой запрос
ТекстЗапроса = "
     |SELECT Цены.PARENTEXT [Товар $Справочник.Номенклатура]
     |      , $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата) СтараяЦена
     |      , '' Цена
     |      , $ПоследнееЗначение.Цены.Алгоритм(Цены.ID, :ВыбДата) Алгоритм";
     |      , $ДокСтроки.Цена База
     |FROM $ДокументСтроки." + ДокументОснование.Вид() + " AS ДокСтроки
     |      FULL OUTER JOIN $Справочник.Цены AS Цены
     |      ON $ДокСтроки.Товар = Цены.PARENTEXT
     |WHERE (ДокСтроки.IDDOC = :Док)
     |      AND ($Цены.ТипЦен = :ТипЦен)
     |      AND ($Цены.Фирма = :ВыбФирма)
|";

Цель сформировать ТЗ, в которой будет список всех товаров из документа и значения подчиненного справочника Цены.

Но если в подчиненном справочнике нет элемента, соответствующему условию, то и товар не попадает в ТЗ.

Как мне изменить запрос, что бы в ТЗ всегда был полный список товаров из документа, а значения цен - если есть элемент подчиненного справочника - то значение, если нет - то 0.
  
Наверх
ICQ  
IP записан
 
Bagirius
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: Помогите начинающему
Ответ #1 - 21. Марта 2008 :: 08:46
Печать  
Как вариант, реализовал таким образом

ДокументОснование.ВыбратьСтроки();
Пока ДокументОснование.ПолучитьСтроку() = 1 Цикл
     Если ТЗ.НайтиЗначение(ДокументОснование.Товар,,"Товар") = 0 Тогда
           ТЗ.НоваяСтрока();
           ТЗ.Товар = ДокументОснование.Товар;
           Если ДокументОснование.Вид() = "ПриходнаяБух" Тогда
                 ТЗ.База = ДокументОснование.ЦенаБРБ;
           Иначе
                 ТЗ.База = ДокументОснование.Цена;
           КонецЕсли;
     КонецЕсли;
КонецЦикла;

Но не ужели нельзя в запросе сделать сразу выборку нужного вида?
  
Наверх
ICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите начинающему
Ответ #2 - 21. Марта 2008 :: 09:36
Печать  
Bagirius писал(а) 21. Марта 2008 :: 08:19:
Как мне изменить запрос, что бы в ТЗ всегда был полный список товаров из документа, а значения цен - если есть элемент подчиненного справочника - то значение, если нет - то 0.

Цитата:
|FROM $ДокументСтроки." + ДокументОснование.Вид() + " AS ДокСтроки
|    LEFT OUTER JOIN $Справочник.Цены AS Цены
|        ON $ДокСтроки.Товар = Цены.PARENTEXT AND ($Цены.ТипЦен = :ТипЦен) AND ($Цены.Фирма = :ВыбФирма)
|WHERE (ДокСтроки.IDDOC = :Док)
  

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



Сообщений: 135
Зарегистрирован: 19. Февраля 2008
Пол: Мужской
Re: Помогите начинающему
Ответ #3 - 21. Марта 2008 :: 12:52
Печать  
Спасибо, но немного пришлось изменить, т.к. Товар не заполнялся, т.к. у несуществующего элемента справочника Цена, нет Владельца

Вот что получилось

ТекстЗапроса = "
     |SELECT Номенклатура.ID [Товар $Справочник.Номенклатура]
     |      , $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата) СтараяЦена
     |      , '' Цена
     |      , $ПоследнееЗначение.Цены.Алгоритм(Цены.ID, :ВыбДата) Алгоритм";
     |      , $ДокСтроки.Цена База
     |FROM $Справочник.Номенклатура AS Номенклатура
     |      LEFT OUTER JOIN $Справочник.Цены AS Цены
     |      ON Номенклатура.ID = Цены.PARENTEXT AND ($Цены.ТипЦен = :ТипЦен) AND ($Цены.Фирма = :ВыбФирма)
     |      LEFT OUTER JOIN $ДокументСтроки." + ДокументОснование.Вид() + " AS ДокСтроки
     |      ON Номенклатура.ID = $ДокСтроки.Товар
     |WHERE (ДокСтроки.IDDOC = :Док)
     |";
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать