Свертка больших баз через выгрузку - загрузку остатков

18.05.22

База данных - Свертка базы

У вас большая база - больше 300 гб, и вы хотите её уменьшить? В стандартных процедурах свёртки возникают ошибки или не хватает памяти? Вы хотите перегнать огромные списки остатков между базами? Тогда, возможно, данная разработка будет вам интересна.

Скачать файлы

Наименование Файл Версия Размер
Свертка больших баз, через выгрузку - загрузку остатков :
.epf 19,99Kb
34
.epf 19,99Kb 34 Скачать

Свёртка базы: инструкция:

Данная обработка работает в конфигурациях с БСП.

Выгрузка остатков производится в потоке, загрузка остатков тоже.

Формируется один большой SQL запрос, который можно выполнить в "SQL Managment studio"

 

Установка обработки

  1. Взять модуль объекта обработки и скопировать в конфигурацию назвав "TNL_Служебный" с параметрами, "сервер" , "вызов сервера"
    Всё, на этом установка закончена

 

Использование

Выгрузка остатков

 

В закладке Регистры накопления нажать "Добавить все" убрать лишние, если требуется, регистры, нажать "1. Выгрузка остатков"

Будет предложен каталог, в котором в последующем будет выгружен файл

 

Обрезка данных

 

  • На вкладке "настройки" указать параметры БД
  • На закладках "Регистры накопления", "Регистры сведений", "Документы" выбрать нужные регистры и нажать кнопку
    "2. Выполнение запроса SQL"
  • Из вкладки результат скопировать текст, например текст:
-- Включаем минимальное журналирование
USE trade_test; ALTER DATABASE trade_test SET RECOVERY BULK_LOGGED;
 GO 
-- Основная  БонусныеБаллы, обрезка данных
delete from _AccumRg15719 where _period <= Convert(varchar(30), '4019-12-31T23:59:59', 126);
 GO 
-- Итоги БонусныеБаллы, очистка
truncate table _AccumRgT15724;
 GO 
-- Изменения БонусныеБаллы, очистка
truncate table _AccumRgChngR15725;
 GO 
-- ВозвратТоваровОтКлиента отмена проведения
update _Document292 set _Posted = 0x00 where _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126) and  _Posted = 0x01; 
 GO 
UPDATE _DocumentJournal12911 SET _Posted = 0x00 WHERE _DocumentRRef IN (SELECT _IDRRef FROM _Document292 WHERE _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126)) and  _Posted = 0x01;
 GO 
-- Реестр торговых документов
-- ЧекККМВозврат отмена проведения
update _Document399 set _Posted = 0x00 where _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126) and  _Posted = 0x01; 
 GO 
UPDATE _DocumentJournal12911 SET _Posted = 0x00 WHERE _DocumentRRef IN (SELECT _IDRRef FROM _Document399 WHERE _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126)) and  _Posted = 0x01;
 GO 
-- Реестр торговых документов
UPDATE _DocumentJournal12941 SET _Posted = 0x00 WHERE _DocumentRRef IN (SELECT _IDRRef FROM _Document399 WHERE _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126)) and  _Posted = 0x01;
 GO 
-- Чеки ККМ
-- КорректировкаРегистров отмена проведения
update _Document323 set _Posted = 0x00 where _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126) and  _Posted = 0x01; 
 GO 
UPDATE _DocumentJournal12911 SET _Posted = 0x00 WHERE _DocumentRRef IN (SELECT _IDRRef FROM _Document323 WHERE _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126)) and  _Posted = 0x01;
 GO 
-- Реестр торговых документов
-- ОтчетОРозничныхПродажах отмена проведения
update _Document343 set _Posted = 0x00 where _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126) and  _Posted = 0x01; 
 GO 
UPDATE _DocumentJournal12911 SET _Posted = 0x00 WHERE _DocumentRRef IN (SELECT _IDRRef FROM _Document343 WHERE _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126)) and  _Posted = 0x01;
 GO 
-- Реестр торговых документов
-- ЧекККМ отмена проведения
update _Document398 set _Posted = 0x00 where _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126) and  _Posted = 0x01; 
 GO 
UPDATE _DocumentJournal12911 SET _Posted = 0x00 WHERE _DocumentRRef IN (SELECT _IDRRef FROM _Document398 WHERE _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126)) and  _Posted = 0x01;
 GO 
-- Реестр торговых документов
UPDATE _DocumentJournal12941 SET _Posted = 0x00 WHERE _DocumentRRef IN (SELECT _IDRRef FROM _Document398 WHERE _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126)) and  _Posted = 0x01;
 GO 
-- Чеки ККМ
-- НачислениеИСписаниеБонусныхБаллов отмена проведения
update _Document325 set _Posted = 0x00 where _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126) and  _Posted = 0x01; 
 GO 
UPDATE _DocumentJournal12911 SET _Posted = 0x00 WHERE _DocumentRRef IN (SELECT _IDRRef FROM _Document325 WHERE _Date_Time <= Convert(varchar(30), '4019-12-31T23:59:59', 126)) and  _Posted = 0x01;
 GO 
-- Реестр торговых документов
-- удаление табличных частей 
-- Документ.ЭлектронноеПисьмоВходящее.НепринятыеВложения удаление
DELETE FROM _Document400_VT12702 WHERE _Document400_IDRRef IN (SELECT _IDRRef FROM _Document400 WHERE _Date_Time <= Convert(varchar(30), '31.12.4019 23:59:59', 126));
-- Документ.ЭлектронноеПисьмоВходящее.НепринятыеВложения удаление
DELETE FROM _Document400_VT12710 WHERE _Document400_IDRRef IN (SELECT _IDRRef FROM _Document400 WHERE _Date_Time <= Convert(varchar(30), '31.12.4019 23:59:59', 126));
-- Документ.ЭлектронноеПисьмоВходящее.НепринятыеВложения удаление
DELETE FROM _Document400_VT12718 WHERE _Document400_IDRRef IN (SELECT _IDRRef FROM _Document400 WHERE _Date_Time <= Convert(varchar(30), '31.12.4019 23:59:59', 126));
-- Документ.ЭлектронноеПисьмоВходящее.НепринятыеВложения удаление
DELETE FROM _Document400_VT12726 WHERE _Document400_IDRRef IN (SELECT _IDRRef FROM _Document400 WHERE _Date_Time <= Convert(varchar(30), '31.12.4019 23:59:59', 126));
-- Документ.ЭлектронноеПисьмоВходящее.НепринятыеВложения удаление
DELETE FROM _Document400_VT12733 WHERE _Document400_IDRRef IN (SELECT _IDRRef FROM _Document400 WHERE _Date_Time <= Convert(varchar(30), '31.12.4019 23:59:59', 126));
-- Документ.ЭлектронноеПисьмоВходящее.НепринятыеВложения удаление
DELETE FROM _Document400_VT12740 WHERE _Document400_IDRRef IN (SELECT _IDRRef FROM _Document400 WHERE _Date_Time <= Convert(varchar(30), '31.12.4019 23:59:59', 126));
-- Документ.ЭлектронноеПисьмоВходящее.НепринятыеВложения удаление
DELETE FROM _Document400_VT12745 WHERE _Document400_IDRRef IN (SELECT _IDRRef FROM _Document400 WHERE _Date_Time <= Convert(varchar(30), '31.12.4019 23:59:59', 126));
-- Документ.ЭлектронноеПисьмоВходящее.НепринятыеВложения удаление 
DELETE FROM _Document400 WHERE _Date_Time <= Convert(varchar(30), '31.12.4019 23:59:59', 126);
    
-- сжатие данных 
DBCC SHRINKFILE(N'trade1', 0);
GO
-- сжатие лога 
DBCC SHRINKFILE(N'trade1_log', 0);
GO
-- Конец проверьте остатки.
  • Выполнить данный запрос в SQL Managment Studio
  • Зайти в конфигуратор в тестировании и исправлении выбрать пересчёт итогов.

 

Загрузка остатков

  • Нажать "3. Загрузка остатков", выбрать файл с остатками
    можно на всякий случай:
  • Зайти в конфигуратор в тестировании и исправлении выбрать пересчёт итогов.

 

Тестирование производилось на Управление торговлей, редакция 11.2 (11.2.2.116), 1с 8.3.19.1467, SQL Managment studio 18.

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

БСП свёртка базы

См. также

Оптимизированная свертка Бухгалтерии 3.0

Свертка базы Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Платные (руб)

Расширение позволяет за 1-2 дня свернуть базу с десятками миллионов документов. Использует оптимизированный алгоритм определения документов, на которые нет ссылок, для последующего удаления 16 фоновыми заданиями. Не помечает документы на удаление.

38400 руб.

08.02.2024    486    7    0    

2

Многофункциональная выгрузка из 1С:УТ 11/ УТ 10 в 1С:БП2, БП3 (соответствия товаров, контрагентов, складов, статей ДДС)+Свёртка по НДС

Обмен между базами 1C Оптовая торговля Свертка базы Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Хотите точно знать, что вы выгружаете? Хотите сворачивать товары по НДС или фильтровать товары по доп. реквизиту? Вы волшебник, которому необходимо превращать одних контрагентов в других? Хотите при выгрузке превратить группу товаров в один? Или просто нужен удобный OLE обмен между 1C:Управление торговлей (ред. 11 или 10) и 1С:Бухгалтерия предприятия (ред. 2 или 3). Тогда эта обработка для вас!

10900 руб.

19.04.2013    168470    350    395    

327

Обрезание базы 1С

Свертка базы 8.3.8 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Механизм обрезания базы 1С. Описан процесс переноса среза остатков в копию базы. Представлено прикладное решение - обработка по переносу данных. Реализован способ обмена между базами без длительного отключения рабочей базы.

7200 руб.

27.03.2023    4174    11    2    

13

Сравнение остатков по регистрам накопления

Свертка базы Платформа 1С v8.3 1С:Управление торговлей 10 Управленческий учет Абонемент ($m)

Внешняя обработка (для конфигураций на обычных формах) сравнивает остатки на дату и в разрезе организации по всем регистрам накопления. Сравнение происходит между базами по технологии Com-соединение. Используется при свертке базы.

3 стартмани

27.03.2024    346    0    RustIG    0    

3

Свертка остатков по 41 счету в корреспонденции с 91 счетом

Свертка базы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

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

1 стартмани

18.03.2024    209    5    config    3    

2

Свертка ЗУП 3.1 и ЗКГУ 3.1

Свертка базы Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Абонемент ($m)

Вопрос, который мучает всех: в связи с развитием возможностей программ 1С размеры/объем очень быстро растут (уже объем пустой базы более 1 Гб) и не секрет, что чем "тяжелее" база, тем она медленнее работает. Для БП-3.0 разработчики 1С сделали вшитый типовой механизм свертки базы, суть которого вывести остатки по счетам на дату свертки и удалить все документы/движения до этой даты. А вот для ЗУП пока ничего подобного нет, а база растет быстрее, чем на дрожжах. Я долго анализировал и искал возможные решения для свертки ЗУП, поиск в интернете дал кучу различных вариантов. А когда начинаешь их рассматривать, в основном – только "перенос" среднего заработка, а остальное – "доделай сам". Только фирмы-франчайзи предлагают что-то более серьезное, но за хорошую плату.

5 стартмани

28.02.2024    1032    35    ivnik    16    

16

Свертка выбранных остатков

Свертка базы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Обработка позволяет свернуть выбранные остатки по счету на выбранный счет.

1 стартмани

13.02.2024    223    3    medm    0    

3

Свертка ЗУП 3

Свертка базы Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Свертка ЗУП 3.1 по трем регистрам с возможностью чистки базы от документов движения и чистки сотрудников от уволенных.

5 стартмани

16.01.2024    1167    32    AlexHelmer    1    

6
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TMV 14 20.05.22 00:36 Сейчас в теме
Вот бы еще проводки - эта обработка скорее пример.
Зачем во 2м пункте делать пересчет итогов, если остатки потом загружаются?
2. dima1c 44 20.05.22 10:18 Сейчас в теме
(1) Итоги после загрузки надо считать. Но бывают ситуации когда загрузка не нужна, допустим удаление не нужных данных.
Это просто послание что после обрезки, итогов вы не увидите пока не пересчитаете их в конфигураторе, т.к. таблица итогов дропается.
3. dima1c 44 20.05.22 10:21 Сейчас в теме
(1) По поводу регистров бухгалтерии добавлю, в будущей версии.
14. Vld-y 04.05.23 13:02 Сейчас в теме
(3)
1) По поводу регистров бухгалтерии добавлю, в будущей версии.


Сделано?
4. buganov 200 23.05.22 11:31 Сейчас в теме
А где ввод остатков на начало периода?
По примеру Вы убили все до конца 2019 года, а при пересчете итогов получите поехавшие остатки.
Как по мне, лучше остатки не выгружать в отдельный файл, а сразу сформировать итоговые движения начальных прямо в студии, так как с мелкими базами справится типовая обработка, а с террабайтными на файле подавится.
5. dima1c 44 23.05.22 11:44 Сейчас в теме
(4)
А где ввод остатков на начало периода?

Загружается в корректировку регистра, загрузка и выгрузка производится в потоке так что со всем справится даже слабый сервер. Ничего не поехало, обработка проверена в бою.
Итоги нужно считать только после окончания т.е. загрузки.
6. dima1c 44 23.05.22 11:48 Сейчас в теме
1. ВЫГРУЗКА ОСТАТКОВ (выгружаются в json с минимальной сериализацией *т.е. там только ссылки на объекты)
2. ВЫПОЛНЕНИЕ СКРИПТА
3. ЗАГРУЗКА ФАЙЛА ZIP с остатками созданного на 1. шаге.
4. СЧИТАЕМ ИТОГИ В КОНФИГУРАТОРЕ.

Никаких вводов остатков, только корректировки регистров.
кек
7. ksa 22.06.22 10:17 Сейчас в теме
Доброго времени суток !
Данная выгрузка справочники тоже выгружает ?
8. dima1c 44 06.07.22 10:05 Сейчас в теме
(7) нет, выгружает только ссылки на справочник, т.к. справочники уже есть в ИБ в которой производится свёртка.
9. ksa 06.07.22 13:49 Сейчас в теме
То есть сначала нужно сделать копию, грохнуть в ней все документы, только после этого выгрузить/загрузить данные с обрезаемой базы.
10. dima1c 44 06.07.22 14:23 Сейчас в теме
(9) Можно и так. Можно скопировать справочники, в чистую базу и загрузить остатки потом.
11. OldthiefXXX 153 12.07.22 09:58 Сейчас в теме
Управление торговлей, редакция 11 (11.4.13.269)
При открытии


Ошибка инициализации модуля: ВнешняяОбработка.СверткаБазыУТ11.МодульОбъекта
по причине:
{ВнешняяОбработка.СверткаБазыУТ11.МодульОбъекта(107,88)}: Переменная не определена (TNL_Служебный)
ЗаписатьJSON(ЗаписьДанных, СтруктураРегистра, НСериализации, "СериализоватьДанные", <<?>>TNL_Служебный);
{ВнешняяОбработка.СверткаБазыУТ11.МодульОбъекта(305,89)}: Переменная не определена (TNL_Служебный)
Рез = ПрочитатьJSON(Чтение, Ложь, , ФорматДатыJSON.ISO, "СериализоватьДанныеЗагрузка", <<?>>TNL_Служебный);
12. dima1c 44 12.07.22 10:22 Сейчас в теме
(11)
нужно создать модуль в конфигурации, "TNL_Служебный" [сервер , вызов сервера] скопировать туда текст из модуля обработки.
написано же подробно, выше.
13. ksa 11.08.22 09:13 Сейчас в теме
Флаг "физически удалять документы" не работает ?
При выполнении скрипта в SQL в периоде до обрезки должны ведь документы пометиться на удаление ?
Оставьте свое сообщение