|
СКД: почему секунда - период2 | ☑ | ||
---|---|---|---|---|
0
Вуглускр1991
24.10.11
✎
18:39
|
Привет!
Эксперименты показали: если на периодсекунда назначать роль Период 1, а на регистратор назначать роль Период 2, тогда отчет врет в итогах по измерениям. Вынужден полностью процитировать Хрусталеву: "Заметим, что в отчетах можно выводить группировки периоды, не получая при этом данных из родительских группировок. Например, группировку Регистратор, можно использовать без её родительской группировки Секунда, так как система компоновки данных сама подставит при компоновке нужные родительские поля-периоды, а ""внешне"" в отчете это никак не отразится." (стр. 453) Что есть пнздеж 100% для платформы 8.2.13. Схему могу приложить, и скрины детальных записей с неправильным итогом по измерению. Для того, чтобы все срослось, обязательно нужно указать период Секунда в качестве группировки (в явном виде) И НОМЕР ПЕРИОДА РЕГИСТРАТОРУ - 1, А СЕКУНДЕ 2 хотя Хрусталева в явном виде указывает, что Секунда - это родительский по отношению к Регистратору период, и уровни в 1С принято считать вглубь от 1 до "бесконечности". Логично, что Секунда - родитель к регистратору, ибо в одной секунде возможно несколько регистраторов. Но чтобы работало, надо наоборот. PS.А что значит "Дополнительный" галочка в указании роли периода? |
|||
1
el-gamberro
24.10.11
✎
18:50
|
ПЕреодично в ВТ должна стоять Авто
|
|||
2
Вуглускр1991
24.10.11
✎
19:47
|
(1) Периодичность в ВТ стоит авто и для случая вранья и для случая когда работает.
|
|||
3
ll13
24.10.11
✎
20:58
|
(0) Не вижу противоречия Хрусталевой тому что установлено экспериментально, а именно:
Нумерация периодов начинается с 1, причем 1 - самый младший. В случае с регистратором и секундой: Регистратор - 1, Секунда - 2, то есть секунда является РОДИТЕЛЬСКИМ ПЕРИОДОМ(БОЛЕЕ СТАРШИМ ПЕРИОДОМ) по отношению к регистратору, собственно это и написано у Хрусталевой. Далее "Заметим, что в отчетах можно выводить группировки периоды, не получая при этом данных из родительских группировок. Например, группировку Регистратор, можно использовать без её родительской группировки Секунда, так как система компоновки данных сама подставит при компоновке нужные родительские поля-периоды, а ""внешне"" в отчете это никак не отразится." И здесь всё верно, только госпожа Хрусталева умалчивает тот факт что во первых ОБА ЭТИ ПЕРИОДА ОБЯЗАТЕЛЬНО ДОЛЖНЫ ПРИСУТСТВОВАТЬ В ЗАПРОСЕ, а во вторых у обоих периодов, в данном случае Регистратора и Секунды, обязательно должен быть сброшен флаг "Дополнительно". А вот то что при выполнении вышеупомянутых условий можно использовать в выходных полях и группировках только РЕГИСТРАТОР без его род. периода СЕКУНДЫ она совершенна права. |
|||
4
Вуглускр1991
24.10.11
✎
21:13
|
(3) Могу допустить, что нумерация периодов обратна нумерации уровней иерархии справочников. Но об этом надо ПИСАТЬ.
"А вот то что при выполнении вышеупомянутых условий можно использовать в выходных полях и группировках только РЕГИСТРАТОР без его род. периода СЕКУНДЫ она совершенна права." А вот и нет, задумывалось так - возможно, платформа же кривит итог по измерению. Для того, чтобы итог по измерению вычислялся верно, приходится добавлять пустую группировку <детальные записи> на тот же уровень, на котором стоит группировка "регистратор". Вывод результатов этой группировки тщательно скрывать. |
|||
5
ll13
24.10.11
✎
21:16
|
(4) Детализацией по регистратору пользуюсь постоянно. Такой проблемы не встречал никогда.
|
|||
6
Вуглускр1991
24.10.11
✎
21:20
|
(5)
1С:Предприятие 8.2 (8.2.13.219) файловый, клиент тонкий. Запрос ВЫБРАТЬ ВзаиморасчетыОстаткиИОбороты.Контрагент, ВзаиморасчетыОстаткиИОбороты.Валюта, ВзаиморасчетыОстаткиИОбороты.Договор, ВзаиморасчетыОстаткиИОбороты.ДокРеал, ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток, ВзаиморасчетыОстаткиИОбороты.СуммаПриход, ВзаиморасчетыОстаткиИОбороты.СуммаРасход, ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток, ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК НОВалюта, ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаПриход * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК ПрихВалюта, ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаРасход * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК РасхВалюта, ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК КОВалюта, ВзаиморасчетыОстаткиИОбороты.Регистратор, ВзаиморасчетыОстаткиИОбороты.ПериодСекунда, ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата ИЗ РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(, , Авто, ДвиженияИГраницыПериода, ) КАК ВзаиморасчетыОстаткиИОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсыВалютСрезПоследних ПО ВзаиморасчетыОстаткиИОбороты.Валюта = КурсыВалютСрезПоследних.Валюта |
|||
7
Вуглускр1991
24.10.11
✎
21:24
|
(6+) Структура регистра (контрагент, валюта, договор, док_реализации) (сумма)
Пусть документ Х делает движения по регистру в двух валютах. Берем за день отчет получаем, что начальный остаток по Контрагенту - остаток на начало документа в одной валюте, а конечный остаток по контрагенту - остаток на конец документа по другой валюте. |
|||
8
Марсель
24.10.11
✎
21:24
|
(0) RTFM
Вы абсолютно не понимаете механизма работы СКД. Поэтому платформа и остается крайней в вашем с ней споре. Хрусталева откровенно плохая книга, для того чтобы понять как работать с СКД - это пособие по кликанью мышкой (т.е. только самые простые отчеты) Читайте документацию разработчика, этот форум и ИТС - и понимание придет. Вопрос обсуждался неоднократно. |
|||
9
Вуглускр1991
24.10.11
✎
21:28
|
(7+) Пока группировка <детальные записи> все считается правильно, как только группировка "регистратор" - итоги полетели.
(8) Ты считаешь RTFM = этот форум? На этом форуме я нашел, что группировку по секундам надо делать обязательно. Обсуждалось - да. Статей нет. Информация не структурирована, не изложена. Расскажи здесь - я статью напишу, для всех (ты соавтор). Потом сможешь посылать в книгу знаний, и вот тогда твое RTFM будет уместно. |
|||
10
ll13
24.10.11
✎
21:32
|
Выкинь из запроса>> ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата
Период дополнения виртуальной таблицы ставь НЕ ДвиженияИГраницыПериода, а ДВИЖЕНИЯ. |
|||
11
Марсель
24.10.11
✎
21:36
|
(9) RTFM - это руководство разработчика. В нем хоть и весьма сумбурно, но описан алгоритм расчета по полям остатка, и условия при которых он выполняется корректно.
На ИТС имеются статьи, которые дополняют этот материал - весьма читаемо... Информация не структурирована... приходится согласиться... но кто ищет - тот всегда найдет (орать-то голословно все горазды) (10) Это не столько критично, но уметь с этим работать тоже надо |
|||
12
Вуглускр1991
24.10.11
✎
21:36
|
(10) Дату я позже прикрутил, чтобы выровнять колонки общих итогов с колонками по регистратору. В детальных записях поле группировки получалось Регистратор + валюта - а это две колонки, итоги общие смещались.
"Период дополнения виртуальной таблицы ставь НЕ ДвиженияИГраницыПериода, а ДВИЖЕНИЯ" - теряется начальное сальдо, и вообще информация по измерениям, если за период не было движений. |
|||
13
Лефмихалыч
24.10.11
✎
21:40
|
ветку не читал, но ставлю дайм - это или автозаполнение, или роли полей + номера периодов
|
|||
14
Вуглускр1991
24.10.11
✎
21:44
|
(13) роли полей все как надо:
регистратор - первый период, секунда - второй, все без без галок. Автозаполнение это где? |
|||
15
Марсель
24.10.11
✎
21:45
|
:)
|
|||
16
hhhh
24.10.11
✎
21:46
|
(7) как это вы по контрагенту суммируете доллары с евро и рублями. То есть если у вас был приход по контрагенту 100 долларов и 200 рублей, то по-вашему должен получиться остаток 300 рубролларов? Какой-то бред. Немедленно выбросьте это всё в корзину.
|
|||
17
Вуглускр1991
24.10.11
✎
21:50
|
(16) Вы приведения сумм к валюте отчета специально просмотрели?
"ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаПриход * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК ПрихВалюта" Эти ресурсы: ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток, ВзаиморасчетыОстаткиИОбороты.СуммаПриход, ВзаиморасчетыОстаткиИОбороты.СуммаРасход, ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток Эти ресурсы считаются только для группировок Валюта и ниже. |
|||
18
Вуглускр1991
24.10.11
✎
21:55
|
(10) "Период дополнения виртуальной таблицы ставь НЕ ДвиженияИГраницыПериода, а ДВИЖЕНИЯ." - вот это в параметрах виртуальной таблицы где? Я сделал как обычно, но есть закладка "компоновка данных" в конструкторе запроса. Там тоже можно устанавливать параметры виртуальных таблиц. Где правильно?
|
|||
19
Bober
24.10.11
✎
21:55
|
(6)
не забывай настраивать роли в СКД у полей: НОВалюта - начальный остаток) КОВалюта - конечный остаток |
|||
20
Bober
24.10.11
✎
21:58
|
(0) наглядней всего создать новый отчет на СКД, выбрать остатки и обороты, поставить периодичность авто, выбрать все поля и посмотреть как СКД их настраивает по-умолчанию
|
|||
21
Вуглускр1991
24.10.11
✎
21:59
|
(19) Это сделано, у СуммаНачальныйОстаток СКД роль начальный остаток сумма, а у НОВалюта - роль начальный остаток группа, но сумма и группа это похоже просто имена, я вроде все что угодно написать могу... или нет?
|
|||
22
Вуглускр1991
24.10.11
✎
22:00
|
(20) С утра этим и занимался, сперва как писал (16) складывал доллары с рублями - пофигу лишь бы понять, как надо настроить, чтобы считало правильно, потом уже усложнил.
|
|||
23
Bober
24.10.11
✎
22:03
|
внимательно смотри еще на измерения, у которых заполняется роль "измерение".
Если к измерению применяется хоть какая-нибудь обработки, то автоматом это не проставляется и нужно вручную это делать. Еще надо смотреть на момент если в запросе сразу выбирается свойство измерения типа: Номенклатура.ВидНоменклатуры. У такого поля роль не заполняется, требуется вручную указать роль и родительское поле "Номенклатура". |
|||
24
Bober
24.10.11
✎
22:04
|
там столько музыкальных моментов, но в основном все они критичны для таблиц ОстаткиИОбороты.
|
|||
25
Bober
24.10.11
✎
22:05
|
ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата - с такими вещами есть проблемы.
|
|||
26
Bober
24.10.11
✎
22:06
|
а почему до сих пор на посмотрел курс
http://www.spec8.ru/kurs-po-skd-besplatno |
|||
27
Bober
24.10.11
✎
22:07
|
(0) кстати, по идее период секунда должен быть "Период, 3".
|
|||
28
Bober
24.10.11
✎
22:09
|
на ИТС есть статьи на эту тематику, там показывается как создавать ведомость без таблицы ОстаткиИОбороты. Из этого примера хорошо видно, зачем все эти роли, номера периодов
|
|||
29
Вуглускр1991
24.10.11
✎
22:12
|
(27) Я ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата как период 3 добавил, уже после того, как проблему открыл, нашел кривую козу, чтобы е объехать и вперся в несовпадения колонок.
Спасибо, пока с ней проблем нет. И таки: на какой закладке в конструкторе запроса выставлять параметры виртуальной таблицы? 1. "Таблицы и поля" 2. "Компановка данных" Спасибо за участие. |
|||
30
Вуглускр1991
25.10.11
✎
12:29
|
Автозаполнение нашел и убрал.
получилось вот так: ВЫБРАТЬ ВзаиморасчетыОстаткиИОбороты.Контрагент КАК Контрагент, ВзаиморасчетыОстаткиИОбороты.Валюта КАК Валюта, ВзаиморасчетыОстаткиИОбороты.Договор КАК Договор, ВзаиморасчетыОстаткиИОбороты.ДокРеал КАК ДокРеал, ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток, ВзаиморасчетыОстаткиИОбороты.СуммаПриход КАК СуммаПриход, ВзаиморасчетыОстаткиИОбороты.СуммаРасход КАК СуммаРасход, ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток, ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК НОВалюта, ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаПриход * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК ПрихВалюта, ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаРасход * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК РасхВалюта, ВЫРАЗИТЬ(ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток * КурсыВалютСрезПоследних.Курс / &КурсВалюты КАК ЧИСЛО(15, 2)) КАК КОВалюта, ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Регистратор, ВзаиморасчетыОстаткиИОбороты.ПериодСекунда КАК ПериодСекунда {ВЫБРАТЬ Контрагент, Валюта, Договор, ДокРеал, СуммаНачальныйОстаток, СуммаПриход, СуммаРасход, СуммаКонечныйОстаток, НОВалюта, ПрихВалюта, РасхВалюта, КОВалюта, Регистратор.*, ПериодСекунда} ИЗ РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, Движения, ) КАК ВзаиморасчетыОстаткиИОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсыВалютСрезПоследних ПО ВзаиморасчетыОстаткиИОбороты.Валюта = КурсыВалютСрезПоследних.Валюта {ГДЕ ВзаиморасчетыОстаткиИОбороты.Контрагент} |
|||
31
Вуглускр1991
25.10.11
✎
12:32
|
Отчет правильно рисует цифры, если стоят группировки "контрагент" и "валюта".
Отчет кривит, когда убираю группировку по валютам. |
|||
32
Вуглускр1991
25.10.11
✎
12:39
|
бонус -219,13 800 -1 019,13
Док_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
Вуглускр1991
25.10.11
✎
12:54
|
Убираем группировку по валютам:
Контрагент 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
Вуглускр1991
25.10.11
✎
13:50
|
1С:Предприятие 8.2 (8.2.14.537)
такаяже фигня. |
|||
35
Ненавижу 1С
гуру
25.10.11
✎
14:56
|
конструктивней
|
|||
36
Вуглускр1991
25.10.11
✎
15:06
|
(32) и (33) Это результаты выполнения отчета.
на которых видна разница в подсчете итога по контрагенту. Только не видана, в таблице из (32) я не нарисовал строку итогов по колонкам. Правильные итоги такие: НО Приход Расход КО 6 847,87 16 100 16 700 6 247,87 |
|||
37
Bober
25.10.11
✎
15:23
|
какие роли у полей СКД?
|
|||
38
Вуглускр1991
25.10.11
✎
18:46
|
(37)
Контрагент, Валюта, Договор, ДокРеал, - Измерения родителей нет, никаких флажков нет СуммаНачальныйОстаток, - Остаток имя сумма тип Нач. остаток НОВалюта, - Остаток имя группа тип Нач. остаток СуммаКонечныйОстаток, - Остаток имя сумма тип Кон. остаток КОВалюта, - Остаток имя группа тип Кон. остаток ПериодСекунда - период 2 Регистратор - период 1 |
|||
39
skiller3000
25.10.11
✎
19:01
|
поле, которое почти всегда однозначно определяет движение по регистру - это документ-регистратор, в секунду же таких документов может быть несколько, поэтому и получается что регистратор - период, 1 - потому что он точнее
|
|||
40
Bober
25.10.11
✎
19:05
|
(38)
1. добавь поле НомерСтроки (период, 1) 2. для проверки убери соединение с курсом валют и расчетные ресурсы. 3. Если после этого все будет хорошо, то реализуй ресуры ***Валюта через вычисляемые поля и 2й набор данных. |
|||
41
Вуглускр1991
25.10.11
✎
19:22
|
(40) Спасибо! Ты прав.
Отключил соединение с курсами (думаю, что это было главное), добавил номер строки и стал правильный отчет. |
|||
42
Вуглускр1991
25.10.11
✎
19:25
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ПО ВзаиморасчетыОстаткиИОбороты.Валюта = КурсыВалютСрезПоследних.Валюта Видимо не было валюты у начального остатка. Не в базе а в одной из промежуточных таблиц при выполнении запроса и дальнейшей компоновке. |
|||
43
Вуглускр1991
26.10.11
✎
09:39
|
Финал:
Если измерение "Валюты" делать обязательным, то отчет работает ПОЛНОСТЬЮ правильно. С Внутренним соединением, без номера строки и даже для вариант "Автозаполнение" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |