gifts2017

Обрезание (свертка) ТиС

Опубликовал Артур Арабаджиян (kasperok) в раздел Администрирование - Чистка базы

В данной статье я опишу универсальную технологию обрезания (сверки) БД.

Вы наверно частенько встречались с ситуацией что, в конце концов, база вырастает до таких объемов, что уже не выносимо с ней работать, а если она ещё и DBF то и очень опасно.


И когда я пришел недавно на новую работу, где всё работает на ТиС, то я столкнулся с тем что пока обрезать базу. Раньше если честно я с ТиС не имел дела, и для меня была в новинку данная операция.

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

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

И всё оказалось не так уж и сложно, хотя в интернете до сих пор нету грамотных решений по данному вопросу, а если и есть то только за деньги :-)

Кстати это ещё не всё. После чего нужно удалить все доки. Если у вас SQL то здесь вам повезло. Делаем так, в QA выполняю данный запрос, и удаляю все документы до указанной даты буквально за 20 минут (а из не мало с учётом того что в день 300 доков, а удалять надо полтора года)

USE MyTestBase

Go

CREATE TABLE ##ID



(IDDOC char(9) primary key clustered)

Go

INSERT INTO ##ID



SELECT DISTINCT IDDOC

FROM _1SJOURN

WHERE (DATE_TIME_IDDOC < '20060530')

Go

BEGIN TRANSACTION

DECLARE Mycur cursor for

SELECT sysobjects.name,syscolumns.name

FROM syscolumns INNER JOIN

sysobjects ON syscolumns.id = sysobjects.id

WHERE (syscolumns.name = N'iddoc') OR

(syscolumns.name = N'docid')

OPEN MyCur

DECLARE @TableName varchar(20)

DECLARE @ColName varchar(20)

FETCH NEXT FROM MyCur INTO @TableName, @ColName

WHILE @@FETCH_STATUS = 0

BEGIN

EXEC ('Delete from '+@TableName+' with (tablock) where '+@ColName+' IN (Select IDDOC FROM ##ID)')



FETCH NEXT FROM MyCur INTO @TableName, @ColName

END

CLOSE MyCur

DEALLOCATE MyCur

COMMIT TRANSACTION

DROP TABLE ##ID



Но после этого я столкнулся с тем что движения остаются по удалённым документам.
В связи с этим я применил ещё один запрос именно по регистру ПартииПаличия

use НазваниеБазы 

DELETE FROM RA328

WHERE IDDOC NOT IN (SELECT IDDOC FROM _1sjourn (nolock))



после чего я в конфигураторе я сделал Тестирование и исправление ИБ
В нём я поставил все галочки и в настройках выбрал "Очищать ссылки" и "Удалять данные объекты"
Вот и вест процесс обрезки :-)
У меня он занял со всеми исправлениями часов 6.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Владимир (vovan519) 24.12.08 14:12
Может в следующий раз предварительно в Ворде набрать текст. Просто неприятно читать.
2. Артур Арабаджиян (kasperok) 24.12.08 14:21
3. LenaTorpeda 24.12.08 14:57
У меня срезка базы любой длинны занимает от силы пол часа.
5. Михаил Ражиков (tango) 24.12.08 15:39
6. LenaTorpeda 24.12.08 16:15
7. Алексей Коробов (WiseSnake) 25.12.08 02:04
Я не понял что за чудесные решения, товарисчи?

(4)
>>LenaTorpeda 24.12.2008 15:12:03
>>Будет скучно,почитай:
Почитал... в шоке... То ли я такой тупой, то ли что то недопонимаю. А у вас партионный учет не ведется, переносите все справочники... а как же документы? где они?
(0) >> и удаляю все документы до указанной даты буквально за 20 минут
Так надо удалять не документы до указанной даты а документам по которым не висят долги. А в принципе могут существовать документы любой даты.

P.S. Типовую свертку неглупые люди писали, может быть не совсем оптимально.
8. LenaTorpeda 25.12.08 03:22
(7) Документацию ведет бухгалтерия. Отдельно .Магазинов в одной фирме -12 ,а бухгалтерия одна.Учет по бухгалтерии суммовой,так,что им абсолютно безразлично сколько висит в кредите поставщика.
9. LenaTorpeda 25.12.08 03:23
Кредит поставщика,я имела ввиду в ТиС
10. LenaTorpeda 25.12.08 03:27
Ну и напоследок.Это работет !!!! Попробуй и тебе понравится.:)
11. Сhe Burashka (CheBurator) 25.12.08 03:45
ндя.. а регистр "реализованный товар"..? и прочие "партионные регистры"?
12. Сhe Burashka (CheBurator) 25.12.08 03:47
все эти решения хороши тем что они - частные.. а типовая свертка - универсальная...
13. Артур Арабаджиян (kasperok) 25.12.08 11:34
ну не знаю, если у вас ведется партионный учет + у меня не совсем типовая конфигурация с регистром партий весов 1.9 гига, и в эти 6 часов входит очистка базы от документов, исправление базы. Так, заявление что это очень долго не совсем корректно. А что касается типовые сверки, она создает слишком много документов, а всего то требуется выгрузить итоги по регистрам и сделать движении дублирующие эти итоги и все.
14. LenaTorpeda 25.12.08 19:40
(11) Подскажи,пожалуйста,зачем тебе регистр "реализованный товар", например за позапрошлый год? Тем более что все данные остаются в "старой" базе. И оператор ,если уж очень потребуется,вседа ее может открыть и сделать отчет.
15. Геннадий (GJosh) 26.12.08 00:10
Буква "Т" на консоли западает, что ли?
16. Сhe Burashka (CheBurator) 26.12.08 01:42
(14) Шоб було! Как говорится: запас карман не тянет.. ;-)
Я, например, вообще не сторонник обрезок баз если этого только не требуется ввиду того что железо перастало справляться...
17. Алексей Коробов (WiseSnake) 26.12.08 09:43
(10) На базах моих клиентов такое точно не сработает. Если они не будут знать остатки в разрезе поступления они меня загрызут. Да и полный бред в базе будет.
18. Евгений Долиновский (Dolly_EV) 16.01.09 04:34
Вот это посмотрите: http://infostart.ru/projects/1538/
док "Архив" - универсальный
если пометка на удаление доков прошлого периода на дбф - откатить БухИтоги до первого документа и помечать пачками через
НачатьТранзакцию()
-
ЗафиксироватьТранзакцию()

и будет вам щастие))
19. Юрий Осипов (yuraos) 22.11.11 07:09
Скрипт, приведенный в статье, гарантированно наплодит битых ссылок в базе.
Он удаляет записи в таблице журнала документов и во всех таблицах где есть имя колонки 'IDDOC'.
Фактически это таблицы шапки документа, табличной части документа и таблицы движений по "регистрам" (в общем смысле включая проводки, историю реквизитов справочников и записи ЖР).
При этом не учитывается,
что ссылки на документ могут быть в других таблицах и в других колонках.
Поэтому после делается тестирование-исправление.
Но у меня на моих размерах оно делается где-то двое суток!!!
Меня такое щастье как-то не очень устраивает!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа