Имя: Пароль:
1C
1С v8
Как сделать из обычного элемента справочника предопределенный?
0 mistеr
 
08.12.13
23:21
Жила -была статья затрат. Использовалась много лет, расползлась-расплодилась по всей базе. И вот понадобилось завязать на нее некоторые алгоритмы. Для этого ее нужно сделать предопределенной. Но так, чтобы базу не перелопачивать. Фактически нужно имеющийся элемент удалить, а взамен создать предопределенный с точно такой же ссылкой.

Реально?
1 IamAlexy
 
08.12.13
23:22
сделать константу   и ее использовать не вариант?
2 Fragster
 
модератор
08.12.13
23:23
реально (правда типа нарушение лицензионной политики), но менее геморнее сделать новый, а потом поиск и замену значений на него.
3 Fragster
 
модератор
08.12.13
23:23
(1) +1
4 zak555
 
08.12.13
23:26
(2) какие-то следы останутся ?
5 mistеr
 
08.12.13
23:27
(1) Вариант. Но хочется иметь код почище и избежать лишних граблей.
6 mistеr
 
08.12.13
23:29
(2) Что менее геморно, еще вопрос. База не маленькая, распределенная, большой downtime нежелателен, есть еще бэкапы х.з. где, и т.д.
7 mistеr
 
08.12.13
23:30
(2) А штатного способа нет?
8 dauster
 
08.12.13
23:33
(5) имхо, вариант предложенный в (1) самый правильный. Нужно выносить логику в константу или регистр настроек.
Использование предопределенных элементов лично у меня вызывает больше вопросов, да и в 8.3, например, их вообще можно удалять судя по новым добавленным правам.
9 mistеr
 
08.12.13
23:43
(8) >в 8.3, например, их вообще можно удалять
Не верю.
10 Фокусник
 
08.12.13
23:47
(0)ещё вместо константы можно спец.справочник с реквизитом Значение: Справочник.Настройки.ИмяНастройки.Значение ;)
11 etc
 
08.12.13
23:51
(8) порой использовать предопределенный элемент более правильно хотя можно обойтись и без него.
12 dauster
 
08.12.13
23:59
(9) ну создай тестовую базу пустую на 8.3 и убедись) чай не религия, чтобы верить.

(11) отчасти согласен, но лично я в последнее время все более склонен рассматривать предопределенные элементы скептически и по-возможности все выношу в настройки. Имхо, с точки зрения архитектуры так правильнее и в большинстве случаев от предопределенных можно уйти.
13 х86
 
09.12.13
00:02
(12)все настройки это обращение к базе, а иногда этого не хочетса
14 mistеr
 
09.12.13
00:10
(12) Прямо сейчас нет 8.3, а то бы проверил. И что, код не ломается?
15 GROOVY
 
09.12.13
00:13
В 8.3 можно удалить предопрделенный элемент.
16 mistеr
 
09.12.13
00:18
(15) ЗАЧЕМ?
17 GROOVY
 
09.12.13
00:19
(16) А чтоб жизнь медом не казалась :) Ролями можно запретить.
18 Steel_Wheel
 
09.12.13
00:22
(1), (2) или влезть руками в БД и в нужной таблице элементу с нужным ключом поменять значение поля PriedopriedelennyJ с 0 на 1
19 dj_serega
 
09.12.13
00:31
(18) и файловая и серверная?
20 Steel_Wheel
 
09.12.13
00:35
(19) файловая точно нет -- там все в одном файле смешано
А с серверной можно попробовать поколдовать
21 1Сергей
 
09.12.13
00:37
Если не брать во внимание (15), какие ещё есть доводы не использовать предопределенные элементы? Я не имею в виду случай (0), а вообще. Вижу у людей фобия к ним. Доводы будут?
22 dj_serega
 
09.12.13
00:44
(21) кроме как удалять можно в 8.3 :)
23 Steel_Wheel
 
09.12.13
00:45
(21) Это очень удобно. Было до (15).
24 МихаилМ
 
09.12.13
01:03
25 Armando
 
09.12.13
01:27
Справочники.СтатьиЗатрат.ПолучитьСсылку(...) не?
На уровне СУБД это тоже самое, когда ты к предопределенному элементу обращаешься.
26 GANR
 
09.12.13
02:00
(0) Можно, прямым SQL-запросом UPDATE, который модифицирует признак предопределенности у элемента с заданным ГУИДом.
27 GANR
 
09.12.13
02:01
+(26) Вот только где имя установить - не помню уже что-то
28 GANR
 
09.12.13
02:03
(24) Да - вот ответ