Имя: Пароль:
1C
1С v8
Склеить регистры в СКД
0 darkvett
 
22.07.11
10:38
Есть два регистра накопления:
Первый:
Дата регистратор НачОстаток Приход  Расход КонОстаток
01.07 документ1    300        40      ---     340
05.07 документ2    340        ---     10      330
Второй:
Дата регистратор НачОстаток Приход  Расход КонОстаток
02.07 документ3    150        20      ---     170
07.07 документ4    170        ---     80       90

Подскажите как их склеить в СКД чтобы в отчете показывалось вот так:
Дата регистратор НачОстаток Приход  Расход КонОстаток
01.07 документ1    450        40      ---     490
02.07 документ3    490        20      ---     510
05.07 документ2    510       ---      10      500
07.07 документ4    500       ---      80      420
П.С. Пожалуйста не спрашивайте зачем и почему, просто
помогите если можете...
1 NDN
 
22.07.11
10:41
УПОРЯДОЧИТЬ ПО Период
2 darkvett
 
22.07.11
10:43
да, упорядочить возможно получится. но тогда вылезет:

01.07 документ1    300        40      ---     340
02.07 документ3    150        20      ---     170
05.07 документ2    340       ---      10      330
07.07 документ4    170       ---      80      90
Начальные и конечные остатки ведь не верные получаются!!!
3 Defender aka LINN
 
22.07.11
10:47
(2) А СКД в курсе, что это остатки?
4 darkvett
 
22.07.11
10:49
Вроде вкурсе. В СКД выбираю РегистрНакопления...ОстаткиИОбороты и там выбираю СуммаНачальныйОстаток СуммаПриход СуммаРасход СуммаКонечныйОстаток
5 ChAlex
 
22.07.11
10:59
По-моему правильно никак не будет, ибо остатки получаются из разных регистров и почему тогда они должны правильно показывать? Один регистр не видит одних движений, другой других, а теперь нужен телепат, который это свяжет
6 Defender aka LINN
 
22.07.11
11:01
(4) Это ты в запросе выбираешь. А СКД ты сказал, что это остатки?
7 darkvett
 
22.07.11
11:05
(5) Абсолютно правильно пишешь. Новедь должен быть выход:(((
8 darkvett
 
22.07.11
11:05
(6) А как можно в СКД указать что это остатки?
9 ChAlex
 
22.07.11
11:08
(8) - в СКД для поля есть роль, в ней можно определить что это начальный или конечный остаток какого-то ресурса. Но это по-моему только для правильной организации вывода итогов, которые уже получены, и что-бы их лишний раз не складывать при группировках. А к исходным данным это не имеет никакого отношения. Если нет исходных данных, то не получишь и итогов
10 darkvett
 
22.07.11
11:08
(6) В СКД у меня сделано объединение, в нем два запроса по соответствующим регистрам. Там по умолчанию уже стоит в Ролялях КонОстаток и НачОстаток
11 platin
 
22.07.11
11:09
если собрать данные из двух регистров в таблицу значенй, затем ее обработать, а потом в скд набор данных сделать как объект, где полями будут поля этой обработанной таблицы
12 Ненавижу 1С
 
гуру
22.07.11
11:09
накопительно в запросе можно
13 Defender aka LINN
 
22.07.11
11:10
(9) Исходные данные запрос получает
14 ChAlex
 
22.07.11
11:10
(10)Ну и что? Начальный и конечный остаток (сама цифра) должна быть получена с учетом обоих регистров, а не по отдельности
15 ChAlex
 
22.07.11
11:11
(12) - а это как накопительно? Любопытно? Идею в студию
16 darkvett
 
22.07.11
11:11
(11) (12) Умные вещт пишете. Очень похоже на правду. Но я похоже сам не соображу как это осуществить на практике...
17 ChAlex
 
22.07.11
11:13
(16) - а на практике нужно либо иметь один регистр, либо выгружать выборку в таблицу и рассчитывать итоги самому
18 ChAlex
 
22.07.11
11:15
Эй, ненавидящий 1С, отзовись. Так как можно накопительно получить в запросе что-либо? Любопытно!
19 Ненавижу 1С
 
гуру
22.07.11
11:15
(15) ну остатки получать накопительно можно, примерно так

ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка,
   РеализацияТоваровУслуг.Дата,
   РеализацияТоваровУслуг.СуммаДокумента,
   СУММА(РеализацияТоваровУслуг1.СуммаДокумента) КАК Остаток
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг1
       ПО РеализацияТоваровУслуг.Дата >= РеализацияТоваровУслуг1.Дата

СГРУППИРОВАТЬ ПО
   РеализацияТоваровУслуг.Ссылка,
   РеализацияТоваровУслуг.Дата,
   РеализацияТоваровУслуг.СуммаДокумента

УПОРЯДОЧИТЬ ПО
   РеализацияТоваровУслуг.МоментВремени

только тебе надо брать в качестве таблицы подзапрос (или временную), где уже объединены таблицы
ну и не забыть про приход/расход разрулить
20 Ненавижу 1С
 
гуру
22.07.11
11:16
виртуальная таблица ОстаткиИОбороты по регистратору это не уличная магия, а макрос, раскрывающийся в запрос
21 ChAlex
 
22.07.11
11:20
(19) ну так это получится по оборотам, а не по остаткам
22 Ненавижу 1С
 
гуру
22.07.11
11:21
(21) аналогично и по остаткам, расписать?
23 darkvett
 
22.07.11
11:21
(19) а как мне в качестве этой таблицы взять Объединение?
24 Ненавижу 1С
 
гуру
22.07.11
11:24
(23) во временной таблице или подзапросе
25 LEOON
 
22.07.11
11:30
Я наверное не понял задачи, но вроде это решаются как объединение(источник), состоящий из 2х запросов(источников).
26 platin
 
22.07.11
11:42
Процедура Кнопка1Нажатие(Элемент)
Запрос = Новый Запрос;
//выбираются данные из 2 таблиц
Запрос.Текст = "ВЫБРАТЬ  ….. ";
//выбирается данные из 2 регистров
Результат = Запрос.Выполнить();
СписокПродаж = Результат.Выгрузить();
///// таблица обрабатывается – нач. и конеч.остатки через цикл,
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("продажи",СписокПродаж);
СхемаКомпДанных = ПолучитьМакет("ПродажиКонтрагента5");
Настройки = СхемаКомпДанных.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпДанных,Настройки);
ПроцессорКомпДанных = Новый  ПроцессорКомпоновкиДанных;
ПроцессорКомпДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных);
ДокументРез = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРез);
ПроцессорВывода.Вывести(ПроцессорКомпДанных);
ДокументРез.ОтображатьСетку = Ложь;
ДокументРез.ОтображатьЗаголовки = Ложь;
ДокументРез.Показать();
КонецПроцедуры
В самом СКД набор данных – Объект, поля = полям в обработанной таблице
Пример хорошо описывается в книжке Хрусталева «разработка сложных объектов в 1с»
27 darkvett
 
22.07.11
12:15
А как мне объеденить два регистра в запросе? Раньше всегда объединял с помощью Объединения, а как сделать в одном запросе? Делаю вот так, но чтото не получается:
ВЫБРАТЬ
   Регистр1.Регистратор,
   Регистр1.СуммаНачальныйОстаток,
   Регистр1.СуммаКонечныйОстаток,
   Регистр1.СуммаПриход,
   Регистр1.СуммаРасход,
   Регистр2.Регистратор КАК Регистратор1,
   Регистр2.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток1,
   Регистр2.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток1,
   Регистр2.СуммаПриход КАК СуммаПриход1,
   Регистр2.СуммаРасход КАК СуммаРасход1
ИЗ
   РегистрНакопления.Регистр1.ОстаткиИОбороты(, , Регистратор, , ) КАК Регистр1,
   РегистрНакопления.Регистр2.ОстаткиИОбороты(, , Регистратор, , ) КАК Регистр2
28 Ненавижу 1С
 
гуру
22.07.11
12:19
Раньше всегда объединял с помощью Объединения

а почему это нельзя и сейчас сделать?
29 darkvett
 
22.07.11
12:22
(28)Ненавидящий 1С подсказал так сделать:) см.(24)
30 Ненавижу 1С
 
гуру
22.07.11
12:24
(29) и это ты пишешь мне? ))
31 darkvett
 
22.07.11
12:26
(30)Хе, прикол, тебя сразу не признал:)