|
v7: Запрос - СЗ документов не имеющих подчиненных. | ☑ | ||
---|---|---|---|---|
0
Bagirius
22.10.12
✎
12:22
|
Есть Документ вида X. У него могут быть подчиненные документы вида Y. Нужно запросом выбрать все документы вида X, у которых нет подчиненного вида Y.
Что-то не могу догнать как. Перебирать все доки в цикле, долго. Т.к. Период большой (за всю историю базы). |
|||
1
Изучаю1С8
22.10.12
✎
12:24
|
1с++?
|
|||
2
Bagirius
22.10.12
✎
12:25
|
есть такое чудо.
|
|||
3
Bagirius
22.10.12
✎
12:26
|
А как прямой запрос сделать такой???
|
|||
4
Изучаю1С8
22.10.12
✎
12:42
|
У меня есть функция на основе класа ПрямойЗапрос
Функция глВернутьПодчиненныеДокументы(Конт,ВидПодчиненногоДокумента="") Экспорт ТекстЗапроса = " |ВЫБРАТЬ | | ПодчДок.ТекущийДокумент [Док $Документ], | ПодчДок.ВидДокумента КАК Док_вид, | ПодчДок.ДатаДокумента [ДатаДок $Дата], | ПодчДок.НомерДокумента [НомерДок $Число] | |ИЗ $ПодчиненныеДокументы.Потомки(:Док,:НачДата,:КонДата) КАК ПодчДок |"; Если ПустоеЗначение(ВидПодчиненногоДокумента) = 0 Тогда ТекстЗапроса = ТекстЗапроса + " |ГДЕ ПодчДок.ВидДокумента = :ВидДокумента."+ВидПодчиненногоДокумента+" |"; КонецЕсли; глЗапросВернутьПодчиненныеДокументы.Текст = ТекстЗапроса; глЗапросВернутьПодчиненныеДокументы.УстановитьТекстовыйПараметр("НачДата",НачГода(ТекущаяДата())); глЗапросВернутьПодчиненныеДокументы.УстановитьТекстовыйПараметр("КонДата",ТекущаяДата()); глЗапросВернутьПодчиненныеДокументы.УстановитьТекстовыйПараметр("Док",Конт); ИтТз = глЗапросВернутьПодчиненныеДокументы.Выполнить("ИндексированнаяТаблица"); Возврат ИтТз; КонецФункции // глВернутьПодчиненныеДокументы |
|||
5
Изучаю1С8
22.10.12
✎
12:45
|
Хотя нет, тут проще руками написать а не смотреть тек у кого табличка пустая.
|
|||
6
Mikeware
22.10.12
✎
12:46
|
(4) немножко полнее:
//============================== // Возвращает ТЗ подчиненных документов Функция глВыбратьПодчиененные(ДокОснование,ВидПодчДокумента="", НачДата="",КонДата="", флПроведенные="") Экспорт ТекстЗапроса=" |SELECT | distinct | Жур.IDDoc [Док $Документ], | Жур.IDDocDef Док_вид |FROM | _1SJourn Жур (nolock) |INNER JOIN | _1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND | Отбор. MDID = 0 AND | Отбор.ParentVal = :ВыбОснование* "; Если ПустоеЗначение(НачДата)=0 Тогда ТекстЗапроса=ТекстЗапроса+" | AND Отбор.Child_Date_Time_IDDoc >:НачДата "; КонецЕсли; Если ПустоеЗначение(КонДата)=0 Тогда ТекстЗапроса=ТекстЗапроса+" | AND Отбор.Child_Date_Time_IDDoc < :КонДата~"; КонецЕсли; ТекстЗапроса=ТекстЗапроса+" |where Жур.ismark=0"; Если ПустоеЗначение(флПроведенные)=0 Тогда ТекстЗапроса=ТекстЗапроса+" | and Жур.closed&1=:Проведенные"; КонецЕсли; Если ПустоеЗначение(ВидПодчДокумента)=0 Тогда ТекстЗапроса=ТекстЗапроса+" | and Жур.IDDocDef=$ВидДокумента."+ВидПодчДокумента; КонецЕсли; ТекстЗапроса=ТекстЗапроса+" |order by Жур.iddoc |"; Если ПустоеЗначение(НачДата)=0 Тогда рс.УстановитьТекстовыйПараметр("НачДата", НачДата); КонецЕсли; Если ПустоеЗначение(КонДата)=0 Тогда рс.УстановитьТекстовыйПараметр("КонДата",КонДата); КонецЕсли; рс.УстановитьТекстовыйПараметр("ВыбОснование",ДокОснование); Если ПустоеЗначение(флПроведенные)=0 Тогда рс.УстановитьТекстовыйПараметр("Проведенные",флПроведенные); КонецЕсли; результат=рс.ВыполнитьИнструкцию(текстЗапроса); Возврат результат; КонецФункции // глВыбратьПодчиененные |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |