|
Чистка справочников: как не затронуть предопределенные данные? |
☑ |
0
_stay true_
11.09.13
✎
13:43
|
Здравствуйте. Нужно почистить несколько справочников в УТ 11, написал для этого внешнюю обработку. Но при её выполнении вылетает ошибка: "невозможно установить пометку удаления на предопределнные элементы справочника". Вопрос моя такой: как сделать так, чтобы при установки пометки удаления(и, собственно, удалении в дальнейшем) не затрагивались предопределенные элементы? Фрагмент кода обработки(чистка справочника "организации"):
ОрганизацииВыборка = Справочники.Организации.Выбрать();
Пока ОрганизацииВыборка.Следующий() Цикл
Организации = ОрганизацииВыборка.ПолучитьОбъект();
Организации.УстановитьПометкуУдаления(ИСТИНА);
Организации.Записать();
КонецЦикла;
|
|
1
Любопытная
11.09.13
✎
13:44
|
Предопределенный (Predefined)
Использование:
Только чтение.
Описание:
Тип: Булево.
Указывает, что данный элемент справочника является предопределенным элементом.
Истина - предопределенный.
Доступность:
Сервер, толстый клиент, внешнее соединение.
|
|
2
Euguln
11.09.13
✎
13:46
|
(0) Получится удалить предопределенный элемент - напиши.
А так (1)
Если Не Организации.Предопределенный Тогда
Организации.УстановитьПометкуУдаления(ИСТИНА);
Организации.Записать();
КонецЕсли;
|
|
3
_stay true_
11.09.13
✎
13:47
|
(2) Да не нужно мне предопределенные удалять, наоборот - их не нужно трогать вообще:)
|
|
4
_stay true_
11.09.13
✎
13:47
|
(2) Спасибо большое. Пойду попробую:)
|
|
5
_stay true_
11.09.13
✎
13:56
|
сразу не отходя от кассы: теперь вылезло вот такое:
{Форма.Форма.Форма(539)}: Ошибка при вызове метода контекста (УстановитьПометкуУдаления)
Номенклатура.УстановитьПометкуУдаления(ИСТИНА);
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{Справочник.Номенклатура.МодульОбъекта(138)}: Значение поля "Рабочее наименование" не уникально
ВызватьИсключение ТекстИсключения;
Как бороться?
|
|
6
Любопытная
11.09.13
✎
13:58
|
Значение поля "Рабочее наименование" не уникально - очищать это поле, раз уж все равно удаляешь
|
|
7
Euguln
11.09.13
✎
13:59
|
Можно сделать так перед записью
Номенклатура.ОбменДанными.Загрузка = Истина;
|
|
8
_stay true_
11.09.13
✎
14:06
|
Попробую вариант с очисткой.
|
|
9
_stay true_
11.09.13
✎
14:22
|
И последний вопрос: а можно как-то программно сразу все-все документы из базы удалить?
|
|
10
Serg_1960
11.09.13
✎
14:30
|
(9) Да, можно.
|
|
11
Aleksey
11.09.13
✎
14:32
|
drop table
|
|
12
Serg_1960
11.09.13
✎
14:39
|
(чисто поржать) "Универсальный обмен данных в формате XML" - последняя закладка - "Удаление данных" :))
|
|
13
Serg_1960
11.09.13
✎
14:40
|
Тьфу, "данных" --> "данными"
|
|
14
_stay true_
11.09.13
✎
14:46
|
(13) Я теперь себя каким-то Днищем 1С чувствую:)
|
|
15
hhhh
11.09.13
✎
14:49
|
(14) а типовыми обработками не судьба удалить? Зачем изобретать свои обработки, да еще и для каждого справочника?
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший