Имя: Пароль:
1C
1C 7.7
v7: Скрипт для удаления таблиц регистров в скуле
,
0 Злопчинский
 
18.10.14
17:06
Поможет кто?
Нужен скульный скрипт для очистки скульной 7.7базы
в одном варианте
1. удаление самих таблиц регистров (RG и RA)
во втором варианте
2. удаление записей в таблицах регистров
.
сам - ламер. может бытьи осилил бы, но перебрать таблицы регистров - уже все...
Спсб.
писать можно сюда.
1 МихаилМ
 
18.10.14
17:12
2 Злопчинский
 
18.10.14
17:24
(1) я ламер в скуле для меня - разобрать немного написанного - еще осилю.
но сидеть сейчас огромную кучу изучатть - пок ане могу.. ;-)
3 romix
 
18.10.14
17:39
Насчет очистки RG - пересчет итогов не предлагать?
4 romix
 
18.10.14
17:40
Можно убить сами метаданные, а потом их вернуть.
5 mehfk
 
18.10.14
17:51
>> 2. удаление записей в таблицах регистров

Удалить некоторые записи или полностью очистить конкретные таблицы?
6 ProxyInspector
 
18.10.14
17:54
У меня есть для 1С++ Пометка на удаление документов. Очистка движений по этим документам. Раз в 100 ускоряет свертку базы.
  Если немного допилишь, то можешь удалять записи своих регистров.
7 КонецЦикла
 
18.10.14
21:08
Вот же ленивая зараза...  :)
Перебор через метаданные, затем получение id, добавляешь RG, RA и проч. и все
8 Classic
 
18.10.14
22:02
подзабыл 7ку. Разве в dds-е имент таблиц нет? Дальше обычный drop table. Или как-то так. Гугл за минуту текст удаления таблицы даст.
9 Classic
 
18.10.14
22:05
(4) имхоется мне, что не прокатит. Разве что потом руцями добавить регистры, а не через объединение.
10 Sorm
 
18.10.14
22:13
(0) Удаление таблицы
Drop table Имя_таблицы
Удаление строк
Delete from Имя таблицы.
Какие там у тебя регистры - сам смотри.
11 Злопчинский
 
19.10.14
09:15
По сути, в скуле надо сделать "очистку" базы - оставив только справочник - то есть убить все доки. на дбфе - это понятно как. а на скуле - слаб я ( ну не было у меня скуля, не было!! а там когда было - не было надобности что-то существенно ускорять/колбасить, а сейчас приходится разгребать гуаны доставшиеся в нгаследство у клиента одного. вдобавок утяжелено все урбд, неснастроенными толклм миграциями (в справочнике пользователй и полномочий - толпень дикая дублей, только с разными местами создания) - вот потихоньку разгребаю...
12 Злопчинский
 
19.10.14
09:15
Спасибо всем кто помогает, невзирая на мою злопчинкость.
13 vcv
 
19.10.14
19:15
Можно что-то примерно такое (для очистки всех таблиц документов):

DECLARE @TableName char(32)
DECLARE @query nchar(1000)
DECLARE TablesList CURSOR FOR SELECT name FROM sysobjects WHERE type='U' and (name like 'DH%' or name like 'DT%')
OPEN TablesList
FETCH NEXT FROM TablesList INTO @TableName WHILE @@FETCH_STATUS=0 BEGIN
  set @query = 'DELETE FROM '+@TableName
  exec sp_executesql @query OUTPUT
  FETCH NEXT FROM TablesList INTO @TableName
END
CLOSE TablesList
DEALLOCATE TablesList
14 пипец
 
19.10.14
19:29
15 France
 
19.10.14
20:52
1. Выгрузить в дбф, удалить привычным способом, вернуть все взад на скл
2. Удалить из конфигуратор и затем вернуть
3. Использовать выгрузказагрузкахмл
16 Злопчинский
 
20.10.14
19:42
(15)
1. долго
2. долго и просто так не удалишь - то в графах отболров то еще где..
3. вычеркиваем сразу. это тааакой тормоз этот иксемель, что только под страхом пытки..
17 Вяйнемейнен
 
20.10.14
20:16
USE Base_Name;
Declare @CurrentTable nVarChar(128)
Declare @StrSQL VarChar(2000)
Declare ListTables Cursor
For Select
    Table_Name = Table_Name
From INFORMATION_SCHEMA.TABLES
Where (Table_Name like 'RA%') OR (Table_Name like 'RG%')
Order by 1
Open ListTables
Fetch ListTables Into @CurrentTable
    While @@Fetch_Status = 0
    Begin
/* Удаление таблиц */
        Set @StrSQL = 'DROP TABLE dbo.' + @CurrentTable
        Exec (@StrSQL)
/* Удаление строк */
        Set @StrSQL = 'DELETE FROM dbo.' + @CurrentTable
        Exec (@StrSQL)
        Fetch ListTables Into @CurrentTable
    End
Close ListTables
Deallocate ListTables
18 vcv
 
20.10.14
20:34
(17) Гламурненько. Сначала дропаем таблицу, потом удаляем из неё строки. Эдакое контрольное изнасилование в голову :)
19 Злопчинский
 
20.10.14
21:08
меня во всех этих скриптах здесь опубликованных смущает - вследствие моего неведения или поверхностного осмотра - а как определяется что RA удаляется из нужной скульной базы - ведь там может буть туева хуча скульных баз - и удалять нужно только в конкретной - одной конкретной, например со сульным именем МyBase
???
20 КонецЦикла
 
20.10.14
21:37
Пиши на почту - сделаю тебе удобную обработку :)
Ничего не наскребешь ты тут готового
А токмо загадят злорадствуя базы тебе пакостники...
21 vcv
 
20.10.14
21:50
(19) Ну воткни первой строчкой
Use MyBase
А вообще то, традиционно, любое средство, через которое будешь исполнять SQL-запрос, имеет понятие текущей базы.
22 France
 
20.10.14
22:13
(16) 1. согласен, если база на 77 "ойкакаябольшая".
2.возможно...
3. 5-7 гиг базы за минут 10-15 переносятся.. которые на 8.2 вообще, и БП 2.0 в частности... про 77 не скажу, не пробовал.. ссд диск и 8 гиг памяти с кореВай5 тебе в помощь..
23 Злопчинский
 
20.10.14
23:52
перенос через иксемель, который из тиса штатно грузил проводки/документы в бухию 7.7 файл обмена размером в раЙОНЕ 16-25 мег - загрузку в бухиб приходилось ожидать часами. с тех пор я люто ненавижу всякие универсальные обмены, особенно по иксемеле.
24 Злопчинский
 
20.10.14
23:54
(20) я подумаю.. ;-) в принципе я-то справляюсь и в студии ручками по удалению регистров, а доки в 1с уже штатно проходят ощутимо быстрее.. так что это не очень сильно жмет.. ноя подумаю.. ;-)
25 Злопчинский
 
20.10.14
23:55
(21) традиционно - в 1с всегда была фирма по умолчанию или склад по умолчанию для текущего юзверя. ну и где они в этих клятущих УТ11-ых? ;-) поэтому умолчания - это конечно хорошо, но лучше держать на контроле
26 Вяйнемейнен
 
21.10.14
02:35
(18) автор просил скрипт либо удаления строк, либо всей таблицы - сам закомментирует лишнее.

Если нужно очистить базу, оставив только справочники, то вот примерный скрипт (для баз с бухгалтерией и оперативным учетом, для компоненты расчет нужно еще добавить удаление таблиц журналов расчетов)

USE Base_Name;
Declare @CurrentTable nVarChar(128)
Declare @StrSQL VarChar(2000)
Declare ListTables Cursor
For Select
    Table_Name = Table_Name
From INFORMATION_SCHEMA.TABLES
Where
    (
        (Table_Name = '_1SENTRY')
        OR (Table_Name = '_1SOPER')
        OR (Table_Name = '_1SJOURN')
        OR (Table_Name = '_1SACCSEL')
        OR (Table_Name = '_1SSBSEL')
        OR (Table_Name = '_1SBKTTL')
        OR (Table_Name = '_1SBKTTLC')
        OR (Table_Name = '_1SCRDOC')
        OR (Table_Name = '_1SUPDTS')
        OR (Table_Name LIKE 'DH%')
        OR (Table_Name LIKE 'DT%')
        OR (Table_Name LIKE 'RA%')
        OR (Table_Name LIKE 'RG%')
    )
Order by 1
Open ListTables
Fetch ListTables Into @CurrentTable
    While @@Fetch_Status = 0
    Begin
        Print @CurrentTable
        /* удаление строк */
        Set @StrSQL = 'DELETE FROM dbo.' + @CurrentTable
        /* либо удаление таблицы
        Set @StrSQL = 'DROP TABLE dbo.' + @CurrentTable
         */
        Exec (@StrSQL)
        Fetch ListTables Into @CurrentTable
    End
Close ListTables
Deallocate ListTables

/* удаление констант и периодических реквизитов, установленных документами*/
Set @StrSQL = 'DELETE FROM dbo._1SCONST WHERE (NOT DOCID = ''     0   '') AND (NOT ACTNO = 0)';
Exec (@StrSQL);
27 France
 
21.10.14
02:45
(25) а, нэту.. Все через соглашения
28 Злопчинский
 
21.10.14
03:10
(26) "папа, это ты сечас с кем разговаривал?" ;-)
.
спасибо, буду втыкать..
.
где почитать про общее понимание про
INFORMATION_SCHEMA.TABLES
dbo.' + @CurrentTable
.
так-то я как собака понимаю .. вроде.. но говорить не могу... ;-)
29 Escander
 
21.10.14
04:05
(28) не боишься, что будет потеряна логическая целостность?

и ещё, я-бы смотре не в сторону Delete  а Truncate. На покури https://ru.wikipedia.org/wiki/Truncate_(SQL)
30 Escander
 
21.10.14
04:07
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн