Автоперестановка границы рассчитанных итогов

Опубликовал Евгений (jake_qwert) в раздел Администрирование - Тестирование и исправление

Для больших баз данных 1С, например, более 80 ГБ, актуальным является вопрос авто пересчета итогов каждый месяц по всем регистрам, чтобы дата актуальности итогов всегда была на конец предыдущего месяца. Сторонние средства за ночь не успевают рассчитать итоги, например, по регистрам бухгалтерии очень долго происходит расчет итогов. Стандартные средства 1С требуют монопольный режим работы.
Я создал фоновое задание, которое выполняется каждую ночь и итоги всегда актуальны. Если кому-то пригодится такое решение, буду очень рад.

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

Скачать файлы

Наименование Файл Версия Размер
Автоперестановка границы рассчитанных итогов
.txt 5,18Kb
29.02.16
4
.txt 1.0.5 5,18Kb 4 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Антон Тоник (artichoke) 18.01.12 08:19 Сейчас в теме
Пояснений по ходу текста нет, впрочем всё понятно из кода - последовательно обходятся регистры накопления и бухгалтерии, выполняется метод "УстановитьПериодРассчитанныхИтогов", во избежание проблем по окончанию работы с каждым регистром транзакция фиксируется, в 2-х словах описаны и ингредиенты регл.задания.
С первой публикацией, товарисч!
jake_qwert; +1 Ответить
2. alexpa (alexpa2005) 19.01.12 01:25 Сейчас в теме
Всё красиво написано! Немного смущает ситуация, когда часть регистров пересчитается, а часть (или даже один) попадут под исключение и их дата итогов останется на месте.
Обработку можно ускорить, если убрать понятие МинДата и первый цикл. ТЗРассчитываемыхРегистров составить один раз и дальше работать с ней. Если транзакция прошла успешно, в ТЗРассчитываемыхРегистров увеличить дату ПредпочтительнаяДатаРасчетаИтоговМесяц для этого регистра на один месяц. Если новая дата больше ПредпочтительнаяДатаРасчетаИтогов - эту строку таблицы удалить. Если регистр попал под исключение - строку удалить. И так пока количество строк в ТЗРассчитываемыхРегистров не станет равным 0.
Правда по сравнению со временем расчета итогов данное ускорение будет крайне незначительным.
artichoke; +1 Ответить
3. Евгений (jake_qwert) 21 19.01.12 21:42 Сейчас в теме
"Если новая дата больше ПредпочтительнаяДатаРасчетаИтогов - эту строку таблицы удалить. Если регистр попал под исключение - строку удалить. И так пока количество строк в ТЗРассчитываемыхРегистров не станет равным 0." ТЗ вынести за цикл заполнять 1 раз, согласен тогда улучшиться производительность, возьму себе на заметку. У меня была проблема что регистр бухгалтерии за ночь пол года успевает пересчитаться, база 109 Гб SQL Server 2008, стандартным средством очень долго, а тут на автомате скока успеет за ночь, на стока и двинет, очень удобно, уже с год даже не смотрю как там итоги, а до этого ночами пересчитывал сидел, то вылетет. Теперь вот собираюсь написать фоновое которое удаляло бы помеченные объекты на удаление, на которые нет ссылок, а то много всего помечено, а типовое средство требует монопольного режима, обработку нашел в интернете, но она почему-то вылетает при удаление, еще так и не разобрался почему, планирую фоновым тоже сделать универсально.
4. Карина Веселова (karinamt) 02.03.12 00:55 Сейчас в теме
спасибо, теперь мне не придется ломать голову над тем как это сделать, совсем не ожидала, что кто то реализовал уже это! еще раз большое спасибо.
jake_qwert; +1 Ответить
5. Kostya Zhurov (It-developer) 20 20.08.13 13:58 Сейчас в теме
Забавность ситуации в том, что пересчитывать их надо, но после изменения данных (перепроведение док-в в заднем периоде) их нужно пересчитать еще раз. Но в штатных средствах нет ничего, следящего за этим
jake_qwert; +1 Ответить
6. Осипов Сергей (fixin) 3419 17.07.14 16:40 Сейчас в теме
(3) есть переписанный код?