Как получить документы на основании которых не было проведено документов?

1. 3762515 16.09.13 16:34 Сейчас в теме
Есть документ "Заявка на расходование средств" на его основании можно создать документ, например "Платежное поручение", как получить все заявки, на основании которых не было создано никаких документов?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
31. HanterVol 8 18.09.13 08:28 Сейчас в теме
Если касается только Заявок на расходование средств" то
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВложенныйЗапрос.ЗаявкаНаРасходование,
	ВложенныйЗапрос.СуммаВзаиморасчетовПриход,
	ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток
ИЗ
	(ВЫБРАТЬ РАЗЛИЧНЫЕ
		ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование КАК ЗаявкаНаРасходование,
		СУММА(ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаВзаиморасчетовПриход) КАК СуммаВзаиморасчетовПриход,
		СУММА(ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток
	ИЗ
		РегистрНакопления.ЗаявкиНаРасходованиеСредств.ОстаткиИОбороты КАК ЗаявкиНаРасходованиеСредствОстаткиИОбороты
	
	СГРУППИРОВАТЬ ПО
		ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование) КАК ВложенныйЗапрос
ГДЕ
	ВложенныйЗапрос.СуммаВзаиморасчетовПриход = ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. Reptile 35 16.09.13 17:28 Сейчас в теме
(1) 3762515,
ВЫБРАТЬ Заявки.Ссылка
ИЗ Документ.ЗаявкаНаРасходованиеСредств КАК Заявки
ЛЕВОЕ СОЕДИНЕНИЕ
	(ВЫБРАТЬ ПлатежноеПоручение.ДокументОснование КАК Заявка
	 ИЗ Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
	 
	 ОБЪЕДИНИТЬ ВСЕ
	 
	 ВЫБРАТЬ СписаниеСРасчетногоСчета.ДокументОснование КАК Заявка
	 ИЗ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
	 
	 //тут подобные запросы на остальные документы, которые можно ввести на основании.
	 //Эту секцию можно формировать программно по метаданным
	 
	) КАК Документы
	ПО Документы.Заявка = Заявки.Ссылка
ГДЕ Документы.Заявка IS NULL
Показать
user1619761; 3762515; +2 Ответить
10. 3762515 17.09.13 13:26 Сейчас в теме
(5) Reptile, спасибо! Помогло)
7. beldieff 16.09.13 17:59 Сейчас в теме
(1) 3762515, Выбираешь все заявки, выбираешь все платежки, выбираешь все заявки основания платежек. Из одних заявок убираешь другие. Всё.
29. AnryMc 849 17.09.13 20:03 Сейчас в теме
(1) 3762515, Готовое решение - http://infostart.ru/public/65132/ "Пометка на удаление неиспользуемых элементов справочников и документов"
2. forev8 16.09.13 16:52 Сейчас в теме
В типовых есть реквизит ДокументОснование
Можно построить запрос по нему
3. 3762515 16.09.13 17:23 Сейчас в теме
4. Bukaska 140 16.09.13 17:26 Сейчас в теме
(3) 3762515, Ну хоть что-то сами прикиньте, а мы уже поможем))))
6. tango 544 16.09.13 17:54 Сейчас в теме
из таблицы документов исключаешь ссылки, полученные из таблицы критерия ЗаявкиНаРС
Прикрепленные файлы:
9. Reptile 35 16.09.13 18:16 Сейчас в теме
(6) tango,
если картинку, то лучше такую - на все случаи жизни
Прикрепленные файлы:
8. tango 544 16.09.13 18:06 Сейчас в теме
Разность

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

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

  SELECT FName FROM #A 
  WHERE 
  FName NOT IN(SELECT FName FROM #B)
  

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

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

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

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

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

  SELECT #A.FName FROM 
  #A LEFT OUTER JOIN #B ON (#A.FName = #B.FName)
  WHERE
  #B.FName IS NULL
11. 3762515 17.09.13 14:40 Сейчас в теме
Мой запрос:
ВЫБРАТЬ
	Заявки.Ссылка,
	Заявки.Номер,
	Заявки.Дата,
	Заявки.КурсДокумента,
	Заявки.ВалютаДокумента,
	Заявки.СуммаДокумента,
	Заявки.Контрагент,
	Заявки.Комментарий,
	Заявки.Организация,
	Заявки.ДатаРасхода,
	Заявки.Состояние
ИЗ
	Документ.ЗаявкаНаРасходованиеСредств КАК Заявки
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ПлатежноеПоручениеИсходящее.ДокументОснование КАК Заявка
		ИЗ
			Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее) КАК Документы
		ПО (Документы.Заявка = Заявки.Ссылка)
ГДЕ
	Документы.Заявка ЕСТЬ NULL 
	И Заявки.Проведен = &Проведен
	И Заявки.ДатаРасхода >= &ДатаНачала
Показать

Всё работает но есть проблема: Если платежное поручение создано и проведено раньше ДатыРасхода, то такая заявка попадает в отчет, не смотря на то, что на её основании уже есть платежка. Как решить эту проблему?
12. tango 544 17.09.13 14:53 Сейчас в теме
(11) 3762515,
все заявки, на основании которых не было создано никаких документов
- "все работает" с запросом (11) именно в этом смысле?
14. 3762515 17.09.13 15:51 Сейчас в теме
(12) tango,
"все работает" с запросом (11) именно в этом смысле?

Да, так то выводит только те заявки на основании которых не было создано платежки, кроме такого вот исключения
15. tango 544 17.09.13 16:04 Сейчас в теме
(14) 3762515, ничего что по этому запросу вернутся все проведенные заявки с датой расхода > параметра, не зависимо ни от чего другого?
17. 3762515 17.09.13 16:12 Сейчас в теме
(15) tango,
ничего что по этому запросу вернутся все проведенные заявки с датой расхода > параметра, не зависимо ни от чего другого?

не понял Оо
18. tango 544 17.09.13 16:15 Сейчас в теме
(17) 3762515,
Прикрепленные файлы:
25. Reptile 35 17.09.13 17:43 Сейчас в теме
(18) 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,
в Вашей платежке (которая ранее даты расхода) документ основание заполнен?
26. tango 544 17.09.13 17:50 Сейчас в теме
13. Reptile 35 17.09.13 14:58 Сейчас в теме
(11) 3762515,
Ну с одним видом документов можно было без подзапроса (хотя это не важно):
ВЫБРАТЬ
  ...
ИЗ   Документ.ЗаявкаНаРасходованиеСредств КАК Заявки
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее
   ПО ПлатежноеПоручениеИсходящее.ДокументОснование = Заявки.Ссылка
ГДЕ ПлатежноеПоручениеИсходящее.ДокументОснование ЕСТЬ NULL 


По поводу вопроса: если текст запроса такой, то дата платежного поручения не задействована в запросе и не имеет никакого значения. Единственное, что я могу предположить, что в таком поручении не заполено поле ДокументОснование.
19. elvis1917 17.09.13 16:19 Сейчас в теме
(11) А конфигурация не УПП? Там это можно из регистра вытащить.
20. 3762515 17.09.13 16:40 Сейчас в теме
(19) elvis1917, Да, УПП 1.3.22.1 из каких регистров можно вытащить всё необходимое?
21. elvis1917 17.09.13 16:48 Сейчас в теме
(20) Смотрите регистр "Заявки на расходование средств". Заявка открывает - документ платежа закрывает регистр.
+можно закрыть заявку и ручным закрытием - док "Закрытие заявок".
16. tango 544 17.09.13 16:05 Сейчас в теме
кстате,
И Заявки.Проведен = &Проведен
22. kojinandrej 60 17.09.13 17:29 Сейчас в теме
а не пробовал типовый отчет "Заявки на расходование средств"
23. kojinandrej 60 17.09.13 17:37 Сейчас в теме
Что никто не стыкался с таким?
24. elvis1917 17.09.13 17:41 Сейчас в теме
27. Roman100 17.09.13 17:53 Сейчас в теме
Че вы человеку голову заморачиваете.

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

Давай свои 50$ :-)
28. elvis1917 17.09.13 18:10 Сейчас в теме
(27) Не то. Ваш запрос выберет все Ремонтные листы, которые введены не на основании заявок.
А надо заявки.
30. 3762515 17.09.13 21:10 Сейчас в теме
в Вашей платежке (которая ранее даты расхода) документ основание заполнен?

Да, заполнен, там всё сходиться. Единственно чем отличаются эти платежки - тем что они не заведены пользователем, а загружены из клиент-банка.
31. HanterVol 8 18.09.13 08:28 Сейчас в теме
Если касается только Заявок на расходование средств" то
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВложенныйЗапрос.ЗаявкаНаРасходование,
	ВложенныйЗапрос.СуммаВзаиморасчетовПриход,
	ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток
ИЗ
	(ВЫБРАТЬ РАЗЛИЧНЫЕ
		ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование КАК ЗаявкаНаРасходование,
		СУММА(ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаВзаиморасчетовПриход) КАК СуммаВзаиморасчетовПриход,
		СУММА(ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток
	ИЗ
		РегистрНакопления.ЗаявкиНаРасходованиеСредств.ОстаткиИОбороты КАК ЗаявкиНаРасходованиеСредствОстаткиИОбороты
	
	СГРУППИРОВАТЬ ПО
		ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование) КАК ВложенныйЗапрос
ГДЕ
	ВложенныйЗапрос.СуммаВзаиморасчетовПриход = ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток
Показать
32. 3762515 18.09.13 11:28 Сейчас в теме
(31) HanterVol, вот так всё работает и как надо! Спасибо!
33. Aleksandr_K 46 18.09.13 12:01 Сейчас в теме
Лучший вариант в данном случае - использовать критерий отбора и запрос к нему.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот