Имя: Пароль:
1C
1С v8
Помогите с запросом
0 rotting
 
12.07.12
15:23
запросом получаю такую таблицу:
https://lh5.googleusercontent.com/lQ1uh_j-h2PRHvgvdCieLKX3gzvCb0qx5dL6NImc97uVMsJTVGa2sKSaXFkleB-c3C-bGm98SXk

Как мне в запросе разбросать по ФИФО Товарный кредит по накладным?
1 rotting
 
12.07.12
15:24
Товарный кредит общий по договору
2 butterbean
 
12.07.12
15:25
пропорционально суммам накладных??
3 rotting
 
12.07.12
15:26
нет, отнять от суммы накладных по очереди от товарного кредита
4 rotting
 
12.07.12
15:27
(3) отнять суммы накладных по очереди от товарного кредита
5 andrewks
 
12.07.12
15:28
ссылка мёртвая. задача непонятна
6 rotting
 
12.07.12
15:29
(5) странно, вот другая:
http://s017.radikal.ru/i444/1207/0b/3ce19b0cbfb6.jpg
7 andrewks
 
12.07.12
15:31
та что надо сделать-то? желательно небольшой примерчик
8 butterbean
 
12.07.12
15:32
думаю извратиться как-то можно, но производительность отчета будет оставлять желать
9 rotting
 
12.07.12
15:36
(7) нужно как-то так
http://i080.radikal.ru/1207/14/6ec8b11dc2da.jpg
10 rotting
 
12.07.12
15:37
(8) да клал я на производительность, раз пользователь хочет такой хитропопый отчет -  пускай ждет
11 rotting
 
12.07.12
15:38
пока есть идея только выгрузить в ТЗ, потом подставить ее в запрос, а потом запихнуть это все в универсальный отчет, есть идеи по проще?
12 rotting
 
12.07.12
15:41
(11) хотя хрен я потом это все впихну в универсальный отчет, может можно как-то в СКД реализовать?
13 sergeante
 
12.07.12
15:41
(11) циклом по ТЗ, вполне себе решение.
14 rotting
 
12.07.12
15:41
(13) надо в СКД, этот отчет пользователь крутить еще хочет
15 sergeante
 
12.07.12
15:43
передай ТЗ в скд, поиском по форуму погугли как это сделать
16 sergeante
 
12.07.12
15:44
ВнешниеНаборыДанных = Новый Структура;
       ВнешниеНаборыДанных.Вставить("Таб",Таб);
       СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("СхемаКомпоновкиДанных");
       Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
       Компоновщик1 = Новый КомпоновщикМакетаКомпоновкиДанных;
       МакетКомпоновки1 = Компоновщик1.Выполнить(СхемаКомпоновкиДанных,Настройки);
       ПроцессорКомпоновки1 = Новый ПроцессорКомпоновкиДанных;
       ПроцессорКомпоновки1.Инициализировать(МакетКомпоновки1,ВнешниеНаборыДанных);
       ПроцессорВыводаРезультата1 = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
       ПроцессорВыводаРезультата1.УстановитьДокумент(ДокументРезультат);
       ПроцессорВыводаРезультата1.Вывести(ПроцессорКомпоновки1);
17 rotting
 
12.07.12
15:44
(15) сча буду пробовать
18 andrewks
 
12.07.12
15:46
(9) вот схожая ситуация разбирается:
v8: Распределение сумм в запросе пропорционально результатам выборки

немного допилить, и профит!
19 rotting
 
12.07.12
16:04
(18) спасибо, что-то думаю получится
20 rotting
 
12.07.12
16:45
возник вопрос,
есть такой подзапрос

ВЫБРАТЬ
   Данные1.Объект КАК Объект,
   ВЫРАЗИТЬ(Данные1.База КАК ЧИСЛО(15, 2)) КАК База,
   ВЫРАЗИТЬ(ЕСТЬNULL(СУММА(Данные2.База), 0) КАК ЧИСЛО(15, 2)) КАК БазаНакопленная,
   Данные1.ТоварныйКредит
ПОМЕСТИТЬ ДанныеСНакоплением
ИЗ
   Данные КАК Данные1
       ЛЕВОЕ СОЕДИНЕНИЕ Данные КАК Данные2
       ПО Данные1.Объект > Данные2.Объект

что за соединение со знаком ">", как оно работает, не пойму никак(((
21 rotting
 
12.07.12
16:48
ап ап ап
22 andrewks
 
12.07.12
16:50
(20) нумеруются строки таблицы
23 andrewks
 
12.07.12
16:50
+(22) упс, глаз замылился, не то
24 LAAry
 
12.07.12
16:52
(20) емнип, по внутреннему представлению.
25 rotting
 
12.07.12
16:53
(23) отож, еще есть варианты?
26 andrewks
 
12.07.12
16:58
(25) что-то типа сортировки.

представь себе, что табличку отсортировали, и теперь мы бежим по двум циклам:
первый цикл от i = 1 до N, а dnjhjq  j = 1 до i-1
27 viktor_vv
 
12.07.12
17:06
(26) Скорее это не сортировка, а совмещение данных из соседних строк в одной строку.
Добавляется колонка, в которой для текущей строки данные из следующей или предыдущей строки, в зависимости от знака соединения.
Это кстати похоже на нумерацию в запросе.
28 LAAry
 
12.07.12
17:09
Это похоже на нарастающий итог.
29 andrewks
 
12.07.12
17:13
(27) что есть "соседняя строка"? она не прост так соседняя, а соседняя строка в отсортированной таблице
30 andrewks
 
12.07.12
17:14
ибо без отношения упорядочения такой алгоритм не взлетит.

то бишь, если в таблице нельзя опереться на уникальность, то хрен вам он чё распределит
31 rotting
 
12.07.12
17:19
(27) прикольно, я вот никак не могу отсортировать таблицу перед этим подзапросом, на выражение "упорядочить по"  ни как не реагирует
32 andrewks
 
12.07.12
17:20
"упорядочить по" выполняется в конце
33 andrewks
 
12.07.12
17:21
(31) кстати, а зачем тебе её сортировать?
34 viktor_vv
 
12.07.12
17:25
(29) Ну таки да, в осортированной. Я имел ввиду, что сортировка не является конечным результатом этого запроса, а необходимым условием правильного выполнения, да, является.
35 rotting
 
12.07.12
17:32
(33) ну мне нужно накладные по ФИФО отсортировать, а потом сумму распределять
36 rotting
 
12.07.12
17:32
точнее не распределять, а отнимать по очереди
37 SUA
 
12.07.12
17:36
v8: СКД нарастающий итог
вычисление накопительного итога там есть, осталось еще одно вычисляемое выражение добавить
38 SUA
 
12.07.12
17:36
а сортировка - средствами скд
39 andrewks
 
12.07.12
17:39
(35) просто опирайся в условии соединения на дата+уид
40 viktor_vv
 
12.07.12
17:46
Попробовал посмотреть что получается при таком соединении, таки в (27) фигню написал.
41 andrewks
 
12.07.12
17:51
(40) это нарастающий итог. нумерация делается по этому же принципу. поэтому я вначале с недогляду про нумерацию и написал