Не пересчитываются итоги 1с

Обновлено: 02.07.2024

Данная методика проверена на тестовой базе, размер которой за месячный период составил 67 Мб. Эта часть той базы, о которой ведется речь в статье. Остатки переносились на середину месяца. К сожалению проверить на большой базе пока не удалось поскольку ранее переданная статья содержала ошибки, и поэтому первая попытка оказалась неудачной. Будем пробовать еще раз. Теперь осталось выяснить только то сколько времени займет данный процесс.

З.Ы. При проверке не пользовался обработкой clear.ert - все делал ручками. Так что смотрите внимательно!

Сворачивание периода известно в 1С:Кругах под разными названиями какой из них вам ближе решайте сами. Мне известны следующие:

1. Перенос остатков
2. "Урезание" базы
3. Закрытие периода

И так далее. Смысл термина в следующем. В течение длительного периода работы информационная база (любая, будь-то бухгалтерия, торговля или смешанная - з/п и компоненту расчет не рассматриваем) имеет тенденцию увеличиваться в размере по вполне понятным причинам. Думаю их вам обЪяснять не надо. Заметим только, что скорость роста для разных баз различается и зависит от обЪема документов вносимых в базу в единицу времени (например, за день), а также от количества и размера аналитических таблиц (так назовем регистры, бухгалтерские итоги вместе с планом счетов). Чем меньше единица учета (в количественном выражении) и чем больше обороты фирмы, тем больше количество вносимых документов, чем сложнее отчеты получаемые в системе, чем больше их количество, тем больше размер аналитических таблиц.

При проектировании информационной системы ее подразделяют на две составляющие: транзакционную и аналитическую. Первый тип систем предназначен для ввода большого обЪема информации в реальном режиме времени, второй тип предназначен для проведения анализа данных полученных в транзакционных системах. Какая же связь такого разделения с темой статьи? Самая непосредственная - процедура свертки периода, является частью процесса по переводу данных из транзакционной системы в аналитическую. Дело в том, что обычно в транзакционных системах обЪем информации хранится за небольшой текущий период (например, месяц - все зависит от интенсивности ввода). Чем больше размер информационной базы, тем менее комфортной становится работа в такой системе - замедляется ввод документов, формирование отчетов также замедляется. В случае с 1С особенно это заметно в DBF формате, меньше в SQL, но все равно и здесь имеется некоторое замедление. Рост базы также приводит к ее более частому "падению", опять же это больше характерно для DBF формата. Поэтому периодически данные из транзакционной системы необходимо передавать в аналитическую систему, удаляя при этом лишние данные. Сегодня у всех на слуху технологии OLAP - как раз-то они и предназначены для создания таких (аналитических) систем. В том числе данные технологии активно применяются в связке с 1С. Но статья не об этом.

Итак, после того как данные будут переданы в аналитическую систему, нам необходимо удалить их из нашей транзакционной системы. Что ж, неплохо было бы если фирма 1С предоставила такой инструмент в составе своей системы. Но! Как всегда НО. Имеющиеся средства не подходят для обработки больших баз. Подчеркиваю БОЛЬШИХ. Большой я считаю базу размером не менее 500 Мб (вместе с индексами), даже ближе (и больше) к 1 Гб. Но именно для таких баз обычно необходима процедура свертки периода. Почему же не подходят стандартные средства? Уточнюсь, что под ними я понимаю обработку wrap.ert, которая позволяет произвести "свертку" бухгалтерских итогов (для оперативного учета, таковой нет). Итак:

1. Если перенос остатков осуществляется не на последнюю рабочую дату (то есть дата, после, которой нет проводок), то при переносе остатков задним числом производится пересчет остатков.

2. Отмена проведения / пометка на удаление документов также приводит к пересчету остатков.

3. Удаление документов по одному, с внесением изменений в индексы очень медленно. Даже применение транзакций спасает слабо.

Возможно это не все причины, но перечисленные выше - основные. Таким образом необходимо избавиться от недостатков, которые несет за собой применение стандартных методов. Хочу добавить, что все это не теория (то есть пп. 1-3) - у наших клиентов имеется база размер, которой уже близок к 2 Гб, попытки использования стандартных методов не увенчались успехом (не дождались завершения обработки, попытка запуска ее на домашнем компьютере привела к его зависанию). Пришлось искать обходные методы в результате чего и появилась данная методика.

База формата DBF. Дата (А), на которую необходимо перенести бухгалтерские остатки, а также удалить все лишние документы до данной даты. Конец текущего расчетного периода (Б).

1С:Предприятие 7.7, доработанная обработка переноса остатков 1C wrap.ert, любое приложение для выполнение SQL запросов для DBF баз (MS Query, DB Explorer из поставки Delphi). В качестве приложения для выполнения SQL запросов можно использовать ВК ToySQL (или Rainbow, ODBCSQL или технологию ADO), просто подключаясь к обрабатываемой базе из другой базы (см. ссылку на обработку в конце статьи).

0. Делаем копию базы.

1. Переносим остатки. Обычным образом создаем ручные операции, но дату операции устанавливаем не А, а Б + 1, при этом пометку на удалению документов не производим. Таким образом мы избавляемся от ненужного пересчета. На дату Б + 1 не должно быть ни документов, ни операций. Здесь в принципе можно использовать любую дату из будущего периода. Точнее чтобы не было пересчета, то дата должна находится за пределами текущего расчетного периода.

2. Удаляем все индексные файлы, а также файлы бухгалтерских итогов: 1SACCSEL.DBF, 1SBKTTL.DBF, 1SBKTTLC.DBF, 1SSBSEL.DBF. Начиная с данного этапа прекращаем пользоваться стандартными методами

3. Выполняем следующие запросы:

1) Делаем пометку на удаление документов.

Update 1sjourn set ismark='*', closed=4 where date <= А

Если можно удалить все (!) документы сразу (то есть в будущем периоде нет ссылок на документы из прошлого), что бывает очень редко, то можно удалять сразу

Delete from 1sjorun where date <= А

При этом сначала нужно удалить записи из связанных таблиц документов (dh*, dt*)

Delete from dh* d from 1sjourn j where d.iddoc = j.iddoc and j.date <= А

Так для каждой таблицы документа и его табличной части. Для SQL Server можно написать скрипт перебирающий таблицы документов и выполняющий данный запрос для каждой из них.

delete from 1sentry where date <= А
delete from 1soper where date <= А

3) Если в вашей конфигурации есть периодические реквизиты, которые изменяются документами (с помощью метода УстановитьРеквизитСправочника), то можно (точнее нужно) удалить значения этих реквизитов:
delete from 1sconst where objid <> ' 0 ' and date <= А and iddoc <> ' ' Вообще полезно удалить периодические реквизиты независимо от того записываются они из документов или нет. Это можно сделать так:

delete from 1sconst where objid <> ' 0 ' and date <= А

4) Удаляем ссылки между подчиненными и документами и значения граф отбора. Эти данные находятся в таблице 1SCRDOC. В графе CHILDID находятся ссылки на документы, который после их удаления будут недействительными. Поэтому нужно выполнить такой запрос: delete from 1scrdoc where childdate <= А

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

4. Пакуем таблицы, в которых удаляли записи. Здесь тоже быстрее будет воспользоваться не-1С методами. Данный метод можно использовать только для формата DBF: pack 1soper
pack 1sentry
pack 1sconst
pack 1scrdoc

Если вы удаляли записи из таблиц документов, то данный оператор нужно вызвать для всех этих таблиц и для таблицы 1SJOURN (п. 9 тогда можно пропустить).

5. Переносим проводки и операции сделанные датой Б + 1 на дату Х Update 1sentry set date = А where date = Б + 1
Update 1sentry set date = А where date = Б + 1
Update 1sjourn set date = А where date = Б + 1

Здесь важно чтобы на дату Б + 1 не было документов кроме созданных ручных операций. Иначе эти документы также перенесутся на дату Х.

6. Все. Теперь у нас практически рабочая база. Можно опять взяться за стандартные методы. Нужно восстановить индексы - просто запускаем 1С-ку монопольно.

7. Итоги можно пока не пересчитывать. Запускаем поиск удаленных обЪектов. Если вы удалили документы сразу как было описано в п. 3, то этот пункт можно пропустить.

8. Пересчитываем итоги. Хорошо бы пересчет итогов по колонкам был бы в разделе "Пересчет служебных данных", но уж что имеем :(. Все! База готова. Остается сверить получившуюся базу с ее копией (надеюсь ее-то вы не забыли сделать - мало ли что ;).

9. Упс. Забыл ради чего мы это все затевали. Если посмотреть на размер базы, то он уменьшился не на столько на сколько хотелось бы (скорее всего). Почему? Правильно! В DBF формате записи не удаляются непосредственно, а помечаются на удаление. У нас остались лишние данные в таблице 1SJOURN и в таблицах документов (файлы проводок и операций мы упаковали сами). Что же нужно сделать? Правильно запустить упаковку данных. Впрочем данный пункт не стоит делать отдельно - просто обЪедините его с п. 8, поставив галочку "Упаковка таблиц информационной базы", когда будете пересчитывать итоги в режиме конфигуратора. Вот теперь точно все! Уффф.

Даты в DBF формате записываются в виде

Используемое в статье собственное и доработанное ПО:

1. Модифицированная обработка wrap.ert, позволяющая переносить остатки на другую дату, не удаляя документы. В обработке предусмотрен вызов функции для установки дополнительных реквизитов операции как документа (УстановитьФирму).

2. Обработка по удалению документов, проводок из базы с помощью компоненты ToySQL

3. Компонента ToySQL

Как упражнения вам

1. Внести небольшие изменения для SQL версии
2. Сворачивание базы методом формирования помесячных оборотов
3. Сворачивание базы оперативного учета

Иногда в программе 1С возникают ошибки. Например, в ОСВ не сходится сальдо на начало периода и сальдо на конец. Такие ошибки случаются из-за сбоев технического характера при выполнении системных операций, обновлений программы или переноса данных из программных продуктов.

Если возникли подобные ошибки в программе следует запустить пересчет итогов. Разберемся как сделать пересчет итогов в 1С 8.3 Бухгалтерия, какие варианты пересчета итогов доступны в режиме 1С Предприятие 8.

Пересчет итогов в 1С 8.3 Бухгалтерия

В режиме Конфигуратора

Пересчитать итоги в 1С можно как в конфигураторе, так и в режиме пользователя. Прежде рассмотрим, как сделать пересчет итогов в конфигураторе.

Откройте конфигуратор. Меню Администрирование – Тестирование и исправление .


Проверьте установку флага Пересчет итогов , нажмите Выполнить .


В режиме Пользователя

Если нет доступа к конфигуратору, пересчет итогов в 1С можно запустить в режиме пользователя.

Предварительно узнайте дату самого первого документа, проведенного в программе. Перейдите в раздел Операции – Журнал операций .



Перейдите в раздел Администрирование – Обслуживание .


Откройте раздел Регламентные операции , выберите Управление итогами и агрегатами .


В подвале формы нажмите на ссылку Полные возможности .


Из списка выберите Журнал проводок (бухгалтерский и налоговый учет) (регистр бухгалтерии) , нажмите Пересчет Пересчитать итоги за период .


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


После выполнения пересчета итогов ошибок в программе 1С не будет.

Мы рассмотрели, как сделать пересчет итогов в 1С 8.3 Бухгалтерия.

См. также:

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

После оформления подписки вам станут доступны все материалы по 1С:Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Похожие публикации

    У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую..В данной статье рассмотрим устройство регистров для хранения ФОТ и..

Карточка публикации

Данную публикацию можно обсудить в комментариях ниже.
Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Вы можете задать еще вопросов

Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>

Как не попасть в ловушку, работая с контрагентами из ЕАЭС

[17.11.2021 запись] Практический переход на ФСБУ 6 и ФСБУ 26 в 1С

Переход на ФСБУ 6/2020 «Основные средства» в 1С по альтернативному алгоритму

Изменения в 2021 году, о которых нужно знать бухгалтеру

[11.10.2021 запись] Учет ОС по-новому: ФСБУ 6/2020, ФСБУ 26/2020, ФСБУ 25/2018

[29.10.2021 запись] Пообъектный учет ОС и подходы к определению и пересмотру СПИ

personal photo

Рассмотрим возможность пересчета итогов в режиме конфигуратора и пользовательском режиме.
В процессе обновления, переносов данных из других конфигурация и даже в процессе повседневной работы возможные технические сбои при выполнении системных операций. В большинстве случае такие сбои выявляются и успешно обрабатываются, но в некоторых случаях они, все-таки, приводят к ошибкам. Такие ошибки чаще всего проявляются при обращении к итоговым данным. Например, в оборотно-сальдовой ведомости "не сходится" сальдо начальное, оборот и конечное сальдо или итоги. Для исправления данной ситуации требуется пересчет итогов.
Пересчет итогов может быть выполнен в режиме конфигуратора (Меню Администрирование - Тестирование и исправление).


Выбираем флажком Пересчет итогов – Выполнить.


Пересчет итогов возможет и из режима Предприятие, для этого перейдем в раздел Администрирование – Обслуживание – Регламентные операции – Управление итогами и агрегатами.


Нажимаем на гиперссылку в нижней части экрана «Полные возможности»


Находим в списке Журнал проводок, выделяем его курсором и нажимаем кнопку «Пересчет». Можно выбрать период для пересчета, а можно просто нажать «Пересчитать итоги»


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

В данной публикации представлено 4 обработки и бонусный файл. Для запуска обработок под 8.2, обработки необходимо открыть в конфигураторе для конвертации. Все представленные в данной публикации обработки могут работать в многопользовательском режиме доступа (НЕ МОНОПОЛЬНО).


Проведение документов / восстановление последовательностей

1. Проводит документы за период. По выбранным видам документов. По выбранной организации.

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

«Охрана труда» для 1С:Предприятие 8

Дополнительные возможности

Повторные попытки проведения / восстановления в случае неудачи (например, в случае блокировки документа другим пользователем). Проведение / восстановление в многопользовательском режиме доступа. Ожидание завершения работы пользователя "Регламент" (под данным пользователем могут выполняться регламентные операции, например обмен данными РИБ). Завершение сеанса 1С:Предприятия 8 по окончании проведения / восстановления.

"ТМЦ / Оплата" помечает документы от проведения которых зависит учет НДС. К сожалению не всегда восстановление последовательности позволят корректно рассчитать НДС, комбинация проведения всех документов связанных с движением ТМЦ и оплатой, а также восстановление границы последовательности позволяет в значительной степени "правильно" выполнить расчет.

Данная обработка первоначально была разработана для УПП, но, разумеется, будет работать и в любой другой конфигурации 1С:Предприятия 8.

Установка границ последовательностей

Обработка "Установка границ последовательностей" позволяет устанавливать границы последовательностей на указанную дату без проведения документов. Это бывает необходимо при "случайном" проведении документа раньше границы восстановленной последовательности. Чаще всего если документ не изменялся, то результат его проведения тоже не изменится. В этом случае нет необходимости перепроводить все последующие документы, достаточно вернуть границу последовательности "на место".


Установка дат расчета итогов

При загрузке большого количества документов есть стандартная возможность отключить итоги, в этом случае загрузка будет выполнена быстрее. Но в случае повторной загрузки документов требущей перепродения документов после загрузки, данный механизм не подходит, потому что возникнет ошибка при обращении к итогам. Обработка "Установка дат расчета итогов" не отключает итоги, она расчитывает их на нужную дату. При правильном её использовании, проведение загружаемых документов не будет вызавать пересчет итогов последующих периодов.

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

"Удаление рассчитанных итогов" - в этом режиме расчитанные итоги удаляются, но использование итогов не отключается. Т. е. документы будут нормально проводится.


Пересчет итогов по регистрам

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


Бонус

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

Буду рад комментариям с конструктивной критикой, пожеланиями и замечаниями.

Читайте также: