Имя: Пароль:
1C
1С v8
Чистка справочников: как не затронуть предопределенные данные?
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) а типовыми обработками не судьба удалить? Зачем изобретать свои обработки, да еще и для каждого справочника?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.