1. shamahn 1 06.04.13 21:57 Сейчас в теме

Непонятные данные виртуальной таблицы остатки и обороты

Доброго времени суток!
Столкнулся с такой проблемой. Есть простенький регистр накопления с 8ю измерениями и 1м ресурсом:

Интересуют данные по помесячным остатками и оборотам. Очень простеньким запросом выбираем их:
ВЫБРАТЬ
	КВП_ВзаиморасчетыПоЛицевымСчетамОстаткиИОбороты.Период,
	КВП_ВзаиморасчетыПоЛицевымСчетамОстаткиИОбороты.ЛицевойСчет,
	КВП_ВзаиморасчетыПоЛицевымСчетамОстаткиИОбороты.Услуга,
	КВП_ВзаиморасчетыПоЛицевымСчетамОстаткиИОбороты.ВидНачисления,
	КВП_ВзаиморасчетыПоЛицевымСчетамОстаткиИОбороты.СуммаНачисленияНачальныйОстаток,
	КВП_ВзаиморасчетыПоЛицевымСчетамОстаткиИОбороты.СуммаНачисленияКонечныйОстаток,
	КВП_ВзаиморасчетыПоЛицевымСчетамОстаткиИОбороты.СуммаНачисленияОборот
ИЗ
	РегистрНакопления.КВП_ВзаиморасчетыПоЛицевымСчетам.ОстаткиИОбороты(, , Месяц, , ЛицевойСчет = &ЛицевойСчет) КАК КВП_ВзаиморасчетыПоЛицевымСчетамОстаткиИОбороты
Показать

И получаем весьма странный результат

Т.е. из месяца марта выпали некоторые данные. Причем итоговая сумма (верная получается) посчитана с учетом тех строк, которые в отчет не попали.
Проверял не СКДой. Обычным запросом результат тот же самый. Пересчитывал итоги. Ничего не помогает. Результат одинаков для любых "лицевых счетов".
Но одна странная закономерность, есть убрать детализацию по виду начисления, все становится правильно:

В Общем, буду благодарен любым предположениям
Ответы
Избранное Подписка Сортировка: Древо
6. AnryMc 720 07.04.13 08:08 Сейчас в теме
(1) Так, проходя мимио, А пересчет итогов не пробовали?

Пардон
Пересчитывал итоги. Ничего не помогает.

Сразу не заметил
15. sonuchin3 09.04.13 21:15 Сейчас в теме
Если вывести только лишь саму виртуальную таблицу остатков и оборотов, т.е. например в консоли отчетов без СКД и без использования итогов, то будет выведено следующее:
1) внутри заданного периода записи с оборотами, начальным и конечным остатками для тех периодов, определяемых параметром "Периодичность", в которых были обороты;
2) на начало и на конец заданного периода - записи с начальным и конечным остатками - в том случае, если параметр "Метод дополнения периодов" установлен в значение ДвиженияИГраницыПериода (или не задан - тогда то же значение имеем по умолчанию).

Если же мы выводим отчет с использованием СКД, и в отчете присутствуют и группировочные строки, и детальные записи, то получается так:
В группировочных строках подсчитываются правильные суммы по группировке (если только не допустить каких-либо других ошибок), а детальные записи выводятся только те, что есть в виртуальной таблице, т.е. только по тем значениям наборов измерений, по которым были обороты.
Это мы и видим в (1) - правильные значения в строках месяцев и отсутствие детальных записей по пеням в марте.
Ну, и в январе и в июне, конечно же, правильные результаты в соответствии с параметром "Метод дополнения периодов" - ДвиженияИГраницыПериода.

Я думаю, что для правильного результата надо в настройки отчета добавить группировки по Услуге и по Виду начисления (под группировкой по Месяцу), а детальные записи вообще исключить.

Между прочим, в этом случае должны будут появиться записи за апрель и май (по 4 штуки) с начальным и конечным остатками и без оборотов.
user919054; Захаров_Николай; Михаська; +3 Ответить
2. sonuchin3 06.04.13 23:00 Сейчас в теме
А то, что из апреля и мая выпали все данные, не смущает?
Мне кажется, что дело вот в чем:

Метод дополнения периодов
Если задан ДвиженияИГраницыПериода то будут выбраны периоды, в которых были движения, и периоды на начало и конец заданного периода.
Значение по умолчанию: ДвиженияИГраницыПериода
(Синтакс-помощник)

Т.е. по каждому набору измерений остатки и обороты по ним показаны по тем месяцам, в которых были движения с этими измерениями - это январь и февраль по всем видам начислений, а также март только для вида "Начисления". И плюс к этому по всем наборам остатки на начало периода - январь (ну, это уже было показано) и конец периода - июнь.

Досканально не проверял, так что предлагаю на уровне идеи.
3. shamahn 1 07.04.13 00:14 Сейчас в теме
(2), спасибо за ответ.
А то, что из апреля и мая выпали все данные, не смущает?

Да нет. Пусть будет :). Нужны данные, с точностью на начало текущего месяца, а они что-то хромают.
По всякому перетыкнул. Результат не меняется в плане того, что Конечный остаток на февраль не равен начальному остатку на март.

Вопрос остается открытым :(
4. RustamZz 07.04.13 00:32 Сейчас в теме
5. sonuchin3 07.04.13 07:36 Сейчас в теме
Я бы еще порекомендовал с ИТС тему
"Язык запросов" --> "Дополнение результата запроса датами в установленном периоде"
- для случая, когда надо получить результат, не используя СКД.
9. shamahn 1 07.04.13 10:10 Сейчас в теме
(5) Я пробовал делать 2е выборки по виртуальной таблице с обработкой результата без скд. Один - остатки и обороты за февраль, другой - остатки и обороты за март. Так вот данные на конец февраля реально не совпадали с данными на начало марта.
(7) Да, и конкретно по всем объектам и конкретно последний месяц с рассчитанными итогами. База не единственная, у нас в 6ти или 7ми конторах она стоит. Ситуация идентична (по крайней мере еще с одной точно, позже еще на одной опробую). Идеи просто кончились.
(8)
вот все записи из регистра за март. Там движений по виду начисления "пени" нет. Но это не дает ему права отличаться от записей на конец февраля.
Повторюсь, если отключить детализацию по виду начисления - выводятся правильные сгруппированные по услуге данные.
7. Nelli_A86 07.04.13 09:13 Сейчас в теме
Интересно, что у вас один конкретный вид все время выпадает, может стоит в этом направлении копать?
8. Nelli_A86 07.04.13 09:17 Сейчас в теме
Кстати, а как выглядит таблица движений регистра за этот период смотрели? Возможно проблема с измерением МесяцНачисления, если Пени считаются задним числом...
10. Nelli_A86 07.04.13 12:21 Сейчас в теме
Могу предположить, что у вас запрос с начала выбирает только те комбинации записей, которые встречались в регистре на текущий период (комбинация измерений месяц+услуга+лс+вид), а потом по каждому из них выводит остатки и оборот. Т.е. если в месяце 01.03.2013 не было такого вида, как Пени, то он там и не появится... А итоговую сумму как считаете? Ресурсом в СКД или как-то в самом запросе?
11. mixa4 07.04.13 22:31 Сейчас в теме
(10) Nelli_A86, это не объясняет почему тогда в 6 месяце строку по пени выводит, хотя оборотов нет... впрочем, а если период отчета задать по 7й месяц или более, тогда за 6й выведет те же строки?
13. shamahn 1 08.04.13 20:04 Сейчас в теме
(10) Ресурс в СКД. Запрос в первом посте. Проще не придумать. Выбираю все записи с отбором по Л/С, с периодом (месяц). В СКД группировка "период". Все. Проблема не в запросе, однозначно.
(11) Это я и пытаюсь донести. Что в последнем периоде все отображается правильно, хотя в нем вообще никаких движений нет.
(12) Неа. Вообще никакой движухи нет еще в 6м месяце.
12. Nelli_A86 08.04.13 07:59 Сейчас в теме
А за 6 мес. в регистре есть вообще какие-то записи?
14. Nelli_A86 09.04.13 09:19 Сейчас в теме
Метод дополнения периодов
Метод дополнения периодов (необязательный)

Конструкция языка запросов. Метод дополнения периодов. Задается один из вариантов:
Движения (RegisterRecords)
ДвиженияИГраницыПериода (RegisterRecordsAndPeriodBoundaries)
Если задан Движения то будут выданы те периоды в которых были движения.
Если задан ДвиженияИГраницыПериода то будут выбраны периоды, в которых были движения, и периоды на начало и конец заданного периода.
Значение по умолчанию: ДвиженияИГраницыПериода
16. _HakerAlex_ 10.04.13 19:03 Сейчас в теме
Тут все просто скидываю простой пример...

ВЫБРАТЬ
КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d), МЕСЯЦ) КАК Период
ПОМЕСТИТЬ ПериодыОтчета
{ВЫБРАТЬ
Период}
ИЗ
(ВЫБРАТЬ
0 КАК a

ОБЪЕДИНИТЬ

ВЫБРАТЬ
1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
9) КАК aa
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК b

ОБЪЕДИНИТЬ

ВЫБРАТЬ
1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
9) КАК bb
ПО (ИСТИНА)
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК c

ОБЪЕДИНИТЬ

ВЫБРАТЬ
1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
9) КАК cc
ПО (ИСТИНА)
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК d

ОБЪЕДИНИТЬ

ВЫБРАТЬ
1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
9) КАК dd
ПО (ИСТИНА)
ГДЕ
aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СУММА(Общая.Количество) КАК Количество,
Общая.Период КАК Период,
Общая.Номенклатура,
Общая.Склад,
Общая.ВидСклада
ПОМЕСТИТЬ ТаблицаОстатков
ИЗ
(ВЫБРАТЬ
СК_ОстаткиОбороты.ОстатокОборот КАК Количество,
КОНЕЦПЕРИОДА(СК_ОстаткиОбороты.Период, МЕСЯЦ) КАК Период,
СК_ОстаткиОбороты.Номенклатура КАК Номенклатура,
СК_ОстаткиОбороты.Склад КАК Склад,
СК_ОстаткиОбороты.Склад.ВидСклада КАК ВидСклада
ИЗ
РегистрНакопления.СК_Остатки.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, ДЕНЬ, ) КАК СК_ОстаткиОбороты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
СК_ОстаткиОстатки.ОстатокОстаток,
КОНЕЦПЕРИОДА(&НачалоПериода, МЕСЯЦ),
СК_ОстаткиОстатки.Номенклатура,
СК_ОстаткиОстатки.Склад,
СК_ОстаткиОстатки.Склад.ВидСклада
ИЗ
РегистрНакопления.СК_Остатки.Остатки({(&НачалоПериода)}, ) КАК СК_ОстаткиОстатки) КАК Общая

СГРУППИРОВАТЬ ПО
Общая.Период,
Общая.Номенклатура,
Общая.Склад,
Общая.ВидСклада
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПериодыОтчета.Период КАК Период,
СУММА(ТаблицаОстатков.Количество) КАК Количество,
ТаблицаОстатков.Номенклатура,
ТаблицаОстатков.Склад,
ТаблицаОстатков.ВидСклада
ПОМЕСТИТЬ ТаблицаПериодыОстатки
ИЗ
ПериодыОтчета КАК ПериодыОтчета
ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОстатков КАК ТаблицаОстатков
ПО (ТаблицаОстатков.Период <= ПериодыОтчета.Период)

СГРУППИРОВАТЬ ПО
ПериодыОтчета.Период,
ТаблицаОстатков.Номенклатура,
ТаблицаОстатков.Склад,
ТаблицаОстатков.ВидСклада
;
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день


Программисты 1С УТ / БУЗ/ЗУП / БИТ ФИНАНС
Москва
зарплата от 100 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 150 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству