|
Не удаляются документы в транзакции | ☑ | ||
---|---|---|---|---|
0
GrVas
27.09.18
✎
11:05
|
Пытаюсь удалить все документы, кроме одной организации.
Код Процедура ВыбратьВсеДокументы() // УстановитьМонопольныйРежим(Истина); МассивДокументов=Метаданные.Документы; ВсегоДок = 0; Для каждого СтрМас Из МассивДокументов Цикл // НачатьТранзакцию(); КолДок = 0; Если СтрМас.Реквизиты.Найти("Организация")= Неопределено Тогда Продолжить; Иначе КонецЕсли; ДокТип=СтрМас.Имя; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | "+ДокТип+".Ссылка |ИЗ | Документ."+ДокТип+" КАК "+ДокТип +" Где " + ДокТип+ ".Организация <> &Организация"; Запрос.УстановитьПараметр("Организация", Организация); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ВсегоДок = ВсегоДок +1; Если КолДок >= 100 Тогда // ЗафиксироватьТранзакцию(); КолДок = 0; // НачатьТранзакцию(); КонецЕсли; Состояние(ВыборкаДетальныеЗаписи.Ссылка); Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); Объект.Удалить(); КолДок= КолДок+1; КонецЦикла; // ЗафиксироватьТранзакцию(); КонецЦикла; // УстановитьМонопольныйРежим(Ложь); КонецПроцедуры Если использовать транзакции, строки закомментированы, то документы не удаляются. Если не использовать транзакции документы удаляются. Что не так? |
|||
1
Вафель
27.09.18
✎
11:06
|
транзакция не фиксируется из-за ошибки.
|
|||
2
GrVas
27.09.18
✎
11:07
|
(1) Тоже так подумал, сообщений об ошибках не выводится при удалении без транзакции.
|
|||
3
Cyberhawk
27.09.18
✎
11:09
|
"документы не удаляются" // Подробнее
|
|||
4
GrVas
27.09.18
✎
11:09
|
(1) удаление сделать в попытке ?
|
|||
5
GrVas
27.09.18
✎
11:10
|
(3) не понятно, что не понятно. ))))
|
|||
6
runuts
27.09.18
✎
11:14
|
ну навскидку количество вызовов НачатьТранзакцию <> ЗафиксироватьТранзакцию
из-за Если СтрМас.Реквизиты.Найти("Организация")= Неопределено Тогда Продолжить; !!!!!!!!!!!!!!!1 |
|||
7
GrVas
27.09.18
✎
11:21
|
(6) попробую
Процедура ВыбратьВсеДокументы() // УстановитьМонопольныйРежим(Истина); МассивДокументов=Метаданные.Документы; ВсегоДок = 0; Для каждого СтрМас Из МассивДокументов Цикл КолДок = 0; Если СтрМас.Реквизиты.Найти("Организация")= Неопределено Тогда Продолжить; Иначе КонецЕсли; НачатьТранзакцию(); ДокТип=СтрМас.Имя; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | "+ДокТип+".Ссылка |ИЗ | Документ."+ДокТип+" КАК "+ДокТип +" Где " + ДокТип+ ".Организация <> &Организация"; Запрос.УстановитьПараметр("Организация", Организация); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ВсегоДок = ВсегоДок +1; Если КолДок >= 100 Тогда ЗафиксироватьТранзакцию(); КолДок = 0; НачатьТранзакцию(); КонецЕсли; Состояние(ВыборкаДетальныеЗаписи.Ссылка); Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); Объект.Удалить(); КолДок= КолДок+1; КонецЦикла; ЗафиксироватьТранзакцию(); КонецЦикла; // УстановитьМонопольныйРежим(Ложь); КонецПроцедуры |
|||
8
GrVas
27.09.18
✎
11:37
|
(6) Спасибо. Документы удаляются.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |