Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Опять Табличное поле или драйвер? Не работают отбо (число прочтений - 1913 )
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Опять Табличное поле или драйвер? Не работают отбо
22. Мая 2006 :: 20:43
Печать  
ры. Чего им надо ума не приложу, может подскажете? В скуль версии все отборы работают на "ура" фоксовский драйвер выпендривается на: ВыбПроизводитель и ВыбМодель ВСЕ остальное отрабатывается без проблем.....

Функция формирующая тескт запроса:
Функция СформироватьТекстЗапроса()
     ЗначВозврата = "";
     локБаза=СоздатьОбъект("ODBCDatabase");
     тДатаТА = НачМесяца(ПолучитьДатуТА());
     ЗначВозврата = "
     |SELECT
     |        $Рег.Партия as [Партия $Справочник.ПартииРемонта],
     |        $Рег.Состояние as [Состояние $Перечисление.СостояниеРемонта],   
     |      $Рег.СЦ as [Склад $Справочник.МестаХранения],
     |      $Рег.ПоследнийДокумент as [Документ $Документ],
     |        Рег.Количество as Количество,
     |
     |      $ПартииРемонта.ОсобоеВнимание as ОсобоеВнимание,
     |      $ПартииРемонта.ПовторныйРемонт as ПовторныйРемонт,
     |      $ПартииРемонта.СогласоватьСтоимость as СогласоватьСтоимость
     |      $ПартииРемонта.КодДефекта as [КодДефекта $Справочник.КодыДефектов],
     |      $ПартииРемонта.КодРемонта as [КодРемонта $Справочник.КодыРемонта],
     |      ПартииРемонта.parentext as [Товар $Справочник.Номенклатура],
     |      $ПартииРемонта.СтатусРемонта as [СтатусРемонта $Справочник.СтатусыРемонта],
     |      $ПартииРемонта.Кл_Наименование as Клиент,
     |      ПартииРемонта.descr as СерийныйНомер,
     |      $ПартииРемонта.ВлНаименование as descrN,
     |      $ПартииРемонта.Производитель as [Производитель $Справочник.Производители],
     |      $ПартииРемонта.Модель as [Модель $Справочник.МоделиПроизводителей],
     |      $ПартииРемонта.ДатаПриема as ДатаПриема,
     |      $ПартииРемонта.СрокВыполнения as СрокВыполнения
     |
     |FROM
     |  $РегистрИтоги.ПартииРемонтаNew as Рег
     |      LEFT JOIN $Справочник.ПартииРемонта as ПартииРемонта ON ПартииРемонта.ID = $Рег.Партия
     |";


     Если глМетаИнфоClasses.ЭтоSQL_Версия() = 0 Тогда
           СтрДатаТА = Шаблон("[ДатаМесяц(тДатаТА)]/[ДатаЧисло(тДатаТА)]/[ДатаГод(тДатаТА)]");
           ЗначВозврата = ЗначВозврата + "
           |WHERE         
           |      Рег.period=>CTOD("""+СтрДатаТА+""")
           |AND
           |      $Рег.Количество>0
           |";             
           _КаталогДанных = ?(Прав(КаталогИБ(), 1) = "\", Лев(КаталогИБ(), СтрДлина(КаталогИБ()) - 1), КаталогИБ());
           _СтрокаПодключения = "DRIVER=Microsoft Visual FoxPro es;Collate=RUSSIAN;";
           локБаза.Соединение(_СтрокаПодключения);
     Иначе
           ЗначВозврата=ЗначВозврата + "
           |WHERE         
           |      Рег.period >= :пДатаПериода
           |AND
           |      $Рег.Количество>0
           |      
           |";             
         Источник.УстановитьТекстовыйПараметр("пДатаПериода",тДатаТА);
           Если СЗВидПоискаПоСН.ТекущаяСтрока() <> 3 Тогда // <не искать>"
                 Если ПустоеЗначение(ВыбСерийныйНомер) = 0 Тогда
                     ВыбСерийныйНомерСоркЛП = СокрЛП(ВыбСерийныйНомер);
                       Если СЗВидПоискаПоСН.ТекущаяСтрока() = 1 Тогда // Содержит
                             ВыбСерийныйНомерСоркЛП= "'%"+ВыбСерийныйНомерСоркЛП+"%'";

                             ЗначВозврата = ЗначВозврата + "
                             |AND  PATINDEX("+ВыбСерийныйНомерСоркЛП+",ПартииРемонта.descr)>0 ";
                       КонецЕсли;
                 КонецЕсли;
           КонецЕсли;
     КонецЕсли;         
     Если ПустоеЗначение(ВыбАппарат) = 0 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND  ПартииРемонта.parentext = :ВыбАппарат";
           Источник.УстановитьТекстовыйПараметр("ВыбАппарат",ВыбАппарат);
     КонецЕсли;
     Если ПустоеЗначение(ВыбСЦ) = 0 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND $Рег.СЦ = :ВыбСЦ            ";
           Источник.УстановитьТекстовыйПараметр("ВыбСЦ",ВыбСЦ);
     КонецЕсли;
     Если ПустоеЗначение(ВыбСостояние) = 0 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND $Рег.Состояние = :ВыбСостояние ";
           Источник.УстановитьТекстовыйПараметр("ВыбСостояние",ВыбСостояние);
     КонецЕсли;
     Если ПустоеЗначение(ВыбСтатусРемонта) = 0 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND $ПартииРемонта.СтатусРемонта = :ВыбСтатусРемонта ";
           Источник.УстановитьТекстовыйПараметр("ВыбСтатусРемонта",ВыбСтатусРемонта);
     КонецЕсли;            
     Если ПустоеЗначение(ВыбПроизводитель) = 0 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND  $ПартииРемонта.Производитель = :ВыбПроизводитель ";
           Источник.УстановитьТекстовыйПараметр("ВыбПроизводитель",ВыбПроизводитель);
     КонецЕсли;
     Если ПустоеЗначение(ВыбМодель) = 0 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND  $ПартииРемонта.Модель = :ВыбМодель ";
           Источник.УстановитьТекстовыйПараметр("ВыбМодель",ВыбМодель);
     КонецЕсли;            
     Если ПустоеЗначение(ВыбКлиент) = 0 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND  ПартииРемонта.parentext = :ВыбКлиент ";
           Источник.УстановитьТекстовыйПараметр("ВыбКлиент",ВыбКлиент);
     КонецЕсли;
     
     Если СЗПовторныйРемонт.ТекущаяСтрока()>1 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND  $ПартииРемонта.ПовторныйРемонт = "+ ?(СЗПовторныйРемонт.ТекущаяСтрока()=2,1,0) +" ";
     КонецЕсли;
     Если СЗСогласоватьСтоимость.ТекущаяСтрока()>1 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND  $ПартииРемонта.СогласоватьСтоимость = "+ ?(СЗСогласоватьСтоимость.ТекущаяСтрока()=2,1,0) +" ";
     КонецЕсли;
     Если СЗОсобоеВнимание.ТекущаяСтрока()>1 Тогда
           ЗначВозврата = ЗначВозврата + "
           |AND  $ПартииРемонта.СогласоватьСтоимость = "+ ?(СЗОсобоеВнимание.ТекущаяСтрока()=2,1,0) +" ";
     КонецЕсли;
     Источник.УстТекстЗапроса(ЗначВозврата);
     Возврат ЗначВозврата;
КонецФункции // СформироватьТекстЗапроса()
почему так?
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать