База на SQL В журнале используется раскраска строк средствами 1С++ Три вычисляемых колонки с запросами по регистрам Текст процедуры запросов, выбора и позиционирования ниже
Процедура Выполнить(ЧтоИщем) Перем ВыбСтрока; Если ПустаяСтрока(ЧтоИщем)=1 Тогда Предупреждение("Уточните параметр поиска!",10); Возврат; КонецЕсли; Если ЧтоИщем=НомерДокумента Тогда ТекстЗапроса=" |SELECT | Жур.IDDoc as [Док $Документ.Счет], | Жур.IDDocDef as Док_вид, | Жур.DocNo as НомерДок, | $Док.Контрагент as [Контр $Справочник.Контрагенты] |FROM | _1SJourn as Жур |INNER JOIN | $Документ.Счет as Док ON Док.IDDoc = Жур.IDDoc |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.IDDocDef = $ВидДокумента.Счет AND | Жур.DocNo Like "+"'%"+СокрЛП(НомерДокумента)+"%' |"; _RS.УстановитьТекстовыйПараметр("НачДата",НачалоИнтервала); _RS.УстановитьТекстовыйПараметр("КонДата",КонецИнтервала); ИначеЕсли ЧтоИщем=ДатаДокумента Тогда _ДатаДокумента=СокрЛП(ДатаДокумента); Если ЧислоЦифрВПредставленииДаты=8 Тогда ВыбДата=Дата(Лев(_ДатаДокумента,6)+"20"+Прав(_ДатаДокумента,2)); Иначе ВыбДата=Дата(ДатаДокумента); КонецЕсли; Если (ВыбДата>КонецИнтервала) или (ВыбДата<НачалоИнтервала) Тогда Предупреждение("Выберите дату в периоде журнала!",10); Активизировать("ДатаДокумента",0); Возврат; КонецЕсли; ТекстЗапроса=" |SELECT | Жур.IDDoc as [Док $Документ.Счет], | Жур.IDDocDef as Док_вид, | Жур.DocNo as НомерДок, | $Док.Контрагент as [Контр $Справочник.Контрагенты] |FROM | _1SJourn as Жур |INNER JOIN | $Документ.Счет as Док ON Док.IDDoc = Жур.IDDoc |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.IDDocDef = $ВидДокумента.Счет |"; _RS.УстановитьТекстовыйПараметр("НачДата",ВыбДата); _RS.УстановитьТекстовыйПараметр("КонДата",ВыбДата); ИначеЕсли ЧтоИщем=Контрагент Тогда ТекстЗапроса1=" |SELECT | Спр.ID as [Элемент $Справочник.Номенклатура] |FROM | $Справочник.Контрагенты as Спр |WHERE | Спр.Descr Like '%"+СокрЛП(Контрагент)+"%' AND isfolder<>1"; ТекстЗапроса=" |SELECT | Жур.IDDoc as [Док $Документ.Счет], | Жур.IDDocDef as Док_вид, | Жур.DocNo as НомерДок, | $Док.Контрагент as [Контр $Справочник.Контрагенты] |FROM | _1SJourn as Жур |INNER JOIN | $Документ.Счет as Док ON Док.IDDoc = Жур.IDDoc |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.IDDocDef = $ВидДокумента.Счет AND | $Док.Контрагент in ("+ТекстЗапроса1+") |"; _RS.УстановитьТекстовыйПараметр("НачДата",НачалоИнтервала); _RS.УстановитьТекстовыйПараметр("КонДата",КонецИнтервала); ИначеЕсли ЧтоИщем=Сумма Тогда ТекстЗапроса=" |SELECT | Жур.IDDoc as [Док $Документ.Счет], | Жур.IDDocDef as Док_вид, | Жур.DocNo as НомерДок, | $Док.Контрагент as [Контр $Справочник.Контрагенты], | SUM($Док.СуммаСНДС) as Сумма |FROM | _1SJourn as Жур |INNER JOIN | $Документ.Счет as Док ON Док.IDDoc = Жур.IDDoc |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.IDDocDef = $ВидДокумента.Счет |HAVING | SUM($Док.СуммаСНДС) Like "+"'%"+СокрЛП(Сумма)+"%'
//| Жур.DocNo Like "+"'%"+СокрЛП(НомерДокумента)+"%' |"; _RS.УстановитьТекстовыйПараметр("НачДата",НачалоИнтервала); _RS.УстановитьТекстовыйПараметр("КонДата",КонецИнтервала); Иначе Предупреждение("Пока не работает!",10); Возврат; КонецЕсли; //_RS.Отладка(); ТЗ=_RS.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ_КолСтрок=ТЗ.КоличествоСтрок(); Если ТЗ_КолСтрок=0 Тогда Предупреждение("Вхождений не найдено..."); Возврат; КонецЕсли; ТЗ.ВидимостьКолонки("Док_Вид,НомерДок",0); ТЗ.УстановитьПараметрыКолонки(1,,,,"Документ",43,,1); ТЗ.УстановитьПараметрыКолонки(4,,,,"Контрагент",40,,1); Если ТЗ.ВыбратьСтроку(ВыбСтрока,"Выберите документ ["+ТЗ_КолСтрок+"]")=1 Тогда Конт.Активизировать("НомерДок",0); Конт.АктивизироватьОбъект(ТЗ.ПолучитьЗначение(ВыбСтрока,1)); КонецЕсли; _RS.Закрыть(); Форма.Закрыть(); КонецПроцедуры
|