ры. Чего им надо ума не приложу, может подскажете? В скуль версии все отборы работают на "ура" фоксовский драйвер выпендривается на: ВыбПроизводитель и ВыбМодель ВСЕ остальное отрабатывается без проблем.....
Функция формирующая тескт запроса: Функция СформироватьТекстЗапроса() ЗначВозврата = ""; локБаза=СоздатьОбъект("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) +" "; КонецЕсли; Источник.УстТекстЗапроса(ЗначВозврата); Возврат ЗначВозврата; КонецФункции // СформироватьТекстЗапроса() почему так?
|