Имя: Пароль:
1C
1С v8
наименование предопределенного элемента справочника
0 mzelensky
 
18.10.13
11:52
Доброго всем!

Имеем справочник с предопределенными элементами. Например:

Имя = "Спр1"
наименвоание = "Наименование элемента Спр1"

Пользователь может зайти в режим предприятия и сменить наименвоание у элемента с предопределенного на нужное ему. Хочу запретить данное действие (те если элемент предопределенный, то менять наименвоание нельзя).

В модуле делаю проверку на "предопределенный", а дальше проблема. Как получить предопределенное наименование данного элемента (то, которое отображается в конфигураторе, а не то, которое ввел пользователь)

???
1 mzelensky
 
18.10.13
11:54
Пока вижу ток такой вариант

ИмяТекЭлемента = ЭтотОбъект.Метаданные().Имя;
Предопределенное наименвоание = Справочники.ТекВидСправочника[ИмяТекЭлемента].Наименвоание;

Вот так получить предопределенное наименование, ну а потом уже сравнивать его с просто "наименование" элемента.

Как-то проще можно?
2 mzelensky
 
18.10.13
11:55
(1) не, блин...не так...
3 mzelensky
 
18.10.13
12:03
ну апну, че...в пятницу не грех
4 МойКодУныл
 
18.10.13
12:07
Усложняешь. Можешь или в форме сделать недоступным для редактирования поле ввода.
Или перед записью всегда наименование брать из ссылки. Напименование = Ссылка.Наименование.
5 1dvd
 
18.10.13
12:07
Если ПустаяСтрока(Справочники.ИмяТвоегоСправочника.ПолучитьИмяПредопределенного(СсылкаНаЭлементСпавочника)) Тогда
    // Это НЕ предопределенный
6 mistеr
 
18.10.13
12:09
Запоминать при открытии формы. Как с любым другим реквизитом.
7 mzelensky
 
18.10.13
12:11
(4) Не вариант. Не хочу так делать.
8 mzelensky
 
18.10.13
12:12
(5) О, отлично! Не знал об это фенечки "ПолучитьИмяПредопределенного"
9 mzelensky
 
18.10.13
12:13
(6) Минус твоего совета - узко мыслишь. ТЫ предполагаешь .что изменить реквизит можно только через форму. Но это далеко не так.
10 Maxus43
 
18.10.13
12:14
не понял...
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
Предопределенный (Predefined)
Использование:

Только чтение.

Если ЭтотОбъект.Предопределенный Тогда
Отказ от чего бы то ни было
КонецЕсли
11 mzelensky
 
18.10.13
12:15
(10) не, эт ты уж слишком. Там же еще и другие реквизиты есть. А мне нужно чтобы только наименование менять нельщя было.

Вариант из (5) меня устраивает
12 Maxus43
 
18.10.13
12:16
Если ЭтотОбъект.Предопределенный И Ссылка.Наименование <> наименование Тогда
Отказ от чего бы то ни было
13 mzelensky
 
18.10.13
12:18
(12) наименование могло быть уже поменяно (т.е. уже до того, как я внедрю данный функционал)
14 Maxus43
 
18.10.13
12:19
(13) Этот код проверяет на изменение текущего наименования, так что всё норм
15 Maxus43
 
18.10.13
12:20
И Ссылка.Наименование <> ЭтотОбъект.наименование Тогда

так может понятней будет
16 MSII
 
18.10.13
12:20
Если ЭтотОбъект.Предопределенный И НаименованиеПредопределенногоЭлементаСправочникаКогдаТоБылоИзмененоКакимТоНегодяями(Ссылка) Тогда
Отказ от чего бы то ни было
17 MSII
 
18.10.13
12:22
(13) Сначала привести в порядок наименования, потом внедрить запрет.
18 mzelensky
 
18.10.13
12:22
(15) Я это и с первого раза понял.

Не мучайся, уже все получилось.
19 mzelensky
 
18.10.13
12:23
(16) да, прмиерно так :)
20 Maxus43
 
18.10.13
12:24
(18) тогда непонятно мне (13), безразницы что кто-то что-то когда то поменял, после этого уже нельзя будет менять
21 mzelensky
 
18.10.13
12:26
(20) я это понял. Мне нужно сравнивать текущее наименование с "первоначальным" (т.е. с тем самым первым-первым-первым наименованием, которое создалось из наименования в конфигураторе)

так может понятней будет
22 Maxus43
 
18.10.13
12:28
(21) ааа... ну тогда да, через метаданные надыть
23 andreymongol82
 
18.10.13
12:33
(21)
СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
ПолучитьИмяПредопределенного (GetPredefinedItemName)
Синтаксис:

ПолучитьИмяПредопределенного(<Ссылка>)
Параметры:

<Ссылка> (обязательный)

Тип: СправочникСсылка.
Ссылка на элемент, имя которого требуется получить.
Возвращаемое значение:

Тип: Строка.

Описание:

Получает имя предопределенного элемента. Если данный элемент не является предопределенным, то возвращается пустая строка.

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

Сервер, толстый клиент, внешнее соединение.