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