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

18.05.22

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

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

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

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

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

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

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

Формируется один большой 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.

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

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

См. также

Многофункциональная выгрузка из 1С: Управление торговлей (УТ11, УТ10) в Бухгалтерию предприятия (БП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    166205    344    395    

325

Правильная свертка или свертка базы по правилам

Свертка базы Чистка данных Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Обработка "Свертка базы по правилам" предназначена для свертки информационных баз системы программ "1С:Предприятие" версии 8.2. Основой обработки являются специальные правила свертки, которые создаются индивидуально для каждой конфигурации информационной базы. Встроенный в обработку генератор правил позволяет быстро создать правила свертки для любой конфигурации. Например, для конфигурации "1С:Бухгалтерия 8, ред. 3.0" правила свертки были созданы за 15 минут!

2400 руб.

22.07.2013    161862    609    527    

400

Свертка базы УНФ для 1.6

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

Обработка свертки базы УНФ 1.6 выполнена в виде расширения конфигурации, которое встраивается в вашу базу без снятия с поддержки, и адаптирована под релиз УНФ 1.6.

4800 руб.

20.04.2021    15065    48    34    

55

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

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

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

7200 руб.

27.03.2023    3382    6    2    

6

Свертка базы - или как свернуть базу УТ 10.3

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

Как свернуть УТ 10.3. Цель свертки - свернуть остатки по товарам и по взаиморасчетам с контрагентами.

4 стартмани

04.04.2019    51473    236    RustIG    46    

88

Быстрое получение информации по всем регистрам накопления

Свертка базы Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

С помощью обработки можно быстро посмотреть информацию о всех регистрах накопления с фильтрацией и сортировкой.

1 стартмани

18.09.2023    428    3    sandr13    0    

4

Свертка счетов

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

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

2 стартмани

15.05.2023    1857    1    kolia_oks    0    

2

Свертка остатков по активным счетам для конфигурации 1С:Бухгалтерия 3.0, 1С:Бухгалтерия 3.0 КОРП

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

Универсальная обработка для свертки остатков по активным счетам для конфигурации "1С:Бухгалтерия 3.0", "1С:Бухгалтерия 3.0 КОРП". Обработка для случаев, когда на активных счетах (остатки по Дт) в оборотно-сальдовых ведомостях есть остатки с плюсом и минусом, которые в сумме дают 0, и которые нужно свернуть.

2 стартмани

21.04.2023    2553    7    Klinov    0    

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


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

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

Никаких вводов остатков, только корректировки регистров.
кек
7. ksa 22.06.22 10:17 Сейчас в теме
Доброго времени суток !
Данная выгрузка справочники тоже выгружает ?
8. dima1c 37 06.07.22 10:05 Сейчас в теме
(7) нет, выгружает только ссылки на справочник, т.к. справочники уже есть в ИБ в которой производится свёртка.
9. ksa 06.07.22 13:49 Сейчас в теме
То есть сначала нужно сделать копию, грохнуть в ней все документы, только после этого выгрузить/загрузить данные с обрезаемой базы.
10. dima1c 37 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 37 12.07.22 10:22 Сейчас в теме
(11)
нужно создать модуль в конфигурации, "TNL_Служебный" [сервер , вызов сервера] скопировать туда текст из модуля обработки.
написано же подробно, выше.
13. ksa 11.08.22 09:13 Сейчас в теме
Флаг "физически удалять документы" не работает ?
При выполнении скрипта в SQL в периоде до обрезки должны ведь документы пометиться на удаление ?
Оставьте свое сообщение