![]() |
![]() |
![]() |
|
Запрос 1С 8 как сделать "Перемножение матриц" | ☑ | ||
---|---|---|---|---|
0
MikeCurious
13.01.15
✎
12:09
|
Есть 2 подзапроса (несложных):
1й возвращает таблицу с колонками: Счет, Товар, Сумма 2й возвращает таблицу с колонками: Счет, ДокументОплаты, СуммаОплаты Естественно в каждом счете может быть несколько товаров, и оплат по 1 счету может быть несколько. Вопрос как получить таблицу следующего вида: Счет, Товар, ДокументОплаты, Сумма, СуммаОплаты. Где на КАЖДУЮ комбинацию Товар+ДокументОплаты будет своя строка? Пример (для простоты с 1 счетом): Таблица 1: Счет1, Стул, 10 Счет1, Стол, 30 Таблица 2: Счет1, ПКО1 от 01.10.14, 15 Счет1, ПКО2 от 10.10.14, 25 Нужно получить: Счет1, Стул, 10, ПКО1, 15 Счет1, Стул, 10, ПКО2, 25 Счет1, Стол, 30, ПКО1, 15 Счет1, Стол, 30, ПКО2, 25 Реально получить такую таблицу в запросе 1С8.3? (СКД). |
|||
1
mikecool
13.01.15
✎
12:10
|
полное соединение по номенклатуре, не?
|
|||
2
Cube
13.01.15
✎
12:10
|
(1) По счету, ты хотел сказать?
|
|||
3
MikeCurious
13.01.15
✎
12:17
|
Вероятно схалявил с примером :) предположим что товаров 3. Тогда в рез.таблице должно стать 6 строк. А полное соединение может дать число строк максимум 2+2=4 строки.
|
|||
4
mikecool
13.01.15
✎
12:18
|
(3) как посчитал?
(2) я бы по разному попробовал, прежде бы чем спросил ))) |
|||
5
mikecool
13.01.15
✎
12:18
|
(3) полное соединение число строк 1 умножить на число строк 2
|
|||
6
hhhh
13.01.15
✎
12:27
|
(3) полное соединение даст 3*3 = 9 строк. Откуда сведения про 4 и про 6 строк?
|
|||
7
PS_SP
13.01.15
✎
12:27
|
Надо размазывать оплату по товарным позициям, насколько я понял. Ничего сложного нет на первом этапе. Или распределить по фифо. Это сложнее немного.
Засада будет с копейками, если распределять, и там где оплата попала не на тот счет. Те заплатили больше. Но вообще нежизненно. Никому не надо знать какой товар в счете оплачен, потому что в ПП это не пишут. |
|||
8
Жан Пердежон
13.01.15
✎
12:31
|
фифо для нескольких поступлений/списаний гораздо проще в коде сделать, чем в запросе
|
|||
9
MikeCurious
13.01.15
✎
12:33
|
"Никому не надо знать какой товар в счете оплачен, потому что в ПП это не пишут." - Никому... кроме моего заказчика :)
Схему распределения я могу делать любую, поэтому беру по пропорциональной сумме каждого товара. т.е. если оплатили полсчета - это значит оплатили каждый товар на половину. Кодом понятно что сделать можно, но тогда это нужно делать свой отчет в тонком клиенте без СКД... |
|||
10
MikeCurious
13.01.15
✎
12:35
|
Кстати только что проверил полное соединение. Получается примерно как объединение таблиц. Идет вначале 1я, потом 2я (при одном счете).
|
|||
11
MikeCurious
13.01.15
✎
12:39
|
Хм, извиняюсь не прав. Если соединять только по счету. Получается то что надо :)
Огромное спс mikecool и Cube Видимо я неправильно понимаю работу полного соединения... |
|||
12
Жан Пердежон
13.01.15
✎
12:40
|
(9) если тупо пропорционально, делай в запросе, там еще округление надо будет не забыть "скинуть";
(10) судя по "перемножение матриц" и "проверил полное соедение" лучше позови специалиста |
|||
13
Лодырь
13.01.15
✎
12:42
|
(12) Еще чуть чуть и он изобретет реляционную алгебру
|
|||
14
PS_SP
13.01.15
✎
12:45
|
(9) Передавай ему что он дебил. ) Если есть переплаты по счету, а они есть, тк платежи обязательно засандалят не туда, то задача распределением решается криво. Если принять что такого не могет быть, то умножай каждый платеж на товар, к примеру, и добавь колонку с общей суммой счета для поиска пропорции. Потом сгруппируешь. Вылезут копейки. С которыми потом еще надо будет бороться.
Но лучше научится делать фифо в запросе. Чтоб с копейками не бодаться и аванес вылазил. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |