Востановление итогов средствами MS SQL по Хозрасчетному

Востановление итогов средствами MS SQL по Хозрасчетному

что произошло, отключили остатки по хозрасчетному (как не важно), необходимо было включить. Начали включать стандартным методом Хозрасчетный.УстановитьИспользованиеИтогов(истина);. Но пересчет итогов длился 15 часов, так и не закончился. Понятно, что люди не могут работать, у всех паника, откат — востановление из бэкапа либо что-то надо было придпринимать. Что сделали.

 

1. Закрыл доступ для пользователей. Чтоб не мешались.

 

2. Удалил все итоги из таблиц Хозрасчетного командой truncate [имя таблицы]. Тут быть внимательными, т.к. надо именно таблицы итогов очистить. И не очистить случайно основные таблицы Хозрасчетного. Список таблиц итогов:

_AccRgAT013261          РегистрБухгалтерии.Хозрасчетный    ИтогиПоСчетам

_AccRgAT113271          РегистрБухгалтерии.Хозрасчетный    ИтогиПоСчетамССубконто1

_AccRgAT213272          РегистрБухгалтерии.Хозрасчетный    ИтогиПоСчетамССубконто2

_AccRgAT313273          РегистрБухгалтерии.Хозрасчетный    ИтогиПоСчетамССубконто3

_AccRgCT13274           РегистрБухгалтерии.Хозрасчетный    ИтогиМеждуСчетами

 

3. Нашли таблицу в скуле _AccRgOpt — таблица настроек хранения итогов одна на все регистры бухгалтерии.

Нашел нужную запись соотвествующую рег.Хозрасчетного, в поле _useTotals, стояла — 2, изменили на 0 — т.е. включили итоги.

 

4. Запустили пользователей. Они счастливые стали проводить документы, работать дальше. Понятно, что таблицы итогов Хозрасчетного были очищены, поэтому все запросы использующие итоги выводили не правильные результаты.

 

5. Написал меленькую обработку из одной команды

РегистрыБухгалтерии.Хозрасчетный.УстановитьПериодРассчитанныхИтогов(Период);

и стали ее запускать по квартально двигая итоги от самого начала, соответственно все записи в регистрах итоговых создались. ушло время примерно 2 часа с нашей базой

 

6. На все работы потратили примерно 3 часа. И все работает.

 

Можно было упростить схему, но не стали рисковать, как упростить. Не очищать таблицы итогов, просто включить итоги, посмотреть на какую дату последними итоги и в таблицу _AccRgOpt в поле _Period вписать эту дату.

 

Всем спасибо. Может кому в помощь пригодится.

3 Comments

  1. smielka

    Спасибо за хорошую идею.

    Заодно обнаружила, что в описании от 1С есть какая-то лажа.

    Цитирую http://its.1c.ru/db/metod8dev/content/1798/hdoc

    «_Period — периодичность хранения итогов. Не используется;» — что значит «не используется», если это и есть «точка актуальности» итогов?

    «_MinPeriod — минимальный период, с которого нужно пересчитывать итоги;» — это вообще какая-то волшебная непонятная субстанция. И везде стоит 3999 год, чего она вдруг «минимальная»?

    Reply
  2. nvv1970

    Написано правильно и по делу.

    Только заголовок вводит в заблуждение. Очистка таблиц — это одно, а восстановление/создание итогов средствами SQL — это другое.

    Пересчет за период — с ним нужно быть внимательным, т.к. алгоритм расчета первого месяца подразумевает использование предыдущего рассчитанного. Если не захватить и не рассчитать итоги на самые первые движения, то могут быть сюрпризы.

    Reply
  3. kirillkr

    Огромное спасибо за статью… Очень помогла.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *