Имя: Пароль:
1C
1С v8
Удаление помечанных документов и Ошибка использования Менеджера блокировок
0 Lepochkin
 
26.07.12
09:48
Удаляю помеченные на удаления документы реализации (Конфигурация УТ перепиленная сильно). Вылетает ошибка "Ошибка при вызове метода контекста (Удалить): Ошибка использования Менеджера блокировок
Автоматический режим блокировки недопустим в этой транзакции." Я понимаю что нужно еще 2 регистра перевести на режим управляемых блокировок и все залетает. Только вот беда. Людей из базы до выходных не выгнать. Да и записи в эти регистры мне нафиг не нужны. Плюс удаление отрабатывает дольше. Вопрос. Как удалить записи напрямую без отрабатывания процедур, которые срабатывают при удалении. База скульная.
1 gosn1ck
 
26.07.12
09:51
документы пометить на удаление для начала
2 Lepochkin
 
26.07.12
09:52
Уже помечаны
3 gosn1ck
 
26.07.12
09:53
тогда я не понял откуда записи в регистрах
4 0_Serg_0
 
26.07.12
09:54
(0) прям в скуле из таблиц запросами удаляй = раз так трепетно к юзерам относишься))
5 Рэйв
 
26.07.12
09:55
например

//--
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Удалить (Delete)
Синтаксис:
Удалить()
Описание:
Удаляет документ из базы данных.
Важно! В отличие от метода УстановитьПометкуУдаления(), данный производит непосредственное удаление документа без возможности восстановления и без проверки ссылочной целостности. Использовать данный метод нужно крайне осмотрительно.
Пример:
ТекстВопроса = "Удалить документ без возможности восстановления";
Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
   РасходнаяНакладная.Удалить();
КонецЕсли;
6 Рэйв
 
26.07.12
09:55
+только за последствия я не отвечаю
7 Lepochkin
 
26.07.12
09:56
Там не типовой регистр был сделан еще моим предшественником в котором просто фиксируется что документ с таким-то номером тогда-то удалялся.
8 Lepochkin
 
26.07.12
09:57
(5) так и делаю. а вылетает.
   Запрос = Новый Запрос;
   ТекстЗапроса = "";
   Для Каждого Объект ИЗ Метаданные.Документы Цикл
       Имя = Объект.Имя;
       Если ТекстЗапроса <> "" Тогда
           ТекстЗапроса = ТекстЗапроса+Символы.ПС+"ОБЪЕДИНИТЬ ВСЕ"+Символы.ПС;
       КонецЕсли;    
       ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ "+Имя+".Ссылка КАК ДокументСсылка ИЗ Документ."+Имя+" КАК "+Имя+"
       |ГДЕ "+Имя+".Дата >= &НачПериода
       |И "+Имя+".Дата <= &КонПериода
       |И "+Имя+".ПометкаУдаления";
   КонецЦикла;    
   Запрос.Текст = ТекстЗапроса;
   Запрос.УстановитьПараметр("НачПериода",НачалоДня(НачПериода));
   Запрос.УстановитьПараметр("КонПериода",КонецДня(КонПериода));
   Результат = Запрос.Выполнить();
   Выборка=Результат.Выбрать();
   
   ид=0;
   Пока Выборка.Следующий() Цикл
       Ссылка = Выборка.ДокументСсылка;
       Объект=Ссылка.ПолучитьОбъект();
       Состояние("Удален объект: "+строка(Объект));
       Объект.Удалить();
   КонецЦикла;
9 Рэйв
 
26.07.12
09:58
(8)Тогда сначала отмени проведение всех доков предварительно.Чтобы они не имели движений и не лезли по ссылкам в регистры
10 Рэйв
 
26.07.12
09:59
+ хотя и не должны вроде лезть, но малоли...
11 Lepochkin
 
26.07.12
10:02
Я уже удалил все движения из всех регистров, по помеченным на удаления документам, за интересующий меня период.
12 Lepochkin
 
26.07.12
10:22
Есть примерчик как из скуля удалить помеченные документы?
13 0_Serg_0
 
26.07.12
10:25
(12)

delete * from tabl
where tabl.id = 1
14 Lepochkin
 
26.07.12
10:53
мда... что я очкую... а 1совских примочек нет никаких что бы подписки и предопределенные процедуры не отрабатывали?
15 Lepochkin
 
26.07.12
11:12
вроде как вот этой штукой http://infostart.ru/public/16731/ завелось на тестовой. надеюсь прокатит
16 0_Serg_0
 
26.07.12
11:31
(15)
я б лучше сам написал - чем пользоваться непонятно чем...
17 Lepochkin
 
26.07.12
11:33
Покручу пол дня на тестовой. Если все нормуль. То в ночь можно будет пускать. Хотя разобраться в коде очень даже надо
18 Lepochkin
 
26.07.12
12:02
мда... не вариант... если обработка работает, то все остальные лапу сосут....