|
СКД и расчет итогов | ☑ | ||
---|---|---|---|---|
0
S_Scorp
05.10.11
✎
14:52
|
Доброго времени суток.
По теме. Я об этом уже писал, но из-за чего именно происходил неправильный расчет итогов еще не знал. Теперь вот удалось выявить закономерность. Есть отчет на СКД. Запрос представляет собой объединение двух виртуальных таблиц типа ОстаткиИОбороты. Вот он: ВЫБРАТЬ СкидкиКлиентовОстаткиИОбороты.Регистратор, СкидкиКлиентовОстаткиИОбороты.Клиент, СкидкиКлиентовОстаткиИОбороты.ВидСкидки, СкидкиКлиентовОстаткиИОбороты.Валюта, СкидкиКлиентовОстаткиИОбороты.ПериодСекунда, СкидкиКлиентовОстаткиИОбороты.СуммаНачальныйОстаток, СкидкиКлиентовОстаткиИОбороты.СуммаКонечныйОстаток, СкидкиКлиентовОстаткиИОбороты.СуммаПриход, СкидкиКлиентовОстаткиИОбороты.СуммаРасход, 0 КАК СуммаНачальныйОстатокРезерв, 0 КАК СуммаКонечныйОстатокРезерв, 0 КАК СуммаПриходРезерв, 0 КАК СуммаРасходРезерв ИЗ РегистрНакопления.СкидкиКлиентов.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Авто, , ВидСкидки <> &Задолженность) КАК СкидкиКлиентовОстаткиИОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РезервыСкидкиОстаткиИОбороты.Регистратор, РезервыСкидкиОстаткиИОбороты.Клиент, РезервыСкидкиОстаткиИОбороты.ВидСкидки, РезервыСкидкиОстаткиИОбороты.Валюта, РезервыСкидкиОстаткиИОбороты.ПериодСекунда, 0, 0, 0, 0, РезервыСкидкиОстаткиИОбороты.СуммаНачальныйОстаток, РезервыСкидкиОстаткиИОбороты.СуммаКонечныйОстаток, РезервыСкидкиОстаткиИОбороты.СуммаПриход, РезервыСкидкиОстаткиИОбороты.СуммаРасход ИЗ РегистрНакопления.РезервыСкидки.ОстаткиИОбороты({(&НачалоПериода)}, {(&КОнецПериода)}, Авто, , ) КАК РезервыСкидкиОстаткиИОбороты ============================================================== Скрин1: http://savepic.su/151676.jpg Скрин2: http://savepic.su/141436.jpg Если в СКД задать вложенные группировки: Клиент-ВидСкидки-Регистратор то итоги расчитываются не правильно. На скрине1 видно, что конечный остаток по 2-й группировке равен нулю, что не верно. На втором скрине видно, что если убрать группировку по регистратору, то все считается правильно! Если запустить этот запрос в Консоли запросов, то там всегда конечные начальные остатки считаются верно. Видимо дело в СКД? Или я что то не так делаю? З.Ы. Пробовал тоже самое проделать с построителем отчета, результат тот же. Пробовал делать соединение(а не объединение), результат тот же. Пробовал играться с параметрами виртуальных таблиц (Периодичность,Метод дополнения) - безрезультатно. Пробовал разбивать виртуальные таблицы на два отдельных набора данных, а дальше соединял, либо объединял их, тоже неправильные конечные и начальные остатки. |
|||
1
kible
05.10.11
✎
15:02
|
Тоже интересно.
|
|||
2
Vakhrin
05.10.11
✎
15:04
|
итоги без регистратора
+ движения с регистратором + объединение по измерениям |
|||
3
S_Scorp
05.10.11
✎
15:07
|
(2) Не совсем понял, объясни пожалуйста
|
|||
4
Vakhrin
05.10.11
✎
15:09
|
два запроса писать и объединять
в первом только итоги по измерениям во втором только движения до регистратора |
|||
5
Fragster
гуру
05.10.11
✎
15:11
|
все потому что кто-то не умет пользоваться поиском. нужно задать правильно роли
|
|||
6
S_Scorp
05.10.11
✎
15:21
|
А что не правильно в роли:
Скрин3: "http://savepic.su/163957.jpg" |
|||
7
IronDemon
05.10.11
✎
15:37
|
Что за "Сумма2"?
|
|||
8
IronDemon
05.10.11
✎
15:38
|
Сделай объединение не запросом а СКД.
Регистратор и ПериодСекунда в дополнительные поля а не группировку. |
|||
9
S_Scorp
05.10.11
✎
15:56
|
(8) Объединение пробовал делать СКД, а не запросом, одинаковый итог.
"Регистратор и ПериодСекунда в дополнительные поля а не группировку" - как это в дополнительные поля? Т.е. к предыдущей группировке добавить? Но ведь Регистратор это период и его нельзя вместе с измерением выводить. Поясни пожалста, что имел в виду? |
|||
10
S_Scorp
05.10.11
✎
15:57
|
Сумма2 это просто нахвание группировки ресурсов. Оно может быть любым - главное чтоб оно было одинаковое для нач и кон остатка. У меня есть два ресурса СуммаСкидки и Сумма резерва, поэтому для каждого своя группировка "Сумма" и "Сумма2"
|
|||
11
IronDemon
05.10.11
✎
15:58
|
Ошибся, в выводимые поля. Чтобы детальные записи были.
|
|||
12
S_Scorp
05.10.11
✎
16:04
|
(11) так тож не получилось, эффект тот же:
http://savepic.su/185217.png |
|||
13
S_Scorp
05.10.11
✎
16:14
|
интересно еще то, что ниже, по 2-й группировке "Скидки для сетей" конечный остаток посчитался верно
|
|||
14
S_Scorp
05.10.11
✎
16:30
|
пробовал засунуть объединение во вложенный запрос и с него получать данные - не помогло
|
|||
15
S_Scorp
05.10.11
✎
17:26
|
ап
|
|||
16
chingiz
05.10.11
✎
17:52
|
Глупое предложение аля - метод тыка. Попробуй в запросе ресурсы кинуть в суммируемые поля...
|
|||
17
Vakhrin
05.10.11
✎
20:34
|
кури типовые отчеты...
|
|||
18
Necessitudo
05.10.11
✎
21:35
|
Кури СКД:Бесплатный курс. Намекну, что стоит поиграться с добавлением в список выбираемых полей Период - Секунда.
|
|||
19
Necessitudo
05.10.11
✎
21:36
|
Ну и еще вроде с галочкой Дополнительный)
|
|||
20
S_Scorp
06.10.11
✎
08:00
|
Я ведь писал, что пробовал Период-Секунда и как группировку и как выбранное поле, один фиг не получается.
Может кто нибудь показать пример запроса из двух виртуальных таблиц ОстатковИОборотов на скд, чтоб итоги правильно рассчитывались, несмотря на присутствие поля регистратор в детальных записях? |
|||
21
PVV65
06.10.11
✎
09:04
|
Пример отчета http://www.fayloobmennik.net/1041072
|
|||
22
S_Scorp
06.10.11
✎
10:35
|
(21) благодарю! Но у тебя в связях наборов стоит галочка "Обязательная связь". Никак не могу разобраться, что она означает, но очень похоже, что левое соединение. А для моей задачи необходим аналог полного соединения, т.к. могут быть две похожие записи из разных регистров с одинаковыми измерениями (напр. Склад и Номенклатура), но разными регистраторами. В этом случае в отчет должны попасть обе записи в двух разных строках! Я пробовал делать полное соединение в рамках одного запроса, но там вытекают старые проблемы с расчетом нач. и кон.остатков!
|
|||
23
S_Scorp
06.10.11
✎
11:47
|
Разобрался. Создал еще один наборданных, в котором соединил все регистры в запросе полным соединением - получился некий сводный набор данных. Затем левым соединением присобачил к нему два предыдущих набора. Все работает.
Проблема с неправильным расчетом нач. и кон. остатков решилась после того, как я в связях наборов данных, помимо регистратора и измерений указал еще и ПериодСекунда. При этом, ПериодСекунду в выбранных полях СКД можно не указывать. Спасибо всем, кто помогал. Отдельно спасибо PVV65, не поленился и прислал отчет, который натолкнул меня на верное решение. Вот отчет на СКД для 8.2 на упр.форме законченном виде: http://www.fayloobmennik.net/1041374 |
|||
24
PVV65
06.10.11
✎
12:03
|
(23) >>Создал еще один наборданных, в котором соединил все регистры в запросе полным соединением
В СКД есть набор данный - Объединение. Т.е. можно обойтись и без дополнительных запросов. Пример решения с полным соединением - http://www.fayloobmennik.net/1041421 Обрати внимание на роли набора данных - объединения. |
|||
25
S_Scorp
06.10.11
✎
12:16
|
Я пробовал этот вариант, там ситуация была такова, что если период или регистратор присутствуют в выбранных полях, то итоги по измеренияи не считались или считались не правильно, а если рег. и периода не было, то все считалось правильно. Таким образом, первый вариант с соединением наборов данных единственно правильный, насколько я смог разобраться!
|
|||
26
PVV65
06.10.11
✎
12:27
|
(25) В (24) вполне рабочий отчет. Разве что - красоту навести.
|
|||
27
S_Scorp
06.10.11
✎
13:15
|
Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |