Есть документ "Заявка на расходование средств" на его основании можно создать документ, например "Платежное поручение", как получить все заявки, на основании которых не было создано никаких документов?
---
Если касается только Заявок на расходование средств" то

```1c
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВложенныйЗапрос.ЗаявкаНаРасходование,
    ВложенныйЗапрос.СуммаВзаиморасчетовПриход,
    ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток
    ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование КАК ЗаявкаНаРасходование,
    СУММА(ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаВзаиморасчетовПриход) КАК СуммаВзаиморасчетовПриход,
    СУММА(ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток
    ИЗ
    РегистрНакопления.ЗаявкиНаРасходованиеСредств.ОстаткиИОбороты КАК ЗаявкиНаРасходованиеСредствОстаткиИОбороты

    СГРУППИРОВАТЬ ПО
    ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование) КАК ВложенныйЗапрос
    ГДЕ
    ВложенныйЗапрос.СуммаВзаиморасчетовПриход = ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток
```
---
3762515,

```1c
    ВЫБРАТЬ Заявки.Ссылка
    ИЗ Документ.ЗаявкаНаРасходованиеСредств КАК Заявки
    ЛЕВОЕ СОЕДИНЕНИЕ
    (ВЫБРАТЬ ПлатежноеПоручение.ДокументОснование КАК Заявка
    ИЗ Документ.ПлатежноеПоручение КАК ПлатежноеПоручение

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ СписаниеСРасчетногоСчета.ДокументОснование КАК Заявка
    ИЗ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета

    //тут подобные запросы на остальные документы, которые можно ввести на основании.
    //Эту секцию можно формировать программно по метаданным

    ) КАК Документы
    ПО Документы.Заявка = Заявки.Ссылка
    ГДЕ Документы.Заявка IS NULL
```
---
Reptile, спасибо! Помогло)
---
3762515, Выбираешь все заявки, выбираешь все платежки, выбираешь все заявки основания платежек. Из одних заявок убираешь другие. Всё.
---
3762515, Готовое решение - http://infostart.ru/public/65132/ "Пометка на удаление неиспользуемых элементов справочников и документов"
---
В типовых есть реквизит ДокументОснование
Можно построить запрос по нему
---
forev8, например как?
---
3762515, Ну хоть что-то сами прикиньте, а мы уже поможем))))
---
из таблицы документов исключаешь ссылки, полученные из таблицы критерия ЗаявкиНаРС
---
tango,
если картинку, то лучше такую - на все случаи жизни
---
Разность

В MS SQL Server2000 нет операции MINUS, как в ORACLE. Поэтому приходится изощряться, чтобы получить тот же результат:

С помощью обычного подзапроса:

```1c
    SELECT FName FROM #A
    WHERE
    FName NOT IN(SELECT FName FROM #B)
```

Пояснение: вначале выполняется подзапрос. Затем выполняется основной запрос, который ищет и выводит все строки таблицы #A, отсутствующие в таблице #B.

С помощью коррелированного подзапроса:

```1c
    SELECT * FROM #A
    WHERE
    NOT EXISTS (SELECT * FROM #B WHERE #B.FName = #A.FName)
```

Пояснение: Каждая строка из таблицы #A по одной передаётся в подзапрос. Там ищется, есть ли такая запись в таблице #B. Если нет, то соответствующая строка из таблицы #A будет приобщена к результату.

С помощью LEFT OUTER JOIN:

```1c
    SELECT #A.FName FROM
    #A LEFT OUTER JOIN #B ON (#A.FName = #B.FName)
    WHERE
    #B.FName IS NULL
```
---
Мой запрос:

```1c
    ВЫБРАТЬ
    Заявки.Ссылка,
    Заявки.Номер,
    Заявки.Дата,
    Заявки.КурсДокумента,
    Заявки.ВалютаДокумента,
    Заявки.СуммаДокумента,
    Заявки.Контрагент,
    Заявки.Комментарий,
    Заявки.Организация,
    Заявки.ДатаРасхода,
    Заявки.Состояние
    ИЗ
    Документ.ЗаявкаНаРасходованиеСредств КАК Заявки
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ПлатежноеПоручениеИсходящее.ДокументОснование КАК Заявка
    ИЗ
    Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее) КАК Документы
    ПО (Документы.Заявка = Заявки.Ссылка)
    ГДЕ
    Документы.Заявка ЕСТЬ NULL
    И Заявки.Проведен = &Проведен
    И Заявки.ДатаРасхода >= &ДатаНачала
```

Всё работает но есть проблема: Если платежное поручение создано и проведено раньше ДатыРасхода, то такая заявка попадает в отчет, не смотря на то, что на её основании уже есть платежка. Как решить эту проблему?
---
3762515, все заявки, на основании которых не было создано никаких документов - "все работает" с запросом (11) именно в этом смысле?
---
tango, "все работает" с запросом (11) именно в этом смысле?
Да, так то выводит только те заявки на основании которых не было создано платежки, кроме такого вот исключения
---
3762515, ничего что по этому запросу вернутся все проведенные заявки с датой расхода > параметра, не зависимо ни от чего другого?
---
tango, ничего что по этому запросу вернутся все проведенные заявки с датой расхода > параметра, не зависимо ни от чего другого?
не понял Оо
---
3762515,
---
tango,
Вами выбрана неправильная картинка. Текущему запросу соответствует картинка чуть ниже (where b.key is null).
Это же такой же как и Ваш запрос из (8):
  SELECT #A.FName FROM
  #A LEFT OUTER JOIN #B ON (#A.FName = #B.FName)
  WHERE
  #B.FName IS NULL

Запрос должен работать правильно. Как я и писал
Единственное, что я могу предположить, что в таком поручении не заполено поле ДокументОснование.

3762515,
в Вашей платежке (которая ранее даты расхода) документ основание заполнен?
---
Reptile, ок.
---
3762515,
Ну с одним видом документов можно было без подзапроса (хотя это не важно):

```1c
    ВЫБРАТЬ
    ...
    ИЗ Документ.ЗаявкаНаРасходованиеСредств КАК Заявки
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее
    ПО ПлатежноеПоручениеИсходящее.ДокументОснование = Заявки.Ссылка
    ГДЕ ПлатежноеПоручениеИсходящее.ДокументОснование ЕСТЬ NULL
```

По поводу вопроса: если текст запроса такой, то дата платежного поручения не задействована в запросе и не имеет никакого значения. Единственное, что я могу предположить, что в таком поручении не заполено поле ДокументОснование.
---
А конфигурация не УПП? Там это можно из регистра вытащить.
---
elvis1917, Да, УПП 1.3.22.1 из каких регистров можно вытащить всё необходимое?
---
Смотрите регистр "Заявки на расходование средств". Заявка открывает - документ платежа закрывает регистр.
+можно закрыть заявку и ручным закрытием - док "Закрытие заявок".
---
кстате,
И Заявки.Проведен = &Проведен
---
а не пробовал типовый отчет "Заявки на расходование средств"
---
Что никто не стыкался с таким?
---
С чем именно?
---
Че вы человеку голову заморачиваете.

Запрос = Новый Запрос;
Запрос.Текст = "
| ВЫБРАТЬ
| РемонтныйЛист.Ссылка
| ИЗ
| Документ.РемонтныйЛист КАК РемонтныйЛист
| ГДЕ
| РемонтныйЛист.ЗаявкаНаРемонт=Значение(Документ.ЗаявкаНаРемонт.ПустаяСсылка)";
РезультатЗапроса = Запрос.Выполнить();

Давай свои 50$ :-)
---
Не то. Ваш запрос выберет все Ремонтные листы, которые введены не на основании заявок.
А надо заявки.
---
в Вашей платежке (которая ранее даты расхода) документ основание заполнен?
Да, заполнен, там всё сходиться. Единственно чем отличаются эти платежки - тем что они не заведены пользователем, а загружены из клиент-банка.
---
Если касается только Заявок на расходование средств" то

```1c
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВложенныйЗапрос.ЗаявкаНаРасходование,
    ВложенныйЗапрос.СуммаВзаиморасчетовПриход,
    ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток
    ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование КАК ЗаявкаНаРасходование,
    СУММА(ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаВзаиморасчетовПриход) КАК СуммаВзаиморасчетовПриход,
    СУММА(ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток
    ИЗ
    РегистрНакопления.ЗаявкиНаРасходованиеСредств.ОстаткиИОбороты КАК ЗаявкиНаРасходованиеСредствОстаткиИОбороты

    СГРУППИРОВАТЬ ПО
    ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование) КАК ВложенныйЗапрос
    ГДЕ
    ВложенныйЗапрос.СуммаВзаиморасчетовПриход = ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток
```
---
HanterVol, вот так всё работает и как надо! Спасибо!
---
Лучший вариант в данном случае - использовать критерий отбора и запрос к нему.