0. Bazil 460 20.10.17 10:51 Сейчас в теме

Ускоренный полный пересчет итогов регистров

Обработка для быстрого полного пересчета итогов по выбранным регистрам, ускорение достигается за счет предварительной очистки таблиц итогов средствами MS-SQL.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. Fragster 940 23.10.17 18:39 Сейчас в теме
У стандартного метода есть неоспоримый плюс - пересчет идет транзакциями помесячно. И если срубить процесс в середине - ничего страшного не произойдет. И даже отчеты могут работать. А если предварительно делать транкейт, то работа встанет до конца пересчета, а если еще и ошибка произойдет...
3. nvv1970 07.11.17 02:15 Сейчас в теме
(1) нужен транкейт + * даты итогов на 010101. Тогда все будет быстро и корректно с запросами.
PS: пойду напишу статью про оператор truncate, чтобы таких обработок не создавали. ((( Неужели гугл и ssms более страшен, чем чужие обработки??
8. jefjef 6 03.12.18 11:48 Сейчас в теме
(1) Стал юзать эту обработку именно из-за "неоспоримых плюсов" стандартного метода. Дело в том, что для стандартного пересчета надо именно наглухо остановить работу, так как он делается монопольно, а у нас весовая работает круглосуточно. А если срубить этот процесс в середине - наступит полная и беспросветная жопа. Оборотки просто перестают работать. Наглухо зависают и все. Банда юзеров кричит караул.
10. Fragster 940 03.12.18 15:13 Сейчас в теме
(8) я имею ввиду не стандартный диалог из "все функции", а выполнение метода РегистрНакопленияМенеджер.<Имя регистра накопления>.ПересчитатьИтогиЗаПериод() и ~.ПересчитатьТекущиеИтоги() которые выполняются относительно быстро (если делать в цикле по месяцам), не требуют монопольного доступа и не блокируют базу (если не трогать итоги за обновляемый период, т.е. оперативную работу вообще никак не затрагивает). Только последний этап - пересчет текущих итогов может сделать небольшую паузу в работе, но как правило эта пауза измеряется максимум в минутах.
2. echo77 1100 23.10.17 20:54 Сейчас в теме
Задумка хорошая, но зачем пересчитывать итоги за весь период? Я не думаю, что в предыдущие периоды кто-то активно вносит изменения.
Честно, говоря, я вообще сейчас склоняюсь к тому, что в большинстве случаев для регистрв остатков нужны только Актуальные итоги
4. nvv1970 07.11.17 02:18 Сейчас в теме
(2)
для регистрв остатков нужны только Актуальные итоги
это как??? )))
5. tirli41 22.08.18 13:31 Сейчас в теме
Монопольный доступ нужен или нет?
6. Bazil 460 22.08.18 17:07 Сейчас в теме
7. fedor40 687 27.11.18 12:01 Сейчас в теме
SQL 2014. Аутентификация SQL. Запуская на сервере. В SQL спокойно захожу, а обработка пишет недоступен.
{ВнешняяОбработка.УскоренныйПолныйПересчетИтоговРегистров.Форма.ФормаУправляемая.Форма(219)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): [DBNETLIB][ConnectionOpen (Connect()).]SQL Server не существует, или доступ запрещен.

Хотя я разобрался. Из имени сервера надо удалить номер порта 1С.
9. jefjef 6 03.12.18 12:19 Сейчас в теме
Колбасит, профайлер циклично показывает begin, select, insert, truncate, commit. Все ок, при этом проц нагружает порядочно. Даже параллельно работать можно в базе. Чего не хватает обработке - так это прогресс бар прикрутить бы.

Обработкой пришлось воспользоваться, так как стандартный метод расчета итогов через предприятие зависал намертво и висел в таком виде до 8 часов, потом я просто убивал это дело. В конфигураторе тестирование-исправление-пересчет вел себя точно так же.

Обработка сделала все за 2 часа.

Респект и плюс в карму.
11. Bazil 460 04.12.18 10:04 Сейчас в теме
(9) Прикрутить прогресс-бар можно. Кроме как, считать количество рассчитанных регистров от общего числа, ничего не могу придумать.
Такой прогресс будет очень примерным.
12. jefjef 6 04.12.18 11:21 Сейчас в теме
(11)Вопрос появился. Не по работе обработки, а может было что-то подобное в личном опыте. На копии базы отработала нормально, все пересчитало четко. А вот на рабочей базе не сработала. Зависла и все. В профайлере отслеживал работу - просто в какой то момент перестали поступать запросы. Был последний BatchCompleted и потом все остановилось. Точно так же себя ведет конфигуратор на пересчете итогов и в режиме предприятия тоже. Зависают пересчеты регистра бухгалтерии. Не доводилось с таким сталкиваться? Не знаю на что и думать, на платформу или на скуль. Платформа 8.3.10.2299, скуль 2008R2 10.50.1600.1
13. Bazil 460 05.12.18 08:33 Сейчас в теме
14. jefjef 6 05.12.18 11:31 Сейчас в теме
(13)
Удалось полечить вашей обработкой в два прохода. Сначала удалить итоги, потом пересчитать. Вещь годная. Спасибо.
15. Атеист33 13.09.19 09:18 Сейчас в теме
Добрый день коллеги !

прошу знающих дать совет практический :

Порядок действий при пересчете итого по регистру каков ?
имею ввиду сам код в произвольном алгоритме - а не обработки готовые - предпочитаю все же понимать что делаю

1. отключаем расчет итогов :
Регистр<Имя>.УстановитьИспользованиеТекущихИтогов(Ложь)

2. включаем использование итогов :
Регистр<Имя>.УстановитьИспользованиеТекущихИтогов(Истина)

3.Регистры<Имя>.ПересчитатьИтогиЗаПериод(НачалоМесяца(Дата() )

или же иной порядок ?
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

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

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

Руководитель проектов 1С
Санкт-Петербург
Полный день