Имя: Пароль:
1C
1С v8
Интересный способ удалить программно предопределенный элемент справочника
0 simol
 
16.10.14
17:33
8.3.5

Например есть справочник с двумя элементами. Один предопределенный, второй не предопределенный.

выполняем код

НеПредопределенныйОбъект = НеПредопределенныйСсылка.ПолучитьОбъект();
НеПредопределенныйОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(НеПредопределенныйОбъект);
НеПредопределенныйОбъектXDTO.Ref = ПредопределенныйСсылка;

ПредопределенныйНовыйОбъект =  СериализаторXDTO.ПрочитатьXDTO(НеПредопределенныйОбъектXDTO);
ПредопределенныйНовыйОбъект.ОбменДанными.Загрузка = Истина;
ПредопределенныйНовыйОбъект.Записать();



Где
НеПредопределенныйСсылка ссылка на не предопределенный элемент справочника.
ПредопределенныйСсылка ссылка на предопределенный справочник


И получаем справочник с двумя непредопределенными элементами, которые можно удалить.

P.S. Конфигуратор будет продолжать считать что элемент есть, но его уже не будет.
1 Euguln
 
16.10.14
17:36
Можно проще:
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
ИмяПредопределенныхДанных (PredefinedDataName)
Использование:

Чтение и запись.
Описание:

Тип: Строка.
Имя предопределенного элемента, как оно задано в конфигурации.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Поле обладает особенностями сортировки.
2 simol
 
16.10.14
17:39
(1)А измени так "Предопределенный"
3 simol
 
16.10.14
17:40
СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
Предопределенный (Predefined)
Использование:

Только чтение.
Описание:

Тип: Булево.
Указывает, что данный элемент справочника является предопределенным элементом.
Истина - предопределенный.
4 Euguln
 
16.10.14
17:47
(3) Читай внимательно:
СправочникОбъект.<Имя справочника>
ИмяПредопределенныхДанных
Использование:Чтение и запись.
5 banco
 
16.10.14
17:49
(0) так в 8.3 и так можно удалить предопределенный элемент
6 simol
 
16.10.14
18:12
Я не говорил, что изменяется ИмяПредопределенныхДанных

Я говорю что так можно изменять реквизит Предопределенный, хотя он ТолькоЧтение

СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
Предопределенный (Predefined)
Использование:
Только чтение.
7 Classic
 
16.10.14
18:54
(6)
То у ссылок "только чтение". У ссылок все реквизиты "только чтение".
8 simol
 
16.10.14
21:48
(7)ты провал менять?

СправочникОбъект.<Имя справочника>.Предопределенный (CatalogObject.<Имя справочника>.Predefined)
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
Предопределенный (Predefined)
Использование:
Только чтение.
9 France
 
16.10.14
21:49
Универсальный обмен данными - и весь 1ц в интересном положении.
10 tridog
 
16.10.14
22:32
(0) А зачем так изгаляться, когда можно просто:

ПредопределенныйОбъект = Справочники.Справочник1.Предопределенный.ПолучитьОбъект();
ПредопределенныйОбъект.ОбменДанными.Загрузка = Истина;
ПредопределенныйОбъект.Удалить();

?
11 France
 
16.10.14
22:34
Пометка удаления?
12 MrStomak
 
16.10.14
23:11
(0) Всем давно известно, что в 8.3 можно удалять предопределенные элементы. Для этого даже предусмотрены соответствующие права. Более того, назначать элемент предопределённым можно программно как угодно, используя "ИмяПредопределенныхДанных".

Каких-то непонятных костылей при этом городить не надо, это богато документированная возможность.
13 AlexITGround
 
16.10.14
23:22
(5) спокойно, не порти интригу, они еще об этом не знают :)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс