Имя: Пароль:
1C
1C 7.7
v7: Удалить документы базы 1С
0 box
 
05.12.17
14:41
Необходимо физически удалить все документы кроме документа "Договор" в базе (dbf) 1С 7.7 Бухучет. Обработка архивирование не подходит, т.к. процедура занимает длительное время. Создал bat файл для удаления:

Pause

del New_Stru

del Syslog
del *.cdx
del *.lst
del 1cv7srct.st
del dt*.*
del dh*.*
del 1sjourn.dbf
del 1scrdoc.dbf
del 1sdnlock.dbf
del 1sstream.dbf
del rg*.*
del ra*.*
del 1SOPER.dbf
del 1SENTRY.dbf
del 1SBKTTLC.dbf
del 1SBKTTL.dbf
del 1SACCSEL.dbf
del 1SSBSEL.dbf
del 1supdts.dbf
del 1sdwnlds.dbf
del 1sdbset.dbf

Документы Договор находится в файле DH332.dbf

Вопрос каким образом можно оставить только эти документы?
1 Ёпрст
 
05.12.17
14:43
del 1sjourn.dbf

зачет, ага
2 Злопчинский
 
05.12.17
14:43
В упомянутой вами конфигурации - а её относимые к типовой бух 77 - документа Договор - нет
Поэтому что там у вас в вашем самопальном документе и как он связан с другими документами - знает только Яхве
3 nordbox
 
05.12.17
14:44
Проще оставить один MD грохнуть все, пересоздать структуру, посмотреть DD файл и подсунуть ему файл договорами, вот только вопрос по справочникам которые в нем участвую ....
думай
4 nordbox
 
05.12.17
14:45
(1) не расстраивай человека )
5 Масянька
 
05.12.17
14:50
(0) Вроде не первый раз замужем... А такие вещи спрашиваешь...
Открой файл dd, найди свой док-т, посмотри, подумай...
И, кстати, как минимум - на боевой БД делать :)
6 box
 
05.12.17
15:03
(5) файл DH332.dbf с документами Договор. Подставляю его. Файл 1sjourn.dbf также подставил. В общем журнале все документы остались. Тестирование и исправление. Посмотрю, что выйдет с этого)
7 Ёпрст
 
05.12.17
15:05
(6) ничего хорошего.
8 box
 
05.12.17
15:07
(7) какое другое решение?
9 Злопчинский
 
05.12.17
15:09
(8) если тч нет то просто
10 Ёпрст
 
05.12.17
15:29
(8)
для начала, так, хотя бы:

//*******************************************
Процедура Сформировать()
    
        Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Exclusive=Yes;Mode=ReadWrite;Collating Sequence=MACHINE";
        ДБ = СоздатьОбъект("OLEDBData");
        Рез = ДБ.Соединение(Соединение);
        Запрос = ДБ.СоздатьКоманду();
        Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')");  
        Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')");    
        Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')");
        Запрос = ДБ.СоздатьКоманду();
        
        ВидДокумента="Договор";//ну или какое там у тя имя ?
        
        ТекстЗапроса ="
        |delete
        |from
        |1sjourn
        |where
        |     iddocdef+dtos(date)+time+iddoc like $ВидДокумента."+ВидДокумента+"+'_______________________'
        |";
        Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
    Для к =1 По Метаданные.Документ() Цикл
        мета = Метаданные.Документ(к).Идентификатор;
        Если мета = ВидДокумента Тогда
            Продолжить;
        КонецЕсли;
        Состояние("Шапка "+мета);
        ТекстЗапроса ="
        |DELETE
        |FROM
        |   $Документ."+мета+"
        |";
        Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
        
        Состояние("Строки "+мета);
        ТекстЗапроса ="
        |DELETE
        |FROM
        |   $ДокументСтроки."+мета+"
        |";
        Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
    КонецЦикла;

    Состояние("ссылки 1SCRDOC");
    ТекстЗапроса ="
    |DELETE
    |FROM
    |   1SCRDOC
    |WHERE CHILDID NOT IN(SELECT Жур.iddoc FROM 1sjourn as Жур)";
    Запрос.ВыполнитьИнструкцию(ТекстЗапроса);

    Состояние("периодика  1SCONST");
    ТекстЗапроса ="
    |DELETE
    |FROM
    |   1SCONST
    |WHERE DOCID<>'     0   ' and DOCID NOT IN(SELECT Жур.iddoc FROM 1sjourn as Жур)";
    Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
    
    Состояние("проводки 1SENTRY");
    ТекстЗапроса ="
    |DELETE
    |FROM
    |   1SENTRY
    |WHERE (DOCID NOT IN(SELECT Жур.iddoc FROM 1sjourn as Жур))";
    Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
    
    Состояние("операции 1SOPER");
    ТекстЗапроса ="
    |DELETE
    |FROM
    |   1SOPER
    |WHERE DOCID NOT IN(SELECT Жур.iddoc FROM 1sjourn as Жур)";
    Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
КонецПроцедуры
11 Ёпрст
 
05.12.17
15:32
после этого сжать все таблички и удалить все *.cdx, зайти монопольно, наслаждаться
12 Franchiser
 
гуру
06.12.17
01:12
(10) Зачетно
13 Злопчинский
 
06.12.17
02:13
пойду застрелюсь
14 craxx
 
06.12.17
04:58
(0) Эпично.
15 Зуекщмшср
 
06.12.17
07:06
Всю жизнь создавали пустую конфу из md и перекидывали данные с помощью обработки переноса между идентичными конфигурациями. Всяко проще, чем лазить по dd и отслеживать иерархию взаимосвязанных справочников и перечислений.
16 Pahomich
 
06.12.17
07:14
(15) "Нормальные герои всегда идут в обход..."
17 0xFFFFFF
 
06.12.17
07:39
(0) Прикольно. Кардинально. Профессионально.

:))))
Не церемонясь.
Слушай сюда (15)

И еще вопрос - а нафига?
18 Ёпрст
 
06.12.17
09:43
и это, в (10) not like, если че :)
19 Franchiser
 
гуру
06.12.17
09:46
(0) если бы задача была удалить Все документы, оставив только справочники, удаление  файлов нормальный вариант, сам так раньше делал, ну а если оставить 1 документ, то не совсем то.