Нестандартное решение пересчета итогов

25.04.24

База данных - Администрирование СУБД

Статья для тех, кто столкнулся с необходимостью пересчета итогов для "больших таблиц" и нет возможности поставить на паузу ИБ для проведения работ.

Дано 

Информационная база (УПП) с заброшенными процедурами обслуживания (БД под управлением СУБД MS SQL). Путем анализа выявлены таблицы итогов с количеством записей, многократно превышающим количество, которое должно быть согласно аналитикам прикладной логики.

 

Причины

1С для оптимизации времени на запись итогов применяет так называемый разделитель. Это позволяет распараллелить процесс записи в конкурентных таблицах при большом количестве обращений.
 *Свойство использования разделителя итогов может включаться (Операции – Управление итогами-Вкладка «Установка режима разделения итогов», принятие изменений требует монопольного режима). Поле разделителя итогов «splitter» по умолчанию присутствует во всех таблицах итогов.

 

 

Таким образом, фактически в таблице может содержаться 1000 записей, соответствующих 100 уникальным ключам прикладных аналитик, разделенных «разделителем итогов» (от 0 до n). 

Как это влияет на производительность? Когда мы запрашиваем «остатки», 1С формирует запрос к таблице итогов и для выдачи сворачивает данные без учета «разделителей». Но при этом СУБД считывает 1000 записей, а выдает 100 (в примере разница не большая, но дает представление). Чем больше разделенных записей, тем выше нагрузка на СУБД.

В рамках штатной процедуры пересчета итогов в таблицах записи сворачиваются. В большинстве случаев проблем с этим не наблюдается. Но при установке новой границы итогов, итоги пересчитываются за конкретный период, а текущие итоги остаются в том состоянии в котором и были, разделенные «разделителями».

Приведем пример из жизни. На первом рисунке (ниже) представлена таблица, которая показывает реальное количество записей в БД. Можно обратить внимание на «текущие итоги», определенные периодом «5999-11-01» - их количество 156 218 467 записей. Сравнить можно с прочими периодами, где количество уникальных ключей прикладной аналитики в итогах составляет примерно 11 000 записей (±1 000), что в десятки тысяч раз меньше. 

В следующей табличке приведено количество записей, где «разделитель» отличен от нуля. Мы видим, что количество разделенных записей по периоду текущих итогов составляет примерно 50% (в конкретном случае, может и больше в зависимости от конкурентности). Также можно обратить внимание на последний период (4024-04-01), из общего количества записей 4 533 633, 3 015 292 записи разделенные и могут быть свернуты пересчетом итогов. 

 

 

Почему так получается? В приведенном примере рассматривается таблица итогов регистра накопления «Учет затрат (регламентированный учет)». Точку актуальности итогов сместили, система рассчитала итоги и зафиксировала. А затем бухгалтер решила перепровести пакетно реализации, требования накладные, отчеты производства за смену и прочее. Поэтому, рекомендуется сдвигать точку актуальности итогов после закрытия периода и завершения всех манипуляций с данными прошлых периодов. По отношению к записям текущих итогов, причина в том, что «период» (с прикладной точки зрения) еще не закрыт, также, как и затраты.

 

Решение

Как можно исправить ситуацию и «припудрить» состояние итогов? Если технологическое окно позволяет обеспечить монопольный режим, то можно воспользоваться функцией «тестирования и исправления», установив галочки «пересчета итогов». Но в моем случае, технологического окна нет. А указанная функция не позволяет конкретизировать, какие именно таблицы нужно пересчитать. С учетом этих обстоятельств, можно прибегнуть к методам, предусмотренным для регистров накопления. А именно: «ПересчитатьИтоги()». В частном порядке можно пересчитать итоги за конкретный период – «ПересчитатьИтогиЗаПериод(<НачалоПериода>, <КонецПериода>)». Для текущих итогов используется отдельный метод - ПересчитатьТекущиеИтоги(). Важно, использование этих методов проводить в периоды наименьшей загруженности ИБ. Так как при расчете итогов система блокирует таблицы.

Казалось бы, вот и все, решение найдено. И чего ради этого было писать такой талмуд. Но с учетом обстоятельств, проблемы другого характера. Производство работает 20 часов в сутки. Технологическое окно, с использованием монопольного режима допустимо только 2 часа в месяц (!), которое используется исключительно для принятия монопольных изменений. А периоды наименьшей загрузки составляют от 4-х до 6-и часов в сутки. И тут-то приходится выкручиваться «как только можно».

Дальше пойдет «треш», если, дочитав до этого места, у вас не сложилось понимание проблематики, то дальше можно не продолжать.

Итак, основным ограничительным фактором у нас является время, мы должны уложиться в отведенное технологическое окно. Самой длительной операцией в пересчете итогов является удаление существующих записей. По моим подсчетам на практике это занимает до 90% времени выполнения. В моем случае я применил следующий порядок действий:

  1. Обслужил основную таблицу регистра (реиндексация и актуализация статистики). Чтобы сократить время на выполнение запроса расчета итогов.

  2. Отключил использование текущих итогов – «УстановитьИспользованиеТекущихИтогов(Ложь)»

  3. Отключил использование итогов - «УстановитьИспользованиеИтогов(Ложь)»

  4. Установил максимальный период рассчитанных итогов на самый ранний период «УстановитьМаксимальныйПериодРассчитанныхИтогов(<Период>)»

  5. Далее в SQL очистил таблицу итогов выполнив следующую инструкцию – «TRUNCATE TABLE [sbox_upp_tam].[dbo].[_AccumRgT33795]». Где «sbox_upp_tam» - имя базы,  «_AccumRgT33795» - имя таблицы. На все про все, включая данный шаг, времени ушло 5 минут.

  6. Затем я включил обратно использование итогов - «УстановитьИспользованиеИтогов(Истина)»

  7. Запустил расчет итогов за все периоды, установив максимальный период расчитанных итогов на предпоследний месяц – «УстановитьМаксимальныйПериодРассчитанныхИтогов(<Период>)». Эта процедура длительная, поэтому я расслабился и ушел в режим ожидания. Но «печалька» меня настигла спустя некоторое время. Мало того что до конца оно не рассчиталось, так оно еще пошло в  «откат» (в SQL), заблокировав действия по всем базам на сервере. Тут у меня случился легкий «инфаркт ж..пки». Продлилось это состояние порядка 40 минут (имеется в виду «откат», «инфаркт ж..пки» закончился ранее :). И я понял, что так дело не пойдет и нужно менять стратегию. А именно, запускать пересчет по месяцам, постепенно сдвигая максимальный период рассчитанных итогов.

  8. Ну и конечно же в финале, установка использования текущих итогов «УстановитьИспользованиеТекущихИтогов(Истина)». Думал я, что после нужно будет запустить пересчет текущих итогов, но поведение системы меня приятно удивило и при включении использования текущих итогов, 1С услужливо их посчитала сама.

 

Заключение

Решение не самое изящное и не претендует на «решение из коробки». Но возможно кому-то пригодиться этот опыт для решения своих частных случаев. Решение имеет определенные риски в моменте. Но я постарался максимально учесть все возможные обстоятельства, включая возможные ошибки данных, которые возникают при включении и отключении итогов в "немонопольном режиме" (когда работают пользователи). В крайнем случае, если бы на каком-то этапе выполнение прервалось бы, то это повлияло только на производительность без ущерба прикладной логики. В итоге я сэкономил много времени, исчисляемого в сутках, и свел все к паре-тройке часов. 

P.S. Данная статья – мой дебют на InfoStart'e. Поэтому прошу сильно тапками не бросаться. Отвечу на уместные вопросы и конструктивную критику

итоги пересчет SQL

См. также

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Пользовался ранее https://infostart.ru/1c/articles/1120161/#, но она устарела, т.к. службы запускаются через systemctl, да и сами службы слегка изменились. Возможно, где-то на ИТС уже есть нужная инструкция, но мне не попалась.

15.11.2024    301    Baser    2    

1

HighLoad оптимизация Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Мы исследуем проблему долгого выполнения запросов PostgreSQL при использовании конструкции VALUES: когда она возникает, как на нее можно повлиять, а главное, почему ее продуманная отработка важна для более быстрого функционирования решений на базе 1С

12.11.2024    830    Tantor    19    

14

HighLoad оптимизация Администрирование СУБД Механизмы платформы 1С Программист Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

В данной статье мы рассмотрим, как работает механизм временных таблиц на postgres на платформе 8.3.23 и что изменилось в нем при добавлении новых возможностей в платформе 8.3.25. А также на примере покажу, как понимание работы платформы позволяет оптимизировать СУБД для работы с 1С.

29.10.2024    3148    Tantor    38    

34

Администрирование СУБД Системный администратор Программист Бесплатно (free)

CDC - очень мощный механизм, который можно использовать во многих сценариях, возможность развернуть его в Docker показывает простоту и лёгкость данной технологии.

08.10.2024    734    AlexSvoykin    1    

7

Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ и решение ошибок СУБД. Во время реиндексации базы Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения. Во время проверки целостности Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "dbo._RefSInf21806".

19.09.2024    4349    Xershi    10    

17

HighLoad оптимизация Администрирование СУБД Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер) до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя было сделать проще, как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей-то лабораторной работы? Статья адресована прежде всего специалистам 1С, избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

13.08.2024    2971    1CUnlimited    9    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Torin 826 25.04.24 18:06 Сейчас в теме
А разве 5 пункт можно делать?
2. siamagic 25.04.24 19:00 Сейчас в теме
(1) Настоящим программистам можно или вы бекап делаете через выгрузить td ? )))
10. SerVer1C 815 26.04.24 11:38 Сейчас в теме
(3) С большими базами иначе просто не получится нормально работать.

Да и вообще, насколько юридически справедливо запрещать прямой доступ к данным через скуль, если данные мои и лицензия на СУБД моя. Это, конечно, лирика, на хабре юристы более подробно этот момент разбирали.
11. Torin 826 26.04.24 11:51 Сейчас в теме
(10)См..
Вопрос справедливо во ли или нет.. проще задать вендору.

P/S но это не значить что я согласен/ не согласен с позицией вендора.
4. user1880116 25.04.24 21:41 Сейчас в теме
(2)
Настоящим программистам можно
А настоящие программисты могут рассказать как влияет отсутствие итогов на выполнение текущих запросов у пользователей?
7. siamagic 26.04.24 04:43 Сейчас в теме
(4)ути пути - студента сразу видно по глупым вопросам, которые он считает сакральными знаниями )
8. user1880116 26.04.24 07:19 Сейчас в теме
(7)
студента сразу видно
И что же наш многомудрый преподаватель планирует сделать в этой ситуации? Ответить на вопроc? Сбежать, задрав нос под хохот студентов?
13. CIO_Galvent 26.04.24 12:22 Сейчас в теме
(1)Есть такая компания как сфотпоинт, которая специализируется на решениях в связке СУБД и 1С, в частности репликация на уровне транзакций СУБД для организации РИБ. На практике еще в 2012 году принимал участие в таком проекте ("ИнтерРАО"). 1С пишет транзакциюв SQL, система определяет настройку адресации и реплицирует транзакцию в соответствующую базу на уровне SQL.Штатные средства не отвечают требованиям оперативности, а также мигрирую большие объемы данных (представьте себе билинг и количество платежей в электросетевой компании по всей России)
Если были бы какие-то сложности юридического характера, их бы давно прикрыли. Но компания существует до сих пор и продвигает свои решения.
14. Torin 826 26.04.24 12:35 Сейчас в теме
(13)
Если были бы какие-то сложности юридического характера, их бы давно прикрыли.
- возможно у них есть особое соглашение и особые условия ( это все ИМХО). я поэтому в (1) и задал вопрос :)
user1880116; +1 Ответить
16. user1880116 26.04.24 13:34 Сейчас в теме
(13)
Если были бы какие-то сложности юридического характера, их бы давно прикрыли. Но компания существует до сих пор и продвигает свои решения.
А как из того, что партнер 1С (добившийся своей лицензионной чистоты), продвигает свои решения, следует разрешение нарушать лицензионное соглашение всем остальным?
17. CIO_Galvent 26.04.24 14:35 Сейчас в теме
(16)
1. Прошу указать соответствующие положения лицензионного соглашения, которое ограничивает возможность редактирования данных непосредственно в СУБД.
2. Если у вас есть информация о прецедентах нарушения данных положений и судебная практика, также хотелось бы ознакомиться.
3. ИМХО, Если и есть такие положения, то они преследуют цель - снять ответственность с себя за возможное нарушение целостности механизмов платформы. Равно как и производители бытовой техники предостерегают в инструкциях по эксплуатации от нецелевого их использования (не разогревать в микроволновке металлические предметы, не забивать гвозди смартфоном и пр.).
А вообще если говорить о крупных компаниях, то у них совершенно другой уровень поддержки от вендора. Вплоть до того что выпускают релизы платформы с заточенными под конкретную задачу изменениями. Механизмы принятия решений, конечно же ориентируются на унификацию с прицелом в последующем эти изменения включить в общую ветку.
18. user1880116 26.04.24 15:51 Сейчас в теме
(17)
Прошу указать
Не сьежай с темы, пожалуйста. Ответь на вопрос - как ты из кейса "партнер 1С сделал решение" вывел "всем можно нарушать лицензию"

Собственно, лицензия: https://1c.ru/texts/kp_license.htm
4. Лицензиат обязуется не допускать нарушений исключительных прав Правообладателя на ПРОГРАММНЫЙ ПРОДУКТ, в частности, не совершать и не допускать совершения третьими лицами следующих действий без специального письменного разрешения Правообладателя:
...
вносить какие-либо изменения в код ПРОГРАММНОГО ПРОДУКТА, содержимое баз данных и других наборов данных, в которых система хранит информацию, за исключением тех изменений, которые вносятся штатными средствами, входящими в состав ПРОГРАММНОГО ПРОДУКТА и описанными в сопроводительной документации;


Без специального. Письменного. Разрешения. Правообладателя. Содержимое. Баз Данных. За исключением. Тех изменений, которые вносятся штатными средствами, входящими в состав ПРОГРАММНОГО ПРОДУКТА и описанными в сопроводительной документации".

Теперь понятно, почему Софтпоинту можно, а другим - нельзя?
Всё остальное у тебя так, мусор.
19. virustam 13 26.04.24 18:28 Сейчас в теме
(18) Данное решение можно применять на свой страх и риск. Тем более, я упоминал, что если можно обойтись штатными средствами, то так и стоит сделать. Речь о частных случаях, когда штатные средства, по разным причинам, применить не представляется возможным.
В условиях, когда база данных загибается. На ожиданиях компания теряет в день свыше 60-и часов в совокупности с учетом количества пользователей. Есть риск того, что система встанет колом. Или нужно остановить базу на несколько суток. Стоимость простоев выражается миллионами ₽.
Ваши предложения?
1. Послать заказчика/работодателя/ген.дира в "сад", ссылаясь на положение лицензии. Которое предполагает "мифическую" ответственность без какого либо выражения в деньгах. И ожидать, что тебя за это погладят по головке - "какой молодец, что блюдешь лицензионное соглашение, и хер бы с этими миллионными издержками..."
2. Написать по собственному желанию и молча свалить, наблюдая со стороны с попкорном...
3. Собрать свои "кукожики" в кулачек и сделать свою работу, не взирая на положения лицензионного соглашения, которые можно трактовать по разному.
VCPro; Teplotrassamen; slauter77; bulpi; Arsa707; +5 Ответить
20. virustam 13 26.04.24 18:34 Сейчас в теме
(18) Я уже не говорю о тех случая, когда при очередном обновлении платформы можно столкнуться с ошибками, которые только и можно исправить внося изменения в БД через одно место.
Так то, наверное только я один не обращаюсь в 1С за разрешением на внесение изменений непосредственно в БД.
Teplotrassamen; bulpi; +2 Ответить
21. virustam 13 26.04.24 18:52 Сейчас в теме
(18) Ну и на последок. Будут ли считаться использованием штатных средств, если я напишу обработку на 1С, которая выполнит подключение к SQL и сделает все что нужно?
Обработка - штатное средство. Описание подключений и различного рода интеграций дано в справочниках.
В общем вопрос юридического обоснования возможности применения таких подходов крайне скользкий. Явной ответственности за это не предусмотрено. А в попытке доказать нарушение пп. положения ЛС, устанут пыль глотать.
Тем более с юридической стороны, суть положения: "Лицензиат обязуется не допускать нарушений исключительных прав Правообладателя на ПРОГРАММНЫЙ ПРОДУКТ, ". А подпункты являются поясняющими. И если они не связаны с нарушением исключительных прав, то и интереса со стороны вендора не вызовут.
22. CIO_Galvent 26.04.24 19:22 Сейчас в теме
(21) К примеру для понимания. В ИБ есть таблица, в которой хранятся сведения обо всех используемых лицензиях. Каждый раз когда клиент коннектиться к серверу, система собирает из данных клиента сведения об используемых лицензиях. В том числе и те лицензии "тестовые", которые могли появиться после патчей. Эта информация сохраниться даже после того как клиент с "тестовой" платформой перейдет на нормальную лицензию.
Как сама процедура замены библиотек платформы, так и попытка фальсификации данных в БД (путем очистки или модификации этих данных) может рассматриваться "1С" как нарушение исключительных прав.
23. user1880116 26.04.24 19:32 Сейчас в теме
(21)
Тем более с юридической стороны, суть положения: "Лицензиат обязуется не допускать нарушений исключительных прав Правообладателя на ПРОГРАММНЫЙ ПРОДУКТ, ". А подпункты являются поясняющими. И если они не связаны с нарушением исключительных прав, то и интереса со стороны вендора не вызовут.

А ты по левой или правой диагонали текст читаешь? Фрагмент
и не допускать совершения третьими лицами следующих действий без специального письменного разрешения Правообладателя:
ты элегантно так проигнорировал.

Всё ты понимаешь. Понимаешь, что нельзя и отчаянно ищешь какие-то оправдания, потому что "очень надо".
24. virustam 13 26.04.24 20:17 Сейчас в теме
(23)Вы хотите сказать, что лицензиат в лице ген. директора, должен на кажды «чих» запрашивать разрешение правообладателя? Начиная от процедур обслуживания и заканчивая внешними компонентами. А как быть с самописными конфигурациями? Чьи права нарушаются? Считать ли нарушением указанного пункта, когда я применил эти действия по отношению к созданному мною дополнительного регистра в системе?
Ваше мнение услышано, имеете право. Желаю успехов в вашем труде с таким подходом.
27. user1880116 26.04.24 21:37 Сейчас в теме
(24)
лицензиат в лице ген. директора, должен на кажды «чих»
Если твоему бизнесу Так Плохо Без Прямого Доступа, то какая из мировых религиий мешает ему для соблюдения юридической чистоты пойти и получить это письменное разрешение правообладателя? Нежелание этой самой юридической чистоты? Осознание того, что он нахрен никому не нужен? Столько вопросов...
29. Nikola23 705 15.05.24 15:21 Сейчас в теме
(24) формально
лицензиат
- на то и лицензиат, что должен требования лицензии соблюдать.
При этом - должность не играет роли.

Беззаконие начинается там, где разные умники под разным соусом допускают, что иногда "можно" не соблюдать.

Это коммент на ваш коммент.

А по-существу, сам ковыряюсь не редко на уровне СУБД. Но я не хвастаюсь об этом в разных статьях и никому свою правоту не доказываю

Предлагаю в баталии не вступать
30. virustam 13 15.05.24 19:28 Сейчас в теме
(29) Блюстители юридической чистоты, у вас есть юридическое образование, а может и опыт?
Никто толком не может растолковать эти несколько строк лицензионного соглашения. Ни привести примеров из практики судебного или досудебного урегулирования этих спорных моментов.
Такое впечатление складывается что опыт которым я поделился вам не нужен, и это не ресурс для обмена опытом с коллегами по цеху, а юридическая академия.
Были обстоятельства, не нашел решения. Выработал кейс (с учетом граблей), поделился опытом.
Что, …ть не так я сделал. Если вас интересовали юридические аспекты, могли бы вынести вопрос отдельной темой для обсуждения (сославшись на статью). Пригласить экспертов (в т.ч. от 1С). Так нет, сидят на диване в труселях и считая себя важными, «дельные» комментарии выписывают.
В обсуждении было всего пара-тройка вопросов по существу. Все остальное холивар от не…чего делать.
28. gybson 07.05.24 16:02 Сейчас в теме
(18) Остается поднять сопроводительную документацию. А то народ мейнтенанс делает средствами sql
5. grumagargler 726 25.04.24 22:30 Сейчас в теме
> А затем бухгалтер решила перепровести пакетно реализации, требования накладные, отчеты производства за смену и прочее

Если это делала только она одна, то почему так много получилось не уникальных записей в 4024-04-01?
12. CIO_Galvent 26.04.24 12:13 Сейчас в теме
(5) Первичка генерируется в больших объемах, исчисляемая в миллионах записей в месяц. Если система видит блокировку итогов другим сеансом, то автоматически устанавливает свободный разделитель и пишет записи рядом.
Зачем это делает бухгалтер? Вопрос риторический. Не все проводки сформировались, замена аналитики в документах, перепроведение просто, чтобы убедиться что все проведено и прочее...(как говориться, у кого на что фантазии хватает). Есть регламент отчетности по кварталам. Такое как раз наблюдается в последнем месяце квартала, когда "крыжат" данные и подбивают затраты.
6. siamagic 26.04.24 04:41 Сейчас в теме
(3) Ссылку вы дали на вопросы и ответы = треп не о чем, тем не менее:

"если документация по продуктам линейки «1С:Предприятие» (включая 1С: ИТС) содержит явную рекомендацию использовать данное средство для решения данной задачи."

https://its.1c.ru/db/metod8dev/content/2372/hdoc - пример создания процедуры

https://its.1c.ru/db/metod8dev/content/6000/hdoc - создали базу подключили к пп 1с

1с в своей лицензии не может указывать что делать с другим лицензионным продуктом - это бред.

Рарус во всю пользует способности sql
9. user1880116 26.04.24 08:57 Сейчас в теме
(6)
"если документация по продуктам линейки «1С:Предприятие» (включая 1С: ИТС) содержит явную рекомендацию использовать данное средство для решения данной задачи."
Не будет ли любезен многоуважаемый преподаватель предоставить документацию с явной рекомендацией использовать прямой доступ к SQL для пересчета итогов?
15. CIO_Galvent 26.04.24 12:40 Сейчас в теме
(9) Рекомендаций не будет. Потому как такое решение применяется на свой страх и риск. Если можно обойтись без этого, то лучше этого не делать. Но жизнь вносит свои коррективы. Если нет возможности выделить технологическое окно и в монопольном режиме провести пересчет (который даже на тестовой базе при выполнении забивает весь журнал транзакции и ставит раком СУБД), то других вариантов не остается.
Для сохранения логической целостности, как раз таки и нужны "приседания" с включением/выключением итогов и постепенным смещением точки итогов.
25. siamagic 26.04.24 20:30 Сейчас в теме
(9) Причем тут пересчет итогов? я про доступ к скулю на прямую и лицезионное соглашение.

(15) каким местом пересчет итогов влияет на логическую целостность?


(18)"ПРОГРАММНОГО ПРОДУКТА, содержимое баз данных и других наборов данных, в которых система хранит информацию" - есть ПП - всё понятно, а что за "система" мифическая? И каким образом лицензия ПП может нарушать лицензию постгрес к примеру?

(8) Читай далее основы архитектуры 1с, там интереснее будет - может даже джуном возьмут )))
26. virustam 13 26.04.24 21:25 Сейчас в теме
(25)
(15) каким местом пересчет итогов влияет на логическую целостность?

Если не отключать использование итогов и очистить таблицу, то система в период выполнения процедур будет возвращать некорректные данные остатков, а также некорректно формировать производные остатки (рассчитанные от последней точки актуальности или от текущих итогов).
Предположим что точка актуальности итогов установлена на 01.03.2024. Мы запрашиваем остатки на 20.03.2024. Система берет остатки на 01.03.2024 и по основной таблице рассчитывает остаток по 20.03.2024 (прибавляя приходы и вычитая расходы). Но после чистки таблицы итогов, данных на 01.03.2024 еще нет, что предполагает нулевой остаток. Также при записи, системой будет сформирован некорректный остаток в таблице итогов (в том числе и текущих).
При использовании указанной последовательности (в статье), это исключается. Но в моменте при выполнении запроса на получение остатка система обратиться к уже рассчитанному периоду (предположим успели посчитаться итоги на 01.11.2017) и дорассчитает по движениям. Это будет дольше, но данные будут корректные.
А если не сдвигать точку актуальности на самый ранний период, то система после включения использования итогов начнет пересчитывать итоги по всем периодам до точки актуальности. Поведение платформы от релиза к релизу отличается. В некоторых случаях я наблюдал ситуацию. При которой система анализировала изменения в таблице движений по периодам и если их не было, то и итоги не перессчитывались после включения использования итогов.
31. Jimbo 10 20.05.24 09:54 Сейчас в теме
Подведём итоги, господа. Какой размер базы до/после манипуляций? И размер таблицы итогов/количество записей было/стало?
32. virustam 13 07.06.24 07:54 Сейчас в теме
(31) В моем случае объем занимаемых данных в таблице сократился на 72% (эта доля обусловлена разделителями). Физически для уменьшения объема нужно провести процедуру сжатия БД.
33. Garilia 66 16.06.24 22:50 Сейчас в теме
Добро пожаловать на инфостарт) Все отлично, только можно было использовать стандартную обработку управления итогами для того что бы не писать свою обработку.
34. SergeyM 27.09.24 12:28 Сейчас в теме
(33) вообще то стоило прочитать статью, там как раз и указана причина, почему стандартная обработка не могла быть использована - "Если технологическое окно позволяет обеспечить монопольный режим, то можно воспользоваться функцией «тестирования и исправления», установив галочки «пересчета итогов». Но в моем случае, технологического окна нет."
35. Garilia 66 27.09.24 14:03 Сейчас в теме
(34) Статья прочитана нормально, ваше негодование возможно связано с тем, что вы перепутали функционал конфигуратора со встроенной в платформу обработкой управления итогами, которая как раз позволяет выполнять операции включения\выключения и прочих манипуляций с итогами используемых автором - без разработки собственной обработки.
Прикрепленные файлы:
36. SergeyM 09.10.24 14:09 Сейчас в теме
(35) негодование? вы переборщили с эмоциями, сильно переборщили. и да, вы правы, я перепутал функционал конфигуратора со встроенной обработкой.
37. VCPro 251 18.11.24 19:26 Сейчас в теме
(35) На очень крупных регистрах типовой пересчет итогов без предварительного TRUNCATE таблицы итогов приводит к ошибке на уровне SQL или неприемлемо долгой работе от многочисленных DELETE и INSERT в таблицу итогов.
38. Garilia 66 18.11.24 21:13 Сейчас в теме
(37) Речь именно про инструмент со стороны платформы для управления границами итогов, дабы не пилить свой, эта ветка комментария именно об этом. Вы правы, на больших регистрах без использования транкейта не обойтись, у меня в профиле как раз есть предложение оптимизации процедуры смещения итогов.
Оставьте свое сообщение