Методика быстрого сворачивания периода больших баз в системе 1С:Предприятие 7.7

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

Данная методика проверена на тестовой базе, размер которой за месячный период составил 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 можно написать скрипт перебирающий таблицы документов и выполняющий данный запрос для каждой из них.

2) Удаляем проводки и операции

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 формате записываются в виде {d 'YYYY-MM-DD'}

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

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

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

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

З.Ы.

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

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

Если будут пожелания по продолжения статьи или быть может ваши решения этих задач, то с удовольствием дополню ими статью.

Замечания шлите мне на мыло

Шемякин Павел, апрель 2002 г.

Иван Никитенко: «Я точно не готов продавать душу и работать с клиентами-говнюками»

Это второй сезон проекта «ТоТ еще разговор». Хочется говорить с предпринимателями об их бизнесе. Мы пригласили краснодарского предпринимателя Ивана Никитенко.

Иван Никитенко: «Я точно не готов продавать душу и работать с клиентами-говнюками»
3

Комментарии

2
  • Хранитель_врат
    вот так и замер клерк.ру...
    две классные статьи. практические. реальные.
    и флейм затих...
    автору = спасибо.
  • Хранитель_врат
    А я вот сворачивал период большой (>800 m) базы этой самой обработкой. Тоже мучился, и все такое, только выход нашел гораздо более примитивный. В этой обработке в начале удалил НачатьТранзакцию, а в конце - ЗафиксироватьТранзакцию. На фига мне эта транзакция, если я все равно (перед такой-то процедурой) надежно базу закопировал? Ну и замечательно она отработала, пахала в течение 8 часов и благополучно завершилась.
Бесплатно с УСН

Как в 2024 году уменьшать налоги по УСН и ПСН на страховые взносы: таблица для ИП и ООО

При расчете налога на УСН «доходы» для фиксированных взносов факт уплаты не имеет значение, для взносов за работников — важен факт уплаты. На доходно-расходной упрощенке факт уплаты имеет решающее значение. Для подтверждения этого факта может понадобиться заявление о зачете. Смотрите в нашей таблице, когда и как можно учитывать взносы при УСН и ПСН.

Как в 2024 году уменьшать налоги по УСН и ПСН на страховые взносы: таблица для ИП и ООО

Курсы повышения
квалификации

22
Официальное удостоверение с занесением в госреестр Рособрнадзора

О чем говорят бухгалтеры — топ 5 обсуждаемых тем на этой неделе. 👂«Ночной бухгалтер» № 1694

Говорили не только о реформах, обычные рабочие проблемы никуда не делись. Кто-то в Китай не может перевести деньги, у кого-то налог на УСН — выпади глаза, а у кого-то вообще счета заблокировали. Но всегда есть коллеги-спасители, которые и словом утешат, и делом помогут.

Иллюстрация: Вера Ревина / Клерк.ру
Валюта

Стартовал сезон скупки долларов

Интерес к валюте вырос в преддверии сезона отпусков, на спрос также повлияло укрепление рубля.

Лучшие спикеры, новый каждый день

Иван Никитенко: «Я точно не готов продавать душу и работать с клиентами-говнюками»

Это второй сезон проекта «ТоТ еще разговор». Хочется говорить с предпринимателями об их бизнесе. Мы пригласили краснодарского предпринимателя Ивана Никитенко.

Иван Никитенко: «Я точно не готов продавать душу и работать с клиентами-говнюками»
3
Банки

Доля просроченных микрозаймов сократилась до 32%

80% клиентов МФО получают займы дистанционно.

УСН

Изменения по УСН: НДС и новые лимиты

К каким переменам ИП и организациям на УСН надо приготовиться в 2024-2025 гг.

Иллюстрация: Вера Ревина/Клерк.ру
Опытом делятся эксперты-практики, без воды
Зарплата

Большинство компаний МСП повысили зарплаты: каким именно специалистам

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

При назначении налоговых выплат буду учитывать детей до 23 лет

Семьи могут претендовать на налоговые вычеты, если дети до 23 лет получают очное образование.

Топ-4 трудностей с отпусками: с чем столкнулись бухгалтеры в 2024 году

Собрали ответы Роструда на частые вопросы об отпусках без сохранения зарплаты и компенсации за неиспользованный отпуск.

Иллюстрация: Вера Ревина/Клерк.ру
Общество

В поездах можно перевозить животных без их владельцев

Оформить документы и забронировать билет владельцы питомцев смогут на сайте РЖД, в информации нужно указать особенности ухода за домашним животным.

Какой будет налоговая система с 2025 года: реальность и предложения экспертов

30 мая 2024 года в рамках Ильинского клуба предпринимателей при ТПП прошли общественные обсуждения налоговых реформ и изменений в НК, в том числе предложенных Минфином с 2025 года.

Какой будет налоговая система с 2025 года:  реальность и предложения экспертов
НДС

Медицинские товары облагаются НДС 10%, если на них есть регудостоверение

По медицинским изделиям может быть ставка НДС 10%, если они входят в перечень, не быть вообще НДС, если они входят в другой перечень или НДС 20%, если ни в один перечень этот товар не входит.

Миникурсы, текстовые и видеоинструкции для бухгалтеров

Теперь рассчитывать дни станет проще, на «Клерке» появился удобный калькулятор

Калькулятор дат поможет быстро найти ответ на вопрос «сколько дней между датами». Если вам нужно быстро что-то рассчитать, воспользуйтесь бесплатным калькулятором на Клерке». Задайте начальную дату, конечную дату — и получите результат.

Теперь рассчитывать дни станет проще, на «Клерке» появился удобный калькулятор
1

Ещё раз: как продвигать свои посты на «Клерке»

Если вы видите это сообщение, значит продвижение работает.

Ещё раз: как продвигать свои посты на «Клерке»
9

Как сократить издержки и снизить риски сотрудничества с внештатными исполнителями

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

Как сократить издержки и снизить риски сотрудничества с внештатными исполнителями

⚡️ Итоги дня: в России начнут делать просекко, хакеры следят за перепиской в Telegram, а водителей оштрафуют за езду на зимней резине и за парковку во дворе

Подготовили обзор главных событий дня — 31 мая 2024 года. Все самое интересное, что писали и обсуждали в сети, в одной подборке.

Советы бухгалтерам в преддверии выходных. Похмелье: никогда не было и вот опять

Выходные прошли, а похмелье осталось? Рассказываем клеркам, как себе помочь, и напоминаем про красные флаги.

6
Маркетинг

Дистанционные продажи лекарств выросли в 10 раз

Минздрав ожидает, что к концу 2024 года объемы онлайн-продаж лекарственных средств составят 100 млрд рублей.

Бухгалтерский учет штрафов

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

Бухгалтерский учет штрафов

Интересные материалы

Райффайзенбанк прекратит отправку переводов в долларах, есть ли альтернатива

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

Райффайзенбанк прекратит отправку переводов в долларах, есть ли альтернатива