Добить запрос

1. Young_and_inexperienced 04.03.25 11:29 Сейчас в теме
Коллеги добрый день !

Помогите пожалуйста сижу не могу додумать как дописать запрос.
Нужно что б по контрагенту последний используемый счет в поле отметка ставилась истина,
А если счет не использовался 3 месяца и более отметка переводилась в ЛОЖЬ или не ставилась бы вовсе

В данном виде он у меня на один и тот же счет встает ИСТИНА и ЛОЖЬ

 Запрос.Текст = "ВЫБРАТЬ
|	ЗаказПоставщику.Контрагент КАК Контрагент,
|	МАКСИМУМ(ЗаказПоставщику.Дата) КАК Дата
|ПОМЕСТИТЬ ВТ_Заказы
|ИЗ
|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
|	ЗаказПоставщику.Дата >= &Дата
|
|СГРУППИРОВАТЬ ПО
|	ЗаказПоставщику.Контрагент
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ
|	ЗаказПоставщику.Контрагент КАК Контрагент,
|	ЗаказПоставщику.СчетПоставщика КАК СчетПоставщика,
|	ИСТИНА КАК Отметка
|ИЗ
|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Заказы КАК ВТ_Заказы
|		ПО (ЗаказПоставщику.Дата = ВТ_Заказы.Дата)
|			И (ВТ_Заказы.Контрагент = ЗаказПоставщику.Контрагент)
|
|СГРУППИРОВАТЬ ПО
|	ЗаказПоставщику.Контрагент,
|	ЗаказПоставщику.СчетПоставщика
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|	ЗаказПоставщику.Контрагент,
|	ЗаказПоставщику.СчетПоставщика,
|	ЛОЖЬ
|ИЗ
|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Заказы КАК ВТ_Заказы
|		ПО ЗаказПоставщику.Дата < ВТ_Заказы.Дата
|			И (ВТ_Заказы.Контрагент = ЗаказПоставщику.Контрагент)
|
|СГРУППИРОВАТЬ ПО
|	ЗаказПоставщику.Контрагент,
|	ЗаказПоставщику.СчетПоставщика
|";
Показать
По теме из базы знаний
Найденные решения
6. starjevschik 04.03.25 12:45 Сейчас в теме
Добить можно топором, если патроны кончились...

Смотри, делим задачу на минимальные простейшие
1) последняя дата использования счета - где она? Пишем запрос, получаем, проверяем.
2) На результаты первого пункта ставим условия: если больше 3 месяцев, то отметка = ложь, иначе отметка - истина.
3) проверяем, сдаем заказчику.
Объединить это конечно здорово, но на первом месте должна быть логика, а потом уже все остальное. И делай минимальными шагами, каждый из которых можно проверить. Оптимизация потом.
user2107191; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Vlan 36 04.03.25 11:50 Сейчас в теме
(1) Не пойму, зачем 3 раза документы дергать, если можно один раз взять и через ВЫБОР КОГДА проверить дату?
user2107191; +1 Ответить
3. Young_and_inexperienced 04.03.25 12:24 Сейчас в теме
(2) Обновлять отметку нужно каждый день, поэтому в ВТ берется максимальная дата заказа и затем уже идет сравнение с остальными документами
Нужен последний использованный счет "Вчера"
5. user2107191 04.03.25 12:45 Сейчас в теме
(3) Претензия ко второму запросу, там где объединение - там ты зачем-то дергаешь таблицу два раза, хотя можно и один раз.
К первому агрегатному запросу претензий нет, за исключением отсутствия индексов.
4. user2107191 04.03.25 12:43 Сейчас в теме
(2) Без первого агрегатного не обойтись, а во во втором можно дернуть только один раз по Контрагенту, вместо двух, согласен.
6. starjevschik 04.03.25 12:45 Сейчас в теме
Добить можно топором, если патроны кончились...

Смотри, делим задачу на минимальные простейшие
1) последняя дата использования счета - где она? Пишем запрос, получаем, проверяем.
2) На результаты первого пункта ставим условия: если больше 3 месяцев, то отметка = ложь, иначе отметка - истина.
3) проверяем, сдаем заказчику.
Объединить это конечно здорово, но на первом месте должна быть логика, а потом уже все остальное. И делай минимальными шагами, каждый из которых можно проверить. Оптимизация потом.
user2107191; +1 Ответить
7. Young_and_inexperienced 04.03.25 15:21 Сейчас в теме
(6) Итак, вот я сделал отбор
тут я получаю максимальную дату использования счета у поставщика, и сам счет
ВЫБРАТЬ
	ЗаказПоставщику.Контрагент КАК Контрагент,
	МАКСИМУМ(ЗаказПоставщику.Дата) КАК Дата,
	ЗаказПоставщику.СчетПоставщика КАК СчетПоставщика
ПОМЕСТИТЬ ВТ_Заказы
ИЗ
	Документ.ЗаказПоставщику КАК ЗаказПоставщику
ГДЕ
	ЗаказПоставщику.Дата >= &Дата

СГРУППИРОВАТЬ ПО
	ЗаказПоставщику.Контрагент,
	ЗаказПоставщику.СчетПоставщика
Показать


если мой предыдущий запрос не совсем корректный тогда я не понимаю как сделать условие на установку отметки ИСТИНА в случае если счет последний раз использовался вчера
8. starjevschik 04.03.25 17:35 Сейчас в теме
(7) ну прекрасно. Теперь ставь условия на дату и все.
если дата > ТриМесяцаНазад тогда блабла иначе блублу
как-нибудь так примерно, ну на языке запроса 1с ессно.
9. Young_and_inexperienced 05.03.25 09:36 Сейчас в теме
Всем спасибо, вроде получилось
Оставьте свое сообщение

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