|   |   | 
| 
 | v7: Запрос | ☑ | ||
|---|---|---|---|---|
| 0
    
        galanUprCom 19.03.13✎ 11:36 | 
        Имеются 2 объекта
  1. Справочник договоров 2. Приходная с реквизитом Договор. Необходимо получить список договор по которым не было создано Приходных(т.е. договоров которые не встречаются в Приходной). Использрвать компоненту 1с++. Как сделать встроенным языком запросом? | |||
| 1
    
        galanUprCom 19.03.13✎ 11:37 | 
        Имеются 2 объекта 
  1. Справочник договоров 2. Приходная с реквизитом Договор. Необходимо получить список договоров по которым не было создано Приходных(т.е. договоров которые не встречаются в Приходной). Использрвать компоненту 1с++ нельзя! . Как сделать встроенным языком запросом? | |||
| 2
    
        GLazNik 19.03.13✎ 11:39 | 
        (0) одним встроенным запросом похоже не обойтись. думается мне что нужно получить отдельно договора, отдельно договора в документах.     | |||
| 3
    
        galanUprCom 19.03.13✎ 11:46 | 
        (2) Это получается 2-ной цикл(по договорам и протом по документам). Есть другие варианты.     | |||
| 4
    
        Ёпрст гуру 19.03.13✎ 11:47 | 
        2 запроса и привет, самое простое     | |||
| 5
    
        Ёпрст гуру 19.03.13✎ 11:47 | 
        можно и одним чорным обойтись.     | |||
| 6
    
        galanUprCom 19.03.13✎ 11:49 | 
        (5) Через 1c++ нельзя. А 2 запроса не предполагает потом 2-ной цикл?     | |||
| 7
    
        Ёпрст гуру 19.03.13✎ 11:50 | 
        (6) про прямой запрос речь никто не ведёт.
  Никаких циклов нет | |||
| 8
    
        galanUprCom 19.03.13✎ 11:56 | 
        (7) Это как?     | |||
| 9
    
        Ёпрст гуру 19.03.13✎ 12:00 | 
        Чего как ?
  Если двумя запросами - то, первый - запрос по документам с группировкой по договору, второй - запрос по справочнику с фильтром по результатам первого если всё в одном - то запрос по справочнику с фильтром по внешней функции, или так попробовать соединить и условие на пустое значение договора в документе, не помню ужо, работает ли так чорный запрос или нет | |||
| 10
    
        galanUprCom 19.03.13✎ 12:04 | 
        (9) второй - запрос по справочнику с фильтром по результатам первого? Это как?     | |||
| 11
    
        Ёпрст гуру 19.03.13✎ 12:13 | 
        результат запроса выгрузить в ТЗ, ТЗ в СП, СП использовать в качестве фильтра     | |||
| 12
    
        galanUprCom 19.03.13✎ 12:43 | 
        Спасибо, получислоь след.:
  Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(ДоговораИспользуемые) |Период с ДатаНач по ДатаКон; |ТекущийДокументДоговор = Документ.РасходнаяАвто.Договор; |Группировка ТекущийДокументДоговор; |УСЛОВИЕ(ТекущийДокументДоговор.ДатаОкончания<ДатаПо); |" ;//}}ЗАПРОС // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТаблЗн=СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(ТаблЗн); СписокЗн=СоздатьОбъект("СписокЗначений"); ТаблЗн.Выгрузить(СписокЗн); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(ДоговораНеИспользуемые) |Договор = Справочник.Договора.ТекущийЭлемент; |Группировка Договор; |//УСЛОВИЕ(Договор.ДатаОкончания<ДатаПо); |УСЛОВИЕ(СписокЗн.Принадлежит(Договор) = 0); |" ;//}}ЗАПРОС // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТаблЗн.Очистить(); Запрос.Выгрузить(ТаблЗн); ТаблЗн.ВыбратьСтроки(); Пока ТаблЗн.ПолучитьСтроку()=1 Цикл Таб.ВывестиСекцию("Договор"); КонецЦикла; | |||
| 13
    
        Ёпрст гуру 19.03.13✎ 12:46 | 
        (12) 
  |УСЛОВИЕ(ТекущийДокументДоговор.ДатаОкончания<ДатаПо); вот это условие тормозит в разы выполнение запроса | |||
| 14
    
        galanUprCom 19.03.13✎ 12:49 | 
        А как сделать одним запросом?     | |||
| 15
    
        galanUprCom 19.03.13✎ 12:50 | 
        (13) В первом запросе это лишнее     | |||
| 16
    
        Ёпрст гуру 19.03.13✎ 12:51 | 
        (14) 
  // |УСЛОВИЕ(ТекущийДокументДоговор.ДатаОкончания<ДатаПо); |ДатаОкончания = Документ.РасходнаяАвто.Договор.ДатаОкончания; |УСЛОВИЕ(ДатаОкончания<ДатаПо); ЗЫ: в одном запросе, будет медленнее.. если условие делать во внешней функции если тупо соединять запрос по справочнику и документу, не факт что проканает такое вообще (скорее нет, чем да) | |||
| 17
    
        galanUprCom 19.03.13✎ 12:51 | 
        мне надо одним запросом, пусть медленнее но как?     | |||
| 18
    
        Ёпрст гуру 19.03.13✎ 13:03 | 
        (17) 
  так, например: ТекстЗапроса = " |Период с ДатаНач по ДатаКон; |ТекущийДокументДоговор =Документ.РасходнаяАвто.Договор,Справочник.Договоры.ТекущийЭлемент; |Договор = Документ.РасходнаяАвто.Договор; |Группировка ТекущийДокументДоговор Все; |УСЛОВИЕ(ПустоеЗначение(Договор)=1); |" ; | |||
| 19
    
        galanUprCom 19.03.13✎ 13:27 | 
        (18) выдает все договора     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |