Свертка базы SQL + Альтернативный контроль удаления помеченных


Свертка базы 1с 8.1, 8.2 (может использовать прямые запросы к MSSQL, PostgreSQL). Сворачивает документы, регистры накопления, сведений, бухгалтерии (но не регистры расчета). Универсальна, подойдет к любой конфигурации. Включает в себя нестандартный быстрый контроль удаления помеченных объектов и удаление помеченных объектов прямыми запросами. Поставляется с исходными кодами.

Обработка "Свертка базы SQL" позволяет:

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

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

* Данные по регистрам расчета данной обработкой не сворачиваются!

* Таблицы Регистрации изменений для регистров (по планам обмена) могут быть либо полностью очищены при свертке либо незатронуты вообще (флаг на закладке Описание).

* Для выполнения свертки в базу необходимо добавить документ "Ввод остатков свертка базы SQL" и сделать его регистратором всех регистров накопления, сведений, бухгалтерии, он поставляется в .cf файле вместе с обработкой.
(При объединении с .cf файлом отключите все флажки кроме Документов)
Данный документ позволит ввести остатки по регистрам накопления, сведений и бухгалтерии на дату свертки. Если такой документ в базе отсутствует, обработкой можно будет воспользоваться для удаления помеченных объектов и/или для дефрагментации индексов, пересчета статистики.

* Перед запуском свертки важно указать какие документы и регистры нельзя сворачивать!
Например, документы, к которым есть запросы с ключевым словом "Первые" не рекомендуется сворачивать.

* Перед запуском свертки на рабочей базе - протестируйте на копии, сверьте остатки.

2. Удалить с контролем целостности все помеченные объекты. Предоставляется возможность выбора:

- стандартный 1с контроль целостности с удалением помеченных объектов - самый длительный вариант, возможно падение 1с из-за нехватки памяти;

- альтернативный контроль целостности со стандартным 1с удалением объектов - контроль очень быстрый (особенно под 8.2, в том числе в режиме совместимости с 8.1), а удаление по 1000 объектов в транзакции, что быстрее нежели первый вариант;

- альтернативный контроль целостности с удалением прямыми запросами к SQL серверу,
пакетами по 50000 строк - самый быстрый вариант (внимание, при этом не будут вызваны события связанные с удалением объектов - ПередУдалением, ПриУдалении и т.п., и в планах обмена не будут отражаться операции удаления).

3. Просмотреть какие объекты стали причной запрета удаления при альтернативном контроле целостности,
какие поля и/или движения этих объектов стали причиной запрета, с возможностью открыть эти объекты по ссылке.

4. Усечь файлы базы данных SQL после массовых удалений (прямые запросы к SQL серверу).

5. Перестроить либо дефрагментировать индексы (в зависимости от степени фрагментации),
пересчитать статистику, сбросить кэш плана запросов для данной базы (прямые запросы к SQL серверу).
Имеется возможность перестроить индексы в то время как с базой работают пользователи (MSSQL 2005 и выше).

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

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

* Для выполнения прямых запросов понадобятся драйвера ODBC для соответствующего сервера баз данных.
Для MSSQL они обычно входят в поставку. Для PostgreSQL их можно найти тут: http://www.postgresql.org/ftp/odbc/versions/msi/

* Поддерживаются 1с 8.1, 8.2 (в режиме совместимости 8.1), 8.2 (без режима совместимости). Управляемые формы не используются.

* Автору не удалось потестировать обработку на свертке агрегатов регистров оборотов, в регистрации изменений (для планов обмена) операции, выполняемые прямыми запросами, не регистрируются.

Подробнее смотрите в описании самой обработки (по F1).

=============================================

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

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

=============================================

Обновление от 2013-04-08 23:59 мск. Версия 1.2.12

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

Обновление от 2013-03-21 20:00 мск. Версия 1.2.11

* Исправлены обнаруженные ошибки
**при альтернативном контроле целостности возникала ошибка с прерыванием обработки в том случае если в конфигурации имелись планы счетов с не пустым видом субконто и максимальным количеством видов субконто = 0. 
**при вводе остатков по регистру бухгалтерии без корреспонденции, или с планом счетов, у которого не задан вид субконто или максимальное количество видов субконто = 0 возникала ошибка с прерыванием обработки.

Обновление от 2013-03-12 14:00 мск. Версия 1.2.10

* Исправлены обнаруженные ошибки:
**при альтернативном контроле целостности в некоторых случаях допускалось удаление помеченных объектов на которые имелись ссылки. Для исправления обработки СверткаБазыSQL требуется заменить в модуле формы процедуру "внОбработатьНепомеченные" на её исправленную версию: https://dl.dropbox.com/u/49134062/Procedure_ProcessNotMarked.zip

Обновление от 2013-03-05 15:00 мск. Версия 1.2.9

* Исправлены обнаруженные ошибки:
**при формировании документов ввода остатков в некоторых редких случаях вводились некорректные данные. Для того, чтобы проверить возникла ли ошибка на Ваших данных и получить рекомендации по исправлению данных и кода обработки СверткаБазыSQL, рекомендуется скачать специальную обработку по ссылке: https://dl.dropbox.com/u/49134062/CheckDocsMadeBySvertkaBasySQL.zip

Обновление от 2013-03-01 17:00 мск. Версия 1.2.8

* Исправлены обнаруженные ошибки:
**при соединении с MSSQL игнорировались имя и пароль - использовалась Windows аутентификация (теперь добавлен флаг отключающий Windows аутентификацию)

=============================================

Copyright © 2012-2013 Тарасенков Александр

Файлы обработки:

-