Имя: Пароль:
1C
1C 7.7
v7: Запрос (переделка непрямого в прмой)
Ø (Mikeware 22.02.2013 13:09)
0 bananan
 
22.02.13
13:03
Всем еще раз добрый день!
Эта ветка - продолжение предыдушей (глюкнлуа она что-то...)
Так вот благодяря  trad был написан такой код запроса:
   ТекстЗапроса = "
   |SELECT
   |    Данные.IDDoc as [Документ $Документ]
   |,   Данные.IdDocDef as Документ_вид
   |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
   |,   Данные.lineno_ as НомерСтроки_
   |,   Данные.Автор as [Автор $Справочник.Сотрудники]
   |,   'має ціну нижчу за прихідну' as Ошибка
   |from (
   |   SELECT
   |       Жур.IDDoc as IDDoc
   |   ,   Жур.IdDocDef as IdDocDef
   |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
   |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
   |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
   |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
   |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
   |   ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
   |   ,   $ОбщийРеквизит.Автор as Автор
   |   FROM _1SJourn as Жур (nolock)
   |   Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
   |   Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
   |   left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
   |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
   |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
   |) Данные
   |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
   |";                  
Этот код отбирает документы в которых докцена<прихцена...
Есть еще два типа ошибок..
Вот сейчас надо придумать как отлавливать не установлена цена категории товара...
в функции глобального модуля это делается так:
   Если кат.Выбран()=1 Тогда
           минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1)));
            Сообщить(""+Конт.ТМЦ+ ", минцена= "+минцена);
           Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда
               минцена=минцена.Получить(Конт.ДатаДок);
           КонецЕсли;
           минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок));
           Если минцена=0 Тогда
               //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано);
               ТЗ.НоваяСтрока();    
               ТЗ.Товар   = Конт.ТМЦ;                  
               ТЗ.Ошибка  = " не встановлена ціна категорії ";
               ТЗ.Стр     = Конт.НомерСтроки;
               ТЗ.Автор   = Конт.Отпустил;
           КонецЕсли;
Теперь даный код надо "засунуть" в прямой запрос...
1 Mikeware
 
22.02.13
13:09
та ветка еще жива.
2 Mikeware
 
22.02.13
13:10
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший