Имя: Пароль:
1C
1С v8
Регистры накопления в последних версиях платформы.
0 mkalimulin
 
11.02.17
18:18
Говорят, что теперь можно хранить только актуальные остатки, а не остатки по месяцам. Кто знает  - как это делается?
1 Amra
 
11.02.17
18:20
Чего? Остатки по месяцам? Это что?
2 mehfk
 
11.02.17
18:21
(0) А что не спросишь у того, кто говорит?
3 Aleksey
 
11.02.17
18:22
(1) Ты не знал?
4 mkalimulin
 
11.02.17
18:22
(2) Забыл - где и когда слышал. Мне тогда было не важно.
5 mkalimulin
 
11.02.17
18:24
(1) Если ничего не настраивать, регистр будет хранить остатки на каждый месяц.
6 Aleksey
 
11.02.17
18:25
Вроде как кроме добавления агрегатов ничего в РН не менялось со времен 8.0
7 mkalimulin
 
11.02.17
18:28
(6) Да, нет. Там сейчас можно как-то исхитриться.
8 Звездец
 
11.02.17
18:29
(7) так расскажи нам
9 Aleksey
 
11.02.17
18:30
(5) А если настроить тогда что будет? Каждый квартал?
10 mkalimulin
 
11.02.17
18:32
(9) Только актуальные итоги.
11 Звездец
 
11.02.17
18:33
(10) а если тебе нужен остаток на дату?
12 Aleksey
 
11.02.17
18:34
(10) Не понял? Он и так там хранит помесячно, и в отличии от 7-ки нельзя задать другой период. Правда, в отличии от 7-ки, не нужно каждый месяц рассчитывать итоги, он лояльно относится к не рассчитанным итогам
13 Aleksey
 
11.02.17
18:35
(11) делает ровно то же что и 7-ка. Последние рассчитанные остатки + обороты (это если не на ТА нужны остатки)
14 Звездец
 
11.02.17
18:36
(13) это понятно, а если ТС сделает так что у него есть только на ТА, а надо на дату 2 года назад? рассчитывать от сегодняшнего дня?
15 Aleksey
 
11.02.17
18:38
(14) Ну да. (остатки на ТА) - (обороты за 2 года)
16 Звездец
 
11.02.17
18:39
(15) и в чем тогда плюсы? нафига это надо?
17 mkalimulin
 
11.02.17
18:46
(12) Нашел. Теперь можно задать минимальную и максимальную дату хранения остатков. Ставишь и туда и туда 01/11/3999 - получаются только актуальные итоги.
18 mkalimulin
 
11.02.17
18:47
(16) Быстро нужны только актуальные итоги.
19 Звездец
 
11.02.17
18:50
(18) чем имеющийся алгоритм не нравится?
20 mkalimulin
 
11.02.17
18:53
Или все-таки достаточно просто выключить "итоги" и оставить только "текущие итоги"? Кто знает?
21 mkalimulin
 
11.02.17
18:54
(19) Итогами не нравится. Их много.
22 mkalimulin
 
11.02.17
18:58
Нет просто выключить "итоги" нельзя. Надоело экспериментировать. Гугл что-то скрывает. Подскажите - кто знает.
23 rozer76
 
11.02.17
21:51
(22) если будет не оперативное проведение расчет итогов будет долгим.. она тебе надо?
24 mkalimulin
 
11.02.17
22:33
(23) С чего это вдруг долго? Как раз наоборот быстрее.
25 Bober
 
12.02.17
11:16
Расчет только текущих итогов был всегда.
Устанавливаешь период расчета основных итогов в 00010101 и в таблице итогов только текущие итоги.
Проверить что все как надо:
ПолучитьИспользованиеТекущихИтогов() - Истина
ПолучитьИспользованиеИтогов() - Истина
ПолучитьМаксимальныйПериодРассчитанныхИтогов() - 00010101
26 Злопчинский
 
12.02.17
11:27
(24) с чего это быстрее?
у тебя есть массив движений, нескольо десятокв/сотен миллионов операций.
и есть итоги на сейчас.
теперича надо посчитать взаду итоги - ровно "посерединке" массива операций - хоть убубухайся придется перелопатить половину массива движений. а это "долго "по рсавнению с тем, что были бы итоги помесячные и пришлось бы перелопатить маскимум движеняи за полмесяца...
27 Злопчинский
 
12.02.17
11:27
(25) а почему 0001 - а не 3999..?
28 Aleksey
 
12.02.17
11:31
(27) потому что 3999 - это ТА, а рассчитанные итоги это не ТА
29 Фрэнки
 
12.02.17
12:13
вероятно, что ТС задумал какое-то интересное применение, жутко эффективное и заточенное на решение узкой задачи.

Решение просто на типовом применении регистра остатков его не устраивает. Ну так надо тогда фантазировать.
(Все равно Заказчик в этих фантазиях ничего не поймет)

В регистрах накопления есть и Остатки и Обороты. Версия номер один - используй оборотный регистр, который ну будет расходовать записи на хранение остатков.
Другая версия - используй регистр сведений. Если нужно только одно значение, называемое "актуальный остаток" и не более того, так это уже не регистр Накопления, а регистр Сведений.
Ну будет отдельная ситуация, что получение сводного значения по множеству сведений одного из измерений (если их несколько) можно будет сделать только запросом. Но очень может быть, что затраты на получение этого итога самописным запросом окажутся сопоставимы со встроенными итогами по виртуальной таблице Остатков...

В общем виде, так, а для конкретики здесь в теме мало данных, чтоб рекомендовать чего-то еще
30 Фрэнки
 
12.02.17
12:14
*  оборотный регистр, который НЕ будет расходовать записи на хранение остатков
31 mkalimulin
 
12.02.17
12:51
(26) Не оперативное проведение будет быстрее, если у тебя хранятся только актуальные итоги.
32 Фрэнки
 
12.02.17
12:55
если это полностью самопальный регистр, новый, нетиповой, то какой смысл применять к нему рассуждения о скорости оперативного или неоперативного проведении? Разработчик может повесить регистрацию движений по регистру в фоновом процессе и инициализировать этот процесс на подписке к событию, причем, просто к событию ПриЗаписи
33 mkalimulin
 
12.02.17
12:58
(25) Спасибо. Требуются гигаватты энергии, чтобы понять логику 1С. Я устанавливаю макс. период в минимум, чтобы отключить расчет промежуточных итогов. Логичнее было бы предположить, что для этого достаточно снять флажок "Использование итогов". Кстати, зачем он тогда нужен?
34 mkalimulin
 
12.02.17
13:04
(32) Скорость - не главное. Насчет скорости, я просто ответил на вопрос.
35 Bober
 
12.02.17
13:22
(33) флаг "итоги рассчитаны" нужен для работы системы (запросов). Если выключить итоги, то запрос к таблице остатков с не пустым значением период будет вызывать исключение. период 00010101 - это значение расчета итогов по-умолчанию, например создал новый регистр и еще не производит расчетов итого.
36 Bober
 
12.02.17
13:26
(34) Скорость ты получишь, но нужно помнить про такие вещи как: Нельзя записывать в регистр данные будущих периодов. Нельзя злоупотреблять получением остатков сильно назад, так как в этом случае платформа получает текущие итоги и из таблицы движений добирает записи для расчет итогов до заданного периода.
37 Bober
 
12.02.17
13:28
в общем этот способ работы - это идеальная OLTP система, смотрим только вперед, ничего не исправляем задним числом, отчеты смотрим только на сейчас, без выбора периода.
38 mkalimulin
 
12.02.17
13:29
(35) С пустым тоже не работает. Если бы работал с пустым, это было бы приемлемо. Почему нельзя писать будущим периодом?
39 mkalimulin
 
12.02.17
13:31
(29) Регистр оборотов тоже хранит промежуточные итоги на каждый месяц. Надо выключать итоги, включать агрегаты. Просто так, вручную агрегаты не настроишь. Я на этом сломался.
40 Фрэнки
 
12.02.17
13:36
(39) ну так я и пишу, об использовании собственных запросов и неиспользовании преопределенных виртуальных таблиц или агрегатов
41 Bober
 
12.02.17
13:36
(38) с пустым периодом остаточный регистр работает, просто все считает на лету.
42 Фрэнки
 
12.02.17
13:38
(39) наплюй на готовые итоги. Ну зачем они тебе, по большому счету, когда в плане запроса все равно обращение к предопределенным именам таблиц, агрегатам и прочим прибамбасам - это все равно еще какие-то запросы, но генерация таких запросов происходит в платформе на сервере.
43 mkalimulin
 
12.02.17
13:39
(41)
{ВнешняяОбработка.jug.Форма.Форма.Форма(1286)}: Ошибка при вызове метода контекста (ВыполнитьПакетСПромежуточнымиДанными)
    мр=запрос.ВыполнитьПакетСПромежуточнымиДанными();
по причине:
{(6, 2)}: Ошибка обработки представления "РегистрНакопления.ОстаткиНаСкладе.Остатки:Использование итогов выключено"
<<?>>РегистрНакопления.ОстаткиНаСкладе.Остатки КАК РегистрНакопленияОстаткиНаСкладе
44 mkalimulin
 
12.02.17
13:41
(41) Я не про период, а про галку.
45 mkalimulin
 
12.02.17
13:41
(40) Ты рекомендовал регистр оборотов.
46 Фрэнки
 
12.02.17
13:42
(45) для оборотов - его, а для остатков можно замутить РС

практически полностью свое казино с блэкджеком и шлюхами
47 Bober
 
12.02.17
13:45
(44) у тебя отключены итоги. Включи их и все будет работать.
48 Bober
 
12.02.17
13:46
(46) не стоит РС, он будет сильно рассыпаться, все время нужно будет за ним следить.
49 mkalimulin
 
12.02.17
13:49
(47) В этом и вопрос. Зачем эта галка вообще нужна.
Есть две галки: "Итоги" и "Текущие итоги". Логично предположить, что выключив первую и оставив включенной вторую, ты получишь только текущие итоги в таблице итогов.
50 Фрэнки
 
12.02.17
13:49
(48) а хрен редьки не слаще, конечно.
Или за ним следить, или следить за чем-то еще.

Мы не знаем на самом деле, какую именно задачу пытается решать ТС, какие параметры это задача имеет. Т.е. рассматривается техническая возможность манипуляций со свойствами объектов метаданных, но цели этих манипуляций могут оставаться противоречивыми к ожидаемому результату.
51 mkalimulin
 
12.02.17
13:50
(46) Чем он будет лучше РН без промежуточных итогов?
52 Bober
 
12.02.17
13:51
(49) тогда покажи весь запрос к таблице итогов
53 Джинн
 
12.02.17
13:51
(51) ...лучше, чем грузины. (с)
54 mkalimulin
 
12.02.17
13:51
(50) Цель я уже озвучил. Не хранить в базе промежуточные итоги.
55 Джинн
 
12.02.17
13:52
(54) Анакуа? Из религиозных соображений?
56 Bober
 
12.02.17
13:52
(50) задача понятна, не хранить промежуточные расчеты итогов, так как не требуется для решаемой задачи.
57 mkalimulin
 
12.02.17
13:52
(55) Анакуа хранить?
58 Bober
 
12.02.17
13:54
(55) а зачем они например нужны для биллинговых\опендей\front систем.
59 Джинн
 
12.02.17
13:56
(57) Кагбэ это Очевидно(с) - для ускорения получения остатков.
60 Bober
 
12.02.17
13:57
(59) ну вот не нужно хранить остатки в системе в разрезе месяцев
61 Фрэнки
 
12.02.17
13:58
а выше было упомянуто, что остаток всегда только один :)
на что я предположил, что такой остаток можно хранить в РС
62 mkalimulin
 
12.02.17
13:58
(52)
ВЫБРАТЬ
    РегистрНакопленияОстаткиНаСкладеОстатки.Товар,
    РегистрНакопленияОстаткиНаСкладеОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ОстаткиНаСкладе.Остатки КАК РегистрНакопленияОстаткиНаСкладеОстатки
63 Джинн
 
12.02.17
13:59
(58) Если не нужны остатки, то на кой ляд остаточный регистр? Если есть остаточный регистр, закрывается и остатков нет, то какие остатки по месяцам?
64 Bober
 
12.02.17
13:59
(49) флаги указывают на то, что при записи платформа должна произвести корректировку записей в итогах. Если ты выключил итоги, то платформа при запросе итогов отличных от текущих  выводит сообщение об ошибке, это как свойство поля запрет незаполненных значений.
65 Джинн
 
12.02.17
14:00
(60) Моя твоя не понимай ... (с)
66 mkalimulin
 
12.02.17
14:00
(63) Текущие остатки нужны.
67 mkalimulin
 
12.02.17
14:01
(64) При любом запросе ругается.
68 Bober
 
12.02.17
14:02
(65) Это актуально только для систем с большими объемами данных.
69 mkalimulin
 
12.02.17
14:03
(64) Начинаю вспоминать. Галка нужна для того, чтобы ее на время выключить, а потом сразу включить. С выключенной галкой запросы не работают. Другой вопрос: зачем тогда их две.
70 Bober
 
12.02.17
14:06
(69) есть итоги, а есть текущие итоги. разработчики 1с считают что не всем нужны текущие итоги, например самая базовая оптимизация работы систем это отключить текущие итоги, если в таблице практически не используются текущие итоги. С ходу всегда отключаю текущие итоги для регистров бухгалтерии (не понимаю, почему в типовых этого еще не делается).
71 dmpl
 
12.02.17
14:07
(26) Получение итогов будет медленнее, но они не всегда нужны. А вот запись - быстрее, ибо не придется пересчитывать все последующие итоги.
72 Bober
 
12.02.17
14:09
(63) покажи что выводи система на этот код:
ЗначениеСвойства = РегистрыНакопления.ТоварыНаСкладах.ПолучитьПериодРассчитанныхИтогов();
Сообщить("ПериодРассчитанныхИтогов: " + ЗначениеСвойства);
    
ЗначениеСвойства = РегистрыНакопления.ТоварыНаСкладах.ПолучитьИспользованиеИтогов();
Сообщить("ИспользованиеИтогов: " + ЗначениеСвойства);
    
ЗначениеСвойства = РегистрыНакопления.ТоварыНаСкладах.ПолучитьИспользованиеТекущихИтогов();
    Сообщить("ИспользованиеТекущихИтогов: " + ЗначениеСвойства);
73 Джинн
 
12.02.17
14:09
(68) Для систем с малыми объемами данных промежуточные итоги тем более похрен.

Короче кроме религии не вижу никаких соображений.
74 Bober
 
12.02.17
14:10
(71) это точно, поэтому отчеты в нагруженных системах по истории не снимают.
75 dmpl
 
12.02.17
14:11
(61) И при правке задним числом пересчитывать все остатки? Нафига?
76 Bober
 
12.02.17
14:11
(73) просто не было больших массивов данных и запросы не начинали тупить на таблицах итогов с миллионными записями никому не нужных данных.
77 ГеннадийУО
 
12.02.17
14:12
(69) Чтобы оставить только текущие итоги, надо установить период рассчитанных итогов на дату, раньше которой в регистре нет движений, после этого пересчитать итоги.
78 trdm
 
12.02.17
14:13
(0) > Говорят, что теперь можно хранить только актуальные остатки, а не остатки по месяцам. Кто знает  - как это делается?

Эта херня кажется Арегатами называется. Не?
79 Bober
 
12.02.17
14:14
(78) не, агрегаты для оборотных регистров. Но ими тоже мало кто пользуется.
80 Джинн
 
12.02.17
14:15
(76) Вы уж определитесь с показаниями - то ли у Вас мелкие базы, то ли большие...
81 mkalimulin
 
12.02.17
14:15
(72) Да я уже разобрался. Почитал таки СП )))
Если галка "Итоги" снята, виртуальные таблицы недоступны в принципе.
Если галка "Текущие итоги" снята, в таблице итогов не формируются текущие итоги.
82 mkalimulin
 
12.02.17
14:17
(78) Агрегаты тоже можно было бы использовать для этих целей. Но проще (77).
83 mkalimulin
 
12.02.17
14:18
(80) У вас большие, а у нас мелкие. Знаете почему? )))
84 Злопчинский
 
12.02.17
14:21
(28) а подробнее неграмотному клюшечнику...? я понимаю если расчитанные итоги где-то далеко в будущем - это будет эквиватент ТА (?),
но когда рассчитанные итоги далеко в прошлом..? илия чего-то не понимаю? поясните, плиз
85 Злопчинский
 
12.02.17
14:22
(31) ни в жизнь (пока) этого не понимаю
86 mkalimulin
 
12.02.17
14:23
(84) Когда рассчитанные итоги далеко в прошлом, тогда их просто нет. Что нам и требуется. Такая вот кондовая 1С-овская логика.
87 mkalimulin
 
12.02.17
14:26
(85) Я говорю системе: после 01-01-0001 итоги считать не надо. Устанавливаю максимальный период в минимум.
Я сам не сразу понял.
88 Фрэнки
 
12.02.17
14:26
(75) // И при правке задним числом пересчитывать все остатки? Нафига?

в биллинге не бывает правки задним числом
89 Bober
 
12.02.17
14:27
(86) в 8.3 появилось развитие механизма расчета итогов у РН:
ПолучитьМаксимальныйПериодРассчитанныхИтогов()
ПолучитьМинимальныйПериодРассчитанныхИтогов()
90 Bober
 
12.02.17
14:28
(86) получается что теперь можно сделать например "окно" квартал и спать спокойно.
91 Злопчинский
 
12.02.17
14:29
(87) ну допустим - не надо. а как и откуда тогда получаются текущие итоги?
92 mkalimulin
 
12.02.17
14:30
(91) А текущие итоги формируются независимо от этих установок.
93 dmpl
 
12.02.17
14:34
(88) В России настолько суровы, что заднее число есть даже в биллинге ;)
94 Джинн
 
12.02.17
14:35
(88) Да нет никаких биллингов, нет никаких больших баз... Есть религия. Когда есть религия, то нет логики.

Кстати SAP вполне себе живет без промежуточных итогов. Насколько знаю.
95 mkalimulin
 
12.02.17
14:58
(94) И где по-твоему религия? В 1С или в SAP?
96 Джинн
 
12.02.17
15:01
(95) Религия - это лепить в SAP промежуточные итоги и выдирать из 1С промежуточные итоги. Причем руководствуясь не практической необходимостью, а принципом.
97 mkalimulin
 
12.02.17
15:04
(96) Почему нельзя убрать промежуточные итоги из 1С, если платформа позволяет?
98 Джинн
 
12.02.17
15:06
(97) Потому что нет особого практического смысла.
99 mkalimulin
 
12.02.17
15:07
(98) А почему нет смысла?
100 ГеннадийУО
 
12.02.17
16:03
(97) Можно, так и делают - в оперативных базах оставляют только текущие итоги, в отчетной оставляют и промежуточные.
101 mkalimulin
 
12.02.17
16:36
(100) С каких пор можно? С версии 8.3 или раньше?
102 ГеннадийУО
 
12.02.17
17:11
В 8.2 уже точно было, а скорее и ранее.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший