Имя: Пароль:
1C
1C 7.7
v7: Как зачистить в ТиС (SQL) все документы и регистры?
0 commoc
 
29.01.14
11:20
Есть база 7.7 торговля sql. надо зачистить все документы и регистры. оставить справочники.
1 Mikeware
 
29.01.14
11:21
"Позовите программиста"©
2 commoc
 
29.01.14
11:24
надо средствами скл. база большая
3 sapphire
 
29.01.14
11:25
(2) truncate table
4 sapphire
 
29.01.14
11:26
(0) А если история периодических реквизитов установлена документом?
5 temsa
 
29.01.14
11:27
(0) Если не знаешь как средствами скуля лучше перенеси справочники в пустую базу.

ЗЫ не забудь перенести периодику самую нужную!
6 commoc
 
29.01.14
11:28
(4) готов рискнуть и сделать потом Тестирование и Исправление
7 commoc
 
29.01.14
11:28
(5) этот вариант также в работе
8 пипец
 
29.01.14
11:29
подропать таблицы dt dh ra rg 1sdoc и прочее
9 Mikeware
 
29.01.14
11:29
(3) drop database
10 commoc
 
29.01.14
11:29
(3) а нет примера? чтоб сразу по всем таблицам регистров?
11 temsa
 
29.01.14
11:29
(7) Погугли хорошенько есть готовый скрип который чистит в скул-базе.
12 toypaul
 
гуру
29.01.14
11:30
да просто грохнуть все таблицы кроме sc и _1sconst

правда партии и периодика по ценам будет не совсем корректна. но и это можно поправить.

недавно кстати делал тоже самое
13 Mikeware
 
29.01.14
11:30
(11) настаящие пацаны не гуглят!
14 temsa
 
29.01.14
11:31
Я такое проделывал раза два но давно. А искать у себя долгое занятие. Легче найти в инете чем у себя за 13 лет данных.
15 commoc
 
29.01.14
11:31
(11) нашел на инфостарте. но там за местные деньги. а надо срочно
16 toypaul
 
гуру
29.01.14
11:31
+ к (12) некоторые системные таблички еще может понадобяться
17 sapphire
 
29.01.14
11:31
(8) ЗАЧЕМ?!
18 Mikeware
 
29.01.14
11:31
(15)ну так сделай...
19 МихаилМ
 
29.01.14
11:32
(15)
купите стартмани.
на инфостарте есть биржа по торговле старт мани.
20 sapphire
 
29.01.14
11:34
я фигею... там писанины 5 строк на t-SQL
21 Ёпрст
 
29.01.14
11:35
declare @name nvarchar(128), @Rows int

declare Names cursor static for

select
    table_name
from
    INFORMATION_SCHEMA.TABLES
where
    table_catalog = DB_NAME()
    and left(table_name, 2) In ('DH', 'DT', 'RA', 'RG','_1')
    and table_name != 'dtproperties'
    and table_name != '_1SSYSTEM'
    and table_name != '_1SCONST'
    and table_name != '_1SACCSEL'
    and table_name != '_1SDBSET'
    and table_name != '_1SUSERS'

open Names
SET @Rows = @@Cursor_Rows

WHILE @Rows > 0
begin
     FETCH Names Into @name
    SET @Rows = @Rows - 1

    declare @qt nvarchar(128)
   set @qt = N'truncate table +'+@name
    exec sp_executesql @qt
end

close Names
deallocate Names
22 Ёпрст
 
29.01.14
11:36
+21
©@ADirks
23 МихаилМ
 
29.01.14
11:41
(2)
зачем 1SCONST удалять ?
24 sapphire
 
29.01.14
11:42
sp_msforeachtable 'IF (''?'' NOT LIKE ''%SC%'' OR ''?''!=''_1SCONST'') TRUNCATE TABLE ?'
25 sapphire
 
29.01.14
11:43
(21) ога, запамятовал, что и эти исчо есть :)
26 Ёпрст
 
29.01.14
11:44
(23) это вопрос к (21) ?
Если да, то _1sconst там не удаляется
27 Ёпрст
 
29.01.14
11:45
надо бы еще _1SACCS воткнуть в (21).. чтоб тоже не очищалась.
28 пипец
 
29.01.14
11:47
(17) - чо зачем ? зачем удалять то что нужно удалить ? хмм странный вопрос , ну сохрани (скопируй в бд) нужные ... если так больше нравится
29 sapphire
 
29.01.14
11:58
(28) зачем дропать, когда транкейт лучше?
30 commoc
 
29.01.14
12:32
огромное спасибо всем!
31 beholder
 
30.01.14
13:02
(21) для задачи в (0) вот это лишнее

   and table_name != 'dtproperties'
    and table_name != '_1SSYSTEM'
    and table_name != '_1SCONST'
    and table_name != '_1SACCSEL'
    and table_name != '_1SDBSET'
    and table_name != '_1SUSERS'

а надо добавить _1SJournal _1CRCDOC не уверен что парвильно пишу эти названия, но первое это журнал документов а второе - подчиненность документов.
32 Ёпрст
 
30.01.14
13:35
(31) еще подумай.
33 Ёпрст
 
30.01.14
13:36
+32 если чо, "!="  равно "<>"
34 Злой Бобр
 
30.01.14
14:20
(0) Собственно скульная база тем и хороша что ненужно заморачиваться резкой базы. А так алгоритм тот же что и в дбф. Сначала записываем историю справочников, потом вносим остатки на нужное число, потом удаляем документы за выбранный период.
35 beholder
 
30.01.14
15:08
(33) посыпаю голову пеплом. Невнимательность блин.

Еще один момент из практики, если нужно все таки какие-то документы оставить и их количество ничтожно по сравнению с удаляемым. То быстрее гораздо не удалять по условию а перенести нужные в новые таблицы, удалить все в старых а потом переименовать новые таблицы в старые.
36 Ёпрст
 
30.01.14
15:13
(35) не совсем так, нужно оставить всё как есть + условие на табличку шапки и тч нужных доков + оставлять 1sjourn и 1scrdoc
+ выкашивать в двух последних всё, что не относится к нужным докам..с 1sconst аналогично - выкашивать периодику не нужную.