|
Получится так удалить организацию из базы? | ☑ | ||
---|---|---|---|---|
0
SweetaAngel
01.04.17
✎
10:33
|
Надо удалить несколько организаций из базы.
Допустим будет код МассивСсылк = Новый массив; МассивСсылк.Добавить(Справочники.Организации.НайтиПоКоду("000000001")); МассивСсылк.Добавить(Справочники.Организации.НайтиПоКоду("000000001")); УдалитьОбъекты(МассивСсылк,Ложь); А дальше тестирование с галочками очищать ссылки, удалть объекты. Получтся? Или может еще какой варинат? |
|||
1
RomanYS
01.04.17
✎
10:36
|
Что-то определенно получится. Каша в журналах получится. А формально организации будут удалены.
|
|||
2
SweetaAngel
01.04.17
✎
10:37
|
(1) А документы в которых будет ошибочный объект?
|
|||
3
RomanYS
01.04.17
✎
10:42
|
(2) в них ТИИ заменит битую ссылку на пустую. Документы останутся, вместе с проводками.
|
|||
4
SweetaAngel
01.04.17
✎
10:47
|
(3) А что насчет движений в регистрах. Они то проавдут?
|
|||
5
RomanYS
01.04.17
✎
10:50
|
Держи
https://cloud.mail.ru/public/L87s/GYV7KEpUu только рассматривай это как пример кода, а не как рабочий инструмент. Писалось для КА1.1, но в целом там универсально. (4) Движения регистров я и называю проводками. |
|||
6
SweetaAngel
01.04.17
✎
17:59
|
(5)
Так и я умею: Процедура КнопкаСформироватьНажатие(Кнопка) // Вставить содержимое обработчика. МассивСсылк = Новый массив; спОрганизаций = Новый СписокЗначений; спОрганизаций.Добавить(Справочники.Организации.НайтиПоКоду("000000002")); спОрганизаций.Добавить(Справочники.Организации.НайтиПоКоду("000000004")); Запрос = Новый Запрос; Запрос.УстановитьПараметр("спОрганизаций",спОрганизаций); ЗапросТекст = "ВЫБРАТЬ | АвансовыйОтчет.Ссылка |ИЗ | Документ.АвансовыйОтчет КАК АвансовыйОтчет |ГДЕ | АвансовыйОтчет.Организация В(&спОрганизаций)"; НПП = 0; КолВо = Метаданные.Документы.Количество(); Для Каждого ТекДок из Метаданные.Документы Цикл НПП = НПП + 1; Сообщить("Обработано: "+НПП + " из " +КолВо +" "+СокрЛП(Строка(ТЕкДок.Имя))); ХХХ = ТЕкДок.РЕквизиты.Найти("организация"); Если ХХХ <> Неопределено ТОгда Запрос.Текст = СтрЗаменить(ЗапросТекст,"Документ.АвансовыйОтчет КАК АвансовыйОтчет","Документ."+СокрЛП(Строка(ТЕкДок.Имя))+" КАК АвансовыйОтчет"); МассивСсылк.Очистить(); тз = Запрос.Выполнить().Выгрузить(); Для каждого стрТз из тз Цикл МассивСсылк.Добавить( стрТз.Ссылка); КонецЦикла; Сообщить("Колво ссылок:"+МассивСсылк.Количество()); УдалитьОбъекты(МассивСсылк,Ложь) КонецЕсли; КонецЦИкла; Но есть документы в которых 26 000 записей и при удалении выходит ошибка: "не хватате памяти". |
|||
7
Фрэнки
01.04.17
✎
18:01
|
(6) лучше бы там писалось "не хватает мозгов"
|
|||
8
Serg_1960
01.04.17
✎
18:03
|
Ветка Первого апреля? Зачёт.
|
|||
9
RomanYS
01.04.17
✎
18:25
|
(6) ну попробуй удалить 25999 записей, может хватит.
Для ускорения надо ещё выключать итоги, очистка движений может идти на порядок быстрее. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |