СКД: почему секунда - период2 #576465


#0 by Вуглускр1991
Привет! Эксперименты показали: если на периодсекунда назначать роль Период 1, а на регистратор назначать роль Период 2, тогда отчет врет в итогах по измерениям. Вынужден полностью процитировать Хрусталеву: "Заметим, что в отчетах можно выводить группировки периоды, не получая при этом данных из родительских группировок. Например, группировку Регистратор, можно использовать без её родительской группировки Секунда, так как система компоновки данных сама подставит при компоновке нужные родительские поля-периоды, а ""внешне"" в отчете это никак не отразится." (стр. 453) Что есть пнздеж 100% для платформы 8.2.13. Схему могу приложить, и скрины детальных записей с неправильным итогом по измерению. Для того, чтобы все срослось, обязательно нужно указать период Секунда в качестве группировки (в явном виде) И НОМЕР ПЕРИОДА РЕГИСТРАТОРУ - 1, А СЕКУНДЕ 2 хотя Хрусталева в явном виде указывает, что Секунда - это родительский по отношению к Регистратору период, и уровни в 1С принято считать вглубь от 1 до "бесконечности". Логично, что Секунда - родитель к регистратору, ибо в одной секунде возможно несколько регистраторов. Но чтобы работало, надо наоборот. PS.А что значит "Дополнительный" галочка в указании роли периода?
#1 by el-gamberro
ПЕреодично в ВТ должна стоять Авто
#2 by Вуглускр1991
Периодичность в ВТ стоит авто и для случая вранья и для случая когда работает.
#3 by ll13
Не вижу противоречия Хрусталевой тому что установлено экспериментально, а именно: Нумерация периодов начинается с 1, причем 1 - самый младший. В случае с регистратором и секундой: Регистратор - 1, Секунда - 2, то есть секунда является РОДИТЕЛЬСКИМ ПЕРИОДОМ(БОЛЕЕ СТАРШИМ ПЕРИОДОМ) по отношению к регистратору, собственно это и написано у Хрусталевой. "Заметим, что в отчетах можно выводить группировки периоды, не получая при этом данных из родительских группировок. Например, группировку Регистратор, можно использовать без её родительской группировки Секунда, так как система компоновки данных сама подставит при компоновке нужные родительские поля-периоды, а ""внешне"" в отчете это никак не отразится." И здесь всё верно, только госпожа Хрусталева умалчивает тот факт что во первых ОБА ЭТИ ПЕРИОДА ОБЯЗАТЕЛЬНО ДОЛЖНЫ ПРИСУТСТВОВАТЬ В ЗАПРОСЕ, а во вторых у обоих периодов, в данном случае Регистратора и Секунды, обязательно должен быть сброшен флаг "Дополнительно". А вот то что при выполнении вышеупомянутых условий можно использовать в выходных полях и группировках только РЕГИСТРАТОР без его род. периода СЕКУНДЫ она совершенна права.
#4 by Вуглускр1991
Могу допустить, что нумерация периодов обратна нумерации уровней иерархии справочников. Но об этом надо ПИСАТЬ. "А вот то что при выполнении вышеупомянутых условий можно использовать в выходных полях и группировках только РЕГИСТРАТОР без его род. периода СЕКУНДЫ она совершенна права." А вот и нет, задумывалось так - возможно, платформа же кривит итог по измерению. Для того, чтобы итог по измерению вычислялся верно, приходится добавлять пустую группировку <детальные записи> на тот же уровень, на котором стоит группировка "регистратор". Вывод результатов этой группировки тщательно скрывать.
#5 by ll13
Детализацией по регистратору пользуюсь постоянно. Такой проблемы не встречал никогда.
#6 by Вуглускр1991
1С:Предприятие 8.2 (8.2.13.219) файловый, клиент тонкий. Запрос ВЫБРАТЬ    ВзаиморасчетыОстаткиИОбороты.Контрагент,
#7 by Вуглускр1991
(6+) Структура регистра (контрагент, валюта, договор, док_реализации) (сумма) Пусть документ Х делает движения по регистру в двух валютах. Берем за день отчет получаем, что начальный остаток по Контрагенту - остаток на начало документа в одной валюте, а конечный остаток по контрагенту - остаток на конец документа по другой валюте.
#8 by Марсель
RTFM Вы абсолютно не понимаете механизма работы СКД. Поэтому платформа и остается крайней в вашем с ней споре. Хрусталева откровенно плохая книга, для того чтобы понять как работать с СКД - это пособие по кликанью мышкой (т.е. только самые простые отчеты) Читайте документацию разработчика, этот форум и ИТС - и понимание придет. Вопрос обсуждался неоднократно.
#9 by Вуглускр1991
(7+) Пока группировка <детальные записи> все считается правильно, как только группировка "регистратор" - итоги полетели. Ты считаешь RTFM = этот форум? На этом форуме я нашел, что группировку по секундам надо делать обязательно. Обсуждалось - да. Статей нет. Информация не структурирована, не изложена. Расскажи здесь - я статью напишу, для всех (ты соавтор). Потом сможешь посылать в книгу знаний, и вот тогда твое RTFM будет уместно.
#10 by ll13
Выкинь из запроса>> ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата Период дополнения виртуальной таблицы ставь НЕ ДвиженияИГраницыПериода, а ДВИЖЕНИЯ.
#11 by Марсель
RTFM - это руководство разработчика. В нем хоть и весьма сумбурно, но описан алгоритм расчета по полям остатка, и условия при которых он выполняется корректно. На ИТС имеются статьи, которые дополняют этот материал - весьма читаемо... Информация не структурирована... приходится согласиться... но кто ищет - тот всегда найдет (орать-то голословно все горазды) Это не столько критично, но уметь с этим работать тоже надо
#12 by Вуглускр1991
Дату я позже прикрутил, чтобы выровнять колонки общих итогов с колонками по регистратору. В детальных записях поле группировки получалось Регистратор + валюта - а это две колонки, итоги общие смещались. "Период дополнения виртуальной таблицы ставь НЕ ДвиженияИГраницыПериода, а ДВИЖЕНИЯ" - теряется начальное сальдо, и вообще информация по измерениям, если за период не было движений.
#13 by Лефмихалыч
ветку не читал, но ставлю дайм - это или автозаполнение, или роли полей + номера периодов
#14 by Вуглускр1991
роли полей все как надо: регистратор - первый период, секунда - второй, все без без галок. Автозаполнение это где?
#15 by Марсель
:)
#16 by hhhh
как это вы по контрагенту суммируете доллары с евро и рублями. То есть если у вас был приход по контрагенту 100 долларов и 200 рублей, то по-вашему должен получиться остаток 300 рубролларов? Какой-то бред. Немедленно выбросьте это всё в корзину.
#17 by Вуглускр1991
Вы приведения сумм к валюте отчета специально просмотрели? ВзаиморасчетыОстаткиИОбороты.СуммаПриход, ВзаиморасчетыОстаткиИОбороты.СуммаРасход, ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток Эти ресурсы считаются только для группировок Валюта и ниже.
#18 by Вуглускр1991
"Период дополнения виртуальной таблицы ставь НЕ ДвиженияИГраницыПериода, а ДВИЖЕНИЯ." - вот это в параметрах виртуальной таблицы где? Я сделал как обычно, но есть закладка "компоновка данных" в конструкторе запроса. Там тоже можно устанавливать параметры виртуальных таблиц. Где правильно?
#19 by Bober
не забывай настраивать роли в СКД у полей: НОВалюта - начальный остаток) КОВалюта - конечный остаток
#20 by Bober
наглядней всего создать новый отчет на СКД, выбрать остатки и обороты, поставить периодичность авто, выбрать все поля и посмотреть как СКД их настраивает по-умолчанию
#21 by Вуглускр1991
Это сделано, у СуммаНачальныйОстаток СКД роль начальный остаток сумма, а у НОВалюта - роль начальный остаток группа, но сумма и группа это похоже просто имена, я вроде все что угодно написать могу... или нет?
#22 by Вуглускр1991
С утра этим и занимался, сперва как писал складывал доллары с рублями - пофигу лишь бы понять, как надо настроить, чтобы считало правильно, потом уже усложнил.
#23 by Bober
внимательно смотри еще на измерения, у которых заполняется роль "измерение". Если к измерению применяется хоть какая-нибудь обработки, то автоматом это не проставляется и нужно вручную это делать. Еще надо смотреть на момент если в запросе сразу выбирается свойство измерения типа: Номенклатура.ВидНоменклатуры. У такого поля роль не заполняется, требуется вручную указать роль и родительское поле "Номенклатура".
#24 by Bober
там столько музыкальных моментов, но в основном все они критичны для таблиц ОстаткиИОбороты.
#25 by Bober
ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата - с такими вещами есть проблемы.
#26 by Bober
а почему до сих пор на посмотрел курс
#27 by Bober
кстати, по идее период секунда должен быть "Период, 3".
#28 by Bober
на ИТС есть статьи на эту тематику, там показывается как создавать ведомость без таблицы ОстаткиИОбороты. Из этого примера хорошо видно, зачем все эти роли, номера периодов
#29 by Вуглускр1991
Я ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата как период 3 добавил, уже после того, как проблему открыл, нашел кривую козу, чтобы е объехать и вперся в несовпадения колонок. Спасибо, пока с ней проблем нет. И таки: на какой закладке в конструкторе запроса выставлять параметры виртуальной таблицы? 1. "Таблицы и поля" 2. "Компановка данных" Спасибо за участие.
#30 by Вуглускр1991
Автозаполнение нашел и убрал. получилось вот так:    ПериодСекунда}
#31 by Вуглускр1991
Отчет правильно рисует цифры, если стоят группировки "контрагент" и "валюта". Отчет кривит, когда убираю группировку по валютам.
#32 by Вуглускр1991
Док_W0191591   -219,13        800    -1 019,13 руб               7 067     16 100   15 900     7 267    РКО           7 067        100               7 167    Док_W0191591  7 167     16 000              23 167    ПКО          23 167     15 900               7 267
#33 by Вуглускр1991
Убираем группировку по валютам: Контрагент       7 067    16 100    16 700    7 267   РКО           7 067       100              7 167   Док_W0191591     7 167    16 000       800   23 167   ПКО          23 167              15 900    7 267 Это таки косяк и не мой. Это косячит платформа.
#34 by Вуглускр1991
такаяже фигня.
#35 by Ненавижу 1С
конструктивней
#36 by Вуглускр1991
и Это результаты выполнения отчета. на которых видна разница в подсчете итога по контрагенту. Только не видана, в таблице из я не нарисовал строку итогов по колонкам. Правильные итоги такие: НО         Приход     Расход     КО 6 847,87   16 100     16 700     6 247,87
#37 by Bober
какие роли у полей СКД?
#38 by Вуглускр1991
Контрагент, Валюта, Договор, ДокРеал, - Измерения родителей нет, никаких флажков нет СуммаНачальныйОстаток, - Остаток имя сумма тип Нач. остаток НОВалюта, - Остаток имя группа тип Нач. остаток СуммаКонечныйОстаток, - Остаток имя сумма тип Кон. остаток КОВалюта, - Остаток имя группа тип Кон. остаток ПериодСекунда - период 2 Регистратор - период 1
#39 by skiller3000
поле, которое почти всегда однозначно определяет движение по регистру - это документ-регистратор, в секунду же таких документов может быть несколько, поэтому и получается что регистратор - период, 1 - потому что он точнее
#40 by Bober
1. добавь поле НомерСтроки (период, 1) 2. для проверки убери соединение с курсом валют и расчетные ресурсы. 3. Если после этого все будет хорошо, то реализуй ресуры ***Валюта через вычисляемые поля и 2й набор данных.
#41 by Вуглускр1991
Спасибо! Ты прав. Отключил соединение с курсами (думаю, что это было главное), добавил номер строки и стал правильный отчет.
#42 by Вуглускр1991
Видимо не было валюты у начального остатка. Не в базе а в одной из промежуточных таблиц при выполнении запроса  и дальнейшей компоновке.
#43 by Вуглускр1991
Финал: Если измерение "Валюты" делать обязательным, то отчет работает ПОЛНОСТЬЮ правильно. С Внутренним соединением, без номера строки и  даже для вариант "Автозаполнение"
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С