Имя: Пароль:
1C
 
Кто где и как хранит настройки.
,
0 Kuzen
 
27.06.11
13:08
В процессе доработки возникает необходимость в каких то настройках, большинство прогов начинает при этом активно плодить в коде что то вроде НайтиПоКоду("000001") и.т.д.

Как думаете оптимальнее решить эту проблему: создать справочник настройки и в него пихать предопределенные элементы с реквизитами или вообще один элемент с кучей реквизитов? Или через регистр сведений или через план видов характеристик?
1 mikecool
 
27.06.11
13:08
свой пвх и рс
2 poligraf
 
27.06.11
13:09
(0) смотря какие настройки...
Я в случаях НайтиПоКоду() - через предопределенные элементы спрвочника.
3 bodri
 
27.06.11
13:09
В регистре неплохо
4 Господин ПЖ
 
27.06.11
13:10
>НайтиПоКоду("000001")

по яйкам с разбегу...

от ситуации зависит. пока в ПВХ все сидит... и тип есть и значение задать можно предопределенное
5 ice777
 
27.06.11
13:14
когда мне надо ТЗ настроек (например список элементов справочника), я их кладу в константу типа хранилища значения.
6 ice777
 
27.06.11
13:15
+(5) и не надо потом этого быдлячего НайтиПоКоду.
7 Stepa86
 
27.06.11
13:16
От настройки зависит

Можно на константах
Можно на РС
Можно на РС + ПВХ
Можно на Справочнике
Можно как предопределенные
Можно создать обработку в которой есть нужные экспортные параметры, инициализировать их волшебными значениями и обращаться к ней
Можно во внешнем файле, аля *.ini
Можно выделить общий модуль, в котором будут методы доступа
...
8 Господин ПЖ
 
27.06.11
13:16
не надо... надо потом сношаться и проверять ссылки на битость... так что не далеко уполз от "быдлячего"...
9 ice777
 
27.06.11
13:22
(8) настройки обычно не настолько велики.
а битость.. гм, не сталкиваюсь так часто, чтобы была проблема )
10 ice777
 
27.06.11
13:23
(7) да где хочешь, только чтоб я НайтиПоКоду не видел ;)
11 Stepa86
 
27.06.11
13:25
(10) когда в качестве настроек юзаю справочник, то идентификатором выступает как раз код и обращение инкапсулировано в какой нить метод. Аналог реестра виндового получается
12 ice777
 
27.06.11
13:27
(11) брр. не надо кодов! не надо.
лучше составного типа уже сделать, но хранить - ссылки.
13 Stepa86
 
27.06.11
13:30
(12) не боись, я овладел кунгфу настолько, что знаю когда можно юзать НайтиПоКоду и НайтиПоНаименованию, а когда нельзя =)
14 be-may
 
27.06.11
13:31
:)
(0) буквально только что так написала..
пойду повешусь)
15 mikecool
 
27.06.11
13:36
(14) не надо, ты нам еще пригодишься ;)
16 be-may
 
27.06.11
13:57
(15) :) /*вынимая голову из петли и слезая с табуретки..*/...
Мне кажется, что если это разовая акция, то ничего страшного нет в таком вот "костыле", а если входит в систему, настройки разрастаются, то надо что-то придумывать.
Лично я обычно обхожусь константами, но я в основном на 7.7. пишу.
17 Stepa86
 
27.06.11
14:05
(16) >>Мне кажется, что если это разовая акция, то ничего страшного нет в таком вот "костыле"

Тут включается теория разбитых окон... http://lurkmore.ru/Теория_разбитых_окон
18 artems
 
27.06.11
14:13
У нас дофига всяких настроек используется...
Сделали 2 периодических регистра, один для значений для предприятия в целом, а второй для значений конкретных организаций. Очень удобно )
19 Reaper_1c
 
27.06.11
14:14
(1) +1
20 kosts
 
27.06.11
14:15
+ к (7)

Новый справочник с реквизитом типа "значение" и с предопределенными элементами на все случаи.
в коде получается:
в = Справочник.ПредопределенныеЭлементы.ВидМоегоДоговора;

+ можно использовать в запросах.


Иногда в коде использую метод получить ссылку по уникальному идентификатору. Это хуже чем "Справочник.ПредопределенныеЭлементы", но лучше чем найти по коду и наименованию.
21 kosts
 
27.06.11
14:16
+ к (20)
в = Справочник.ПредопределенныеЭлементы.ВидМоегоДоговора.Значение;
22 Fragster
 
гуру
27.06.11
14:19
только что написал в разовой обработке заполнения инвентаризации:

   Построитель.Параметры.Вставить("Склад",Объект.Склад);
   
   СписокНоменклатуры = Новый СписокЗначений;
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("c303acd2-3536-11dc-bed2-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("795a7f2e-66f7-11de-b97f-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("df9dee11-5e8c-11e0-b47b-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("74711c6e-0b52-11df-91da-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("8f80dd98-5a97-11e0-559d-003048de3b5e")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("2f21ce4c-7c9e-11e0-b47b-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("75076446-dffe-11df-b69b-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("c303acd1-3536-11dc-bed2-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("6d55d231-167d-11dd-b618-000423cc82b2")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("39cb2f20-59bc-11df-8832-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("39cb2f22-59bc-11df-8832-000423ccf644")));
   СписокНоменклатуры.Добавить(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("39cb2f24-59bc-11df-8832-000423ccf644")));
   //КонецЦикла;
   ОтборПоНоменклатуре = Построитель.Отбор.Добавить("Номенклатура");
   ОтборПоНоменклатуре.ВидСравнения = ВидСравнения.ВСписке;
   ОтборПоНоменклатуре.Использование = Истина;
   ОтборПоНоменклатуре.Значение = СписокНоменклатуры;


Теперь я умру?
23 Stepa86
 
27.06.11
14:33
(22) (4) уже разбегается
24 Kuzen
 
27.06.11
16:49
А вот если предопределенные элементы юзать, как кошернее к ним обращаться через запрос или через точку?
25 artbear
 
27.06.11
17:01
(24) смотря что дальше требуется.
если просто подставить ссылку в документ или РС, то пишешь через точку типа Справочник.Спр1.Главное
а если нужно получать данные из этого элемента, то, как правило, лучше через запрос.
26 artbear
 
27.06.11
17:02
(22) Умрешь, если это делал вручную, т.е. все ИД находил вручную.
а вот если через какой-нибудь генератор кода по запросу и его параметрам, тогда твоя карма вырастет :)
27 Лефмихалыч
 
27.06.11
17:03
(0) надысь добавили в конфу справочник ИменованныеЗначения, состоящий целиком из предопределенных элементов с атрибутом Значение (тип - любаяСсылка). Но это продиктовано в основном убожеством конфы, нежели реальной необходимостью.
28 Reaper_1c
 
27.06.11
18:23
(24) Через функцию общего модуля с повторным использованием возвращаемых значений на время сеанса. Ты ей имя элемента, а она тебе ссылку.
29 AlexNew
 
27.06.11
18:48
(22)Ты думаешь тут нужны комментарии?
30 Fragster
 
гуру
27.06.11
19:33
(26) СКД с внешней функцией получения УИДа. табличку потом тупо скопипастил в код обработки
31 Fragster
 
гуру
27.06.11
19:35
(29) частичная инвентаризация, от введения доп. свойства, чтобы по нему заполнять - отказались (потому что разовая операция). а настройки должны быть вбиты - потому что при ручном вводе в список отбора 12 позиций возможны косяки (юзеры криворукие, да) и потому что настройки должны быть одинаковые в 60+ узлах.
32 zzerro
 
27.06.11
21:48
Я для таких случаев завел РС
Идентификатор - строковый произвольный идентификатор (измерение)
Значение - сохраняемое значение, произвольного типа (ресурс)
И написал одну процедурку по получению значения по идентификатору. Собственно и все. Пользуюсь, доволен. Удобно, когда нужно выделить какие-нибудь элементы справочников или запомнить какую-либо постоянную величину. Собственно получилились дополнительные произвольные константы.
33 Snovy
 
27.06.11
21:55
(32) Почти точно также. Только для удобства работы - идентификаторы прошиты через макет, тип значения - там же. Удобно для универсальной формы редактирования этих настроек. Но это общие настройки (без привязки к пользователям), кстати которые еще и кэшируются. Для пользовательских настроек обычно используется встроенный в типовые регистр сведений, не помню - как тае его зовут - Сохраненные настройки?
34 zzerro
 
27.06.11
21:58
(33) Ага, я его тоже использую для сохранения пользовательских настроек в внешних отчетах и обработках, как индивидуальных, так и общих.
35 ice777
 
27.06.11
22:17
(32) выбор РС - единственно правильное. Это годится для периодических констант. А есть константы почти навсегда - например, список исключительных начислений для расчетов, которые не были предопределены и делать предопределенными их поздно. тогда логичней совать эти данные в константы.
36 Stepa86
 
28.06.11
08:01
(31) хоть бы в метод инкапсулировал такое сомнительное решение. Там и реализацию можно было б сменить при необходимости легче