Имя: Пароль:
1C
1С v8
А можно ли такое запросом?
,
0 Koala
 
06.01.12
19:28
Имеется таблица со столбцами:
Контрагент, Менеджер, ДокРеализация, СуммаРеализации, ДокПлатежка, СуммаПлатежа.
Контрагент и Менеджер берутся из ДокРеализации.
ДокПлатежка показывает, оплачен ДокРеализации или нет.
При этом одной Платежкой можно оплатить сразу несколько Реализаций,
но возможна и частичная оплата, т.е. в Платежке может быть указана оплата сразу неск. Реализаций, но СуммыПлатежа может хватить только на часть из них.

В результате из такой таблицы надо отобрать в две новых таблицы
а) только те Реализации (с их Менеджерами и Контрагентами), в которых СуммаОплаты больше или равна
СуммеРеализаций всех Реализаций, указанных в Платежке,
б) остальные Реализации (т.е. те, к-рые в Платежке указаны, но денег на к-рые не хватило).

Да, так вот я и интересуюсь: можно ли каким-то хитрым запросом такое сотворить или без выгрузки в таблицу значений никак?
1 Grusswelle
 
06.01.12
19:49
Телепатирую: УТ 10, регистр "ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов"?
2 Koala
 
06.01.12
20:03
Не совсем так: УТ 10 - это верно, но регистр тут не при чем. Таблицу я получаю по-другому. (Долго объяснять, почему регистр не прокатит)  
Да это и не важно, ты лучше подскажи, если знаешь!
3 Grusswelle
 
06.01.12
20:04
Ну как... Группируй, сортируй да сравнивай! Информация-то вся для этого, вроде, есть в твоей таблице...
4 Koala
 
06.01.12
20:17
Хм,"Группируй, сортируй да сравнивай!"
"Знал бы прикуп, жил бы в Сочи" (с)
У меня же к одной платежке может относиться несколько Реализаций.
(А не одна платежка - одна реализация)
По менеджерам с контрагентами я их, естес-но, сгруппирую и отсортирую, а как выбрать те реализации, на к-рые в платежке денег не хватило? Как их отобрать?
5 Grusswelle
 
06.01.12
20:19
Прямой связи нету? Как бы в рамках договоров взаиморасчёты, а в них - кучей?
6 Koala
 
06.01.12
20:23
Все возможные связи были специально отобраны, и результат таких отборов - моя таблица.
7 Grusswelle
 
06.01.12
20:28
Понятно. Группируй по документам, сортируй по суммам (датам?) реализаций. В цикле суммируй суммы реализаций и отслеживай переполнение суммы платёжки этим значением. Как при списании по партиям. Пока хватает - пихай в одну таблицу, как перестало хватать - в другую.

ЗЫ: Сортировать по суммам или по датам - это уже вам решать.
8 Koala
 
06.01.12
20:43
"В цикле суммируй суммы реализаций" - а как в запросе-то цикл организовать? Или что-то вместо него?
Как это сделать без хитрого запроса, простой выгрузкой в ТЗ с последующим перебором - я в курсе.

А вот запросом, без выгрузки в ТЗ как-нибудь можно это сделать?

Просто эти таблицы с оплаченными и неоплаченными реализациями мне потом еще дальше обрабатывать. И их-то обработать запросом просто. Не хотелось бы, чтоб между запросами была выгрузка в ТЗ.

ЗЫ Мне нужно их сортировать строго по суммам. В исходной таблице данные уже содержатся за период.
9 Koala
 
06.01.12
22:47
Неужели никто не знает?
10 Neco
 
06.01.12
23:28
(9) Нужно было заранее ввести регистр в котором фиксировать какая часть платежа на какую реализацию уходит. Сейчас все таки лучше организовать расчет через цикл, изящного решения одним запросом придумать не получается.
11 1с-кин
 
07.01.12
03:46
(8) через временную таблицу - и крутить её столько раз, сколько надо, а отбирать в разные таблицы сразу по условиям.
12 Koala
 
07.01.12
06:00
(11) - не совсем понял, поясни свою мысль.
16 Koala
 
07.01.12
12:06
Так что там с временной таблицей, как ее употребить?
17 Ненавижу 1С
 
гуру
07.01.12
12:47
18 1с-кин
 
07.01.12
15:38
(16) получаете во временную таблицу свою исходную "имеется таблица со столбцами" (даже можно выбросить ну совсем левые платежки-менеджеры-даты).
В двух других запросах выбираете как нужно из неё:
"В результате из такой таблицы надо отобрать в две новых таблицы
а) только те Реализации (с их Менеджерами и Контрагентами), в которых СуммаОплаты больше или равна
СуммеРеализаций всех Реализаций, указанных в Платежке,
б) остальные Реализации (т.е. те, к-рые в Платежке указаны, но денег на к-рые не хватило)."
Можно последовательно, сначала выбрать "те в которых СуммаОплаты больше или равна", потом СОЕДИНЕНИЕМ ПО полям с исходной - отобрать оставшиеся, т.е. те, которые не попали в первую выборку.
Будет хитрый запрос :)