Управление итогами регистров


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

Довольно простая обработка, которую каждый может написать для себя. Надеюсь, эта публикация поможет вам сэкономить немного своего времени.

Для новичков кратко, «на пальцах» поясню что такое итоги, как они работают и зачем вообще их рассчитывать.

При рассчете остатков система досчитывает остатки от актуальных, которые, как правило, следует рассчитывать ежемесячно. П То есть

ОстатокТекущий = ОстатокНаМоментРассчетаИтогов + ОборотыПериодПослеРассчетаИтогов

Обороты при этом хранятся в служебной таблице текущих итогов.

При рассчете итогов средствами самой платформы (Операции-Управление итогами) требудется мнопольный доступ (выгнать всех пользователей из базы). Данная обработка монопольного доступа не требует, пользователей можно не выгонять, хотя нормально работать во время выполнения обработки будет скорее всего нельзя.

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

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

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

11 Comments

  1. Aleksey-29

    Верно ли утверждение, что отключение итогов ведет к уменьшению размера базы?

    Reply
  2. 1С_Мастер

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

    Кроме того, в базе с отключенными итогами не будут работать запросы к виртуальным таблицам. Оно вам надо?

    Reply
  3. erem

    Мне кажется статья написана как-то сумбурно. Для «новичков» наверно надо «разжевать» что под термином «Текущие итоги» в 1С принимаются итоги с учетом самого последнего движения в регистре и что они (текущие итоги) тоже хранятся в таблице итогов (а не рассчитываются) с периодом 01.11.3999 00:00:00 и что при их отключении запросы к виртуальным таблицам все равно будут работать… При отключении текущих итогов записи с ними (01.11.3999 00:00:00) действительно удаляются из таблицы итогов. Если мало применяется оперативное проведение документов (например в бухгалтерском учете), то выключение текущих итогов чуть-чуть ускорит работу системы. Еще советую книгу «Реализация прикладных задач» (раздел про регистры накопления) — там хорошо описано про итоги и как они применяются при запросах к виртуальным таблицам для расчета итогов на требуемый период.

    Reply
  4. AnKonAlm

    У меня сбились итоги, т.к. я не выставил «смещение итогов».

    А вот Ваша обработка на 100%% меня выручила.

    И быстро и все получилось.

    СПАСИБО, УДАЧИ!!!!

    Reply
  5. alexnov

    (4) AnKonAlm, а как выручила то? Что делали? У нас ошибка при попытке пересчета готов стандартными средствами (предприятие и конфигуратор):

    Дата ‘01.02.0001 0:00:00’ не может быть записана в базу данных на MS SQL Server с нулевым смещением дат

    Reply
  6. alxarz

    (5) выставите смещение в MS SQL Server

    Reply
  7. botcc

    Выставил смещение дат:

    USE [MyDB]

    UPDATE [dbo].[_YearOffset]

    SET [Offset] = 2000

    WHERE [Offset] = 0

    GO

    При пересчёте итогов: Дата ‘01.02.0001 0:00:00’ не может быть записана в базу данных на MS SQL Server с нулевым смещением дат.

    В общем ошибка повторилась. Сейчас гружу dt в базу со смещением 2000 по результату отпишусь.

    Reply
  8. botcc

    Смена 0 на 2000 и выгрузка/загрузка не помогла. Необходимо создать пустую БД на SQL со смещением дат 2000 и уже туда грузить dt.

    Reply
  9. Natalex95

    Дата ‘01.02.0001 0:00:00’ не может быть записана в базу данных на MS SQL Server с нулевым смещением дат.

    Эта ошибка платформы 1С при расчете итогов регистров бухгалтерии. Наблюдается когда в базе установлено смешение дат = 0.

    Лечить данную проблему нужно так как описал (8)

    Но к сожалению данная методика не для всех может подойти, для нас она не подходит :(, база размером 6Тб в dt не выгрузится, а про загрузку я вообще молчу.

    Reply
  10. v.l.

    (9) Я напрямую апдейтил таблицы 1С на сервере SQL.

    Сначала добавил смещение дат в yearoffset = 200,

    затем к нулевым датам (1573.01.01 00:00:00) добавлял разность дат для получения даты 2001.01.01, а к другим значениям дат добавлял 2000 лет.

    База 180 ГиБ обрабатывалась на порядок быстрее её выгрузки в dt и загрузки dt в скуль.

    Да и при загрузке из dt в какой-то момент скуль вовремя не отвечал на запрос сервера 1С и конфигуратор падал с ошибкой SQL timeout.

    Reply
  11. fktrc171

    Почему может быть неактивно «Управление бухгалтерскими итогами» в монопольном режиме и правами пользователя — Администратор ?

    Работаем в ТиС 77.

    Можно надеяться , что при переходе на следующий год программа увидит , что надо изменить период рассчитанных итогов ?

    Reply

Leave a Comment

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