Имя: Пароль:
1C
1С v8
Непосредственное удаление объектов
,
0 kible
 
15.02.18
07:20
Поделитесь пожалуйста обработкой непосредственного удаления объектов.
Все облазил, не могу найти.
1 kible
 
15.02.18
07:23
(0)+ kible(собака)mail.ru
2 Chameleon1980
 
15.02.18
07:24
Удалить(параметр смотрим да?)
3 kible
 
15.02.18
07:28
(2) Смотрим. Объектов много. Справочники, документы разные.
4 Мимохожий Однако
 
15.02.18
07:43
Базу пожалей, не делай так.
5 shadow_sw
 
15.02.18
07:47
(3) метаданные в помощь
6 Bigbro
 
15.02.18
07:52
универсальный подбор и обработка объектов.
отличный инструмент
7 kible
 
15.02.18
07:53
(6) там каждый объект выбирать нужно
8 Bigbro
 
15.02.18
08:02
так если "объектов много" то и нужно выбирать объекты.
а если много классов - видов документов, видов справочников и т.п., которые нужно удалять полностью, без отбора то через метаданные.
9 nordbox
 
15.02.18
08:04
(7) Хочешь плохому научу? ))
10 echo77
 
15.02.18
08:04
(0) Может проще пустую базу создать и нужные объекты просто перенести из исходной?
11 nordbox
 
15.02.18
08:11
(7) Учу плохому )))
В конфе, например у Справочника(ов) в ФормеСписка ставишь РежимВыделения множественное, а в правах у Роли на Справочники ставишь галочку Интерактивное удаление и развлекайся )))
и действительно, базу то пожалей, возврата назад не будет кроме как из резервной копии.
Народ ногами меня не пинайте, он сам напросился ))
12 catena
 
15.02.18
08:13
(11)Он в обработке ленится тип выбрать, а ты ему предлагаешь весь список выбирать.
13 Рэйв
 
15.02.18
08:18
(0)Ну, если ты так хочешь.
Кто не спрятался, я не виноват.
Результаты использования кода- на твоей совести.

//--
    Запрос=Новый Запрос;
    
    Менеджеры = Новый СписокЗначений;
    Менеджеры.Добавить("Документы","Документ");
    Менеджеры.Добавить("Справочники","Справочник");
    Менеджеры.Добавить("ПланыВидовХарактеристик","ПланВидовХарактеристик");
    Менеджеры.Добавить("ПланыСчетов","ПланСчетов");
    Менеджеры.Добавить("ПланыВидовРасчета","ПланВидовРасчета");
    Менеджеры.Добавить("ПланыОбмена","ПланОбмена");
    Менеджеры.Добавить("БизнесПроцессы","БизнесПроцесс");
    Менеджеры.Добавить("Задачи","Задача");
    Для каждого Элемент из Менеджеры Цикл
        ВЗапрос=Элемент.Представление;
        
        Тип=Метаданные[Элемент.Значение];
        
        Для каждого Вид из Тип Цикл
            Имя=Вид.Имя;
            Запрос.Текст="Выбрать Нечто.Ссылка Из "+ВЗапрос+"."+Имя+" КАК Нечто";
            Выборка=Запрос.Выполнить().Выбрать();
            Пока Выборка.Следующий() Цикл
                Об=Выборка.Ссылка.ПолучитьОбъект();
                Об.Удалить();
            КонецЦикла;    
        КонецЦикла;    
    КонецЦикла;
14 Рэйв
 
15.02.18
08:19
И рекомендую сделать копию перед использованием кода. а то малоли...Вдруг ты потом передумаешь:-)
15 nordbox
 
15.02.18
08:22
(0) Ты не забывай, что если в спр Номенклатуры грохнишь
хоть один элемент, у тебя база сразу поедет, у Ном есть подчиненные, Единицы измерения, ШК, Свойства, характеристики если используешь хранилища и там тоже, короче много чего поедет, я про доки уже молчу
У контриков тоже самое там и КИ потянется и Банки и ответственные и т.д.
16 nordbox
 
15.02.18
08:25
+15 у тебя база станет хуже чем мусорка  на вокзале
17 kible
 
15.02.18
08:28
(13) Спасибо.

Обработку буду запускать на копии.
18 kible
 
15.02.18
08:29
Задача удалить все документы до 2017 года.
19 Рэйв
 
15.02.18
08:30
(18)Ну, тогда немного допилишь (13), удалишь лишние менеджеры и пойдет. Только не забудь прикрутить удаление движений у доком перед удалением, а то некрасиво получится с регистрами.
20 nordbox
 
15.02.18
08:31
Ох ты какой мудрый))) ты не первый,
а остатки, а партии если есть, а цены, а незакрытые заказы и т.д. дофига чего ))
21 catena
 
15.02.18
08:31
А потом окажется, что нужна была свертка...
22 nordbox
 
15.02.18
08:31
(20) это к (18)
23 kible
 
15.02.18
08:32
Я объяснил заказчику как все будет он согласен.
24 nordbox
 
15.02.18
08:34
(23) (х)Фигово объяснял, потому что заказчик структуру не знает, и последствия тоже не понимает
25 Рэйв
 
15.02.18
08:36
(24)Никогда не надо спорить с заказчиком, упертом в своем желании заиметь себе геморой. За его деньги ты ему его предоставишь.А оптом за его же деньги будешь избавлять.Сплошной профит и уважуха:-)
26 catena
 
15.02.18
08:37
Интересно еще, как будут справочники по 2017 года удаляться...
27 kible
 
15.02.18
08:38
(24) Хорошо я объяснил. база не будет использоваться для работы. Я так понял учет бух учет будут проверять.
28 lodger
 
15.02.18
08:40
(26) можно попытаться из гуида разгадать примерные даты создания.
29 Мимохожий Однако
 
15.02.18
08:42
Возьми архивную копию до нужного периода и всё.
30 kible
 
15.02.18
08:44
(29) Нужно только 2017-2018 года.
31 один я дАртаньян
 
15.02.18
08:46
(0) (13) Если много, то лучше отключать расчет регистров.

РегистрыСведений[РегистрИмя].УстановитьИспользованиеИтогов(РасчитыватьИтоги);
32 один я дАртаньян
 
15.02.18
08:47
(0)  Конфа какая?
33 kible
 
15.02.18
08:48
(32) УТП
34 Serg_1960
 
15.02.18
08:51
Грохнуть документы до определенной даты - не проблема. Сложнее - удалить их движения. И совсем скучно - удалять не используемые записи справочников.
35 один я дАртаньян
 
15.02.18
08:51
(33) По укране ХЗ, но может там есть типовая свертка.

Тупо сверни базу. А если останутся партии, так можно ТЧ у поступлений товаров почистить, и номера входящих накладных и входящиз счетов-фактур(если они у вас есть).

В том, что останется никакая проверка не разберется.
36 один я дАртаньян
 
15.02.18
08:53
(33) А если надо базу за текущий приод предоставить.

Можно взять вгрузкуЗагрузкуХМЛ у документов поставить отбор, и алочки выгружать при необходимости снять.
37 Мимохожий Однако
 
15.02.18
08:53
Достаточно Универсальной обработкой перенести документы в пустую базу и не проводить до удаления. Всё равно будет фигня.
38 Рэйв
 
15.02.18
08:55
(34)>>Сложнее - удалить их движения
Чего там сложного то?

Перед удалением сделать

//--
Для Каждого Дв Из Об.Движения Цикл
     Дв.Прочитать();
     Дв.Очистить();
КонеЦикла;
Об.Записать();
39 kible
 
15.02.18
08:56
Я сначала свернул базу. Теперь удаляю документы.
40 один я дАртаньян
 
15.02.18
08:57
(39) &НаСервере
Процедура Команда1НаСервере()
    ЗаросОрг = Новый Запрос;    
    ЗаросОрг.Текст = "ВЫБРАТЬ
    |    Организации.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.Организации КАК Организации
    |ГДЕ
    |    Организации.ПометкаУдаления";
    
    тзОрг = ЗаросОрг.Выполнить().Выгрузить();
    спОрганизаций = Новый СписокЗначений;
    
    спОрганизаций = тзОрг.ВыгрузитьКолонку("Ссылка");
    
    МассивСсылк = Новый массив;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("спОрганизаций",спОрганизаций);
    ЗапросТекст = "ВЫБРАТЬ
    |    АвансовыйОтчет.Ссылка
    |ИЗ
    |    Документ.АвансовыйОтчет КАК АвансовыйОтчет
    |ГДЕ
    |    АвансовыйОтчет.Организация В(&спОрганизаций)";
    
    НПП = 0;
    КолВо = Метаданные.Документы.Количество();
    Для Каждого ТекДок из Метаданные.Документы Цикл
        НПП = НПП + 1;
        
        
        Сообщить("Обработано: "+НПП + " из " +КолВо +" "+СокрЛП(Строка(ТЕкДок.Имя)));
        
        
        ХХХ =  ТЕкДок.РЕквизиты.Найти("организация");
        Если  ХХХ <> Неопределено  ТОгда
            Запрос.Текст = СтрЗаменить(ЗапросТекст,"Документ.АвансовыйОтчет КАК АвансовыйОтчет","Документ."+СокрЛП(Строка(ТЕкДок.Имя))+" КАК АвансовыйОтчет");
            МассивСсылк.Очистить();
            тз = Запрос.Выполнить().Выгрузить();
            Для каждого стрТз из тз Цикл
                МассивСсылк.Добавить( стрТз.Ссылка);
            КонецЦикла;
            Сообщить("Колво ссылок:"+тз.Количество());
            УдалитьОбъекты(МассивСсылк,Ложь)
        КонецЕсли;
    КонецЦИкла;
    
    
    
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
    Команда1НаСервере();
КонецПроцедуры
41 Рэйв
 
15.02.18
08:57
(39)Есть универсальная обработка по свертке базы. Там на уровне скуля можно удалить все выбранные документы  за период
42 один я дАртаньян
 
15.02.18
08:58
(39) Но лучше не удалять документы. Можно попробовать обработкой поиск и замена дублирующих.
43 Serg_1960
 
15.02.18
08:59
(37) +1 с поправкой: Если уж переносить, но переносить документы после даты удаления. Ну и, разумеется, все ссылочные объекты, упомянутые в них.

(38) Между прочим, я сказал не уточняя проблему. Специально для Вас: "сложнее по времени". Так Ок? :)
44 Рэйв
 
15.02.18
09:00
(43)Ладно, так пойдет:-)
45 Serg_1960
 
15.02.18
09:00
(39) RLS им напиши чтобы не видели документы до даты свёртки :)
46 kible
 
15.02.18
09:05
(45) база должна быть готовая вчера)) А с РЛС я не дружу.