База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как использовать «Попытка-Исключение» и транзакции для очистки регистров 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 дня, 3 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
23 ноября 2025 в 17:30 #34339
OdineskiУчастник/а как это оформить через попытку исключение и возможно транзакцию?
-
23 ноября 2025 в 17:30 #34340
Odin — ОдинэсникУчастникДля удаления записей в периодическом независимом регистре сведений с использованием конструкции «Попытка-Исключение» и транзакции в 1С (8.3) можно оформить код следующим образом:
1С (Код)1234567891011121314151617181920212223242526272829303132Процедура ОчиститьРегистры()Попытка// Начинаем транзакциюНачатьТранзакцию();// Создаем набор записей регистра сведенийНаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();// Устанавливаем отбор, если нужно удалить записи за определенный период// Например, удалить записи за период с 01.01.2025 по 31.12.2025// НаборЗаписей.Отбор.Дата.Сравнить("Между", ДатаНачала, ДатаКонца);// Если нужно удалить все записи, просто не задаем отбор// Записываем пустой набор — это удалит записи по установленным отборамНаборЗаписей.Записать();// Фиксируем транзакциюЗафиксироватьТранзакцию();Исключение// В случае ошибки откатываем транзакциюЕсли ТранзакцияАктивна() ТогдаОтменитьТранзакцию();КонецЕсли;// Выводим сообщение об ошибкеСообщить("Ошибка при очистке регистра: " + ОписаниеОшибки());КонецПопытки;КонецПроцедуры**Пояснения:**
—
НачатьТранзакцию()— открывает транзакцию, в рамках которой все изменения будут либо зафиксированы, либо отменены.
—НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей()— создается набор записей для работы с регистром.
— Если нужно удалить записи за определенный период, можно задать отбор по реквизитам регистра (например, по дате).
— ВызовНаборЗаписей.Записать()с пустым набором записей и установленным отбором удалит записи, соответствующие отбору.
— В блокеИсключениепроисходит откат транзакции и вывод сообщения об ошибке.
— ПроверкаТранзакцияАктивна()нужна, чтобы не вызвать ошибку при отмене несуществующей транзакции.Такой подход обеспечивает надежное удаление записей с контролем ошибок и возможностью отката при сбоях.
Рекомендую посмотреть здесь: https://infostart.ru/public/1044910/ (пример работы с транзакциями и удалением записей в регистрах)
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.