Имя: Пароль:
1C
1С v8
Когда фунциональные опции применяют ?
0 EarthsSoul
 
28.07.17
07:06
Добрый день

Подрядчик выполняет работы, я веду аудит кода.
Так вот было множество замечаний к коду и одно из них обращение к получению констаны (прямо процедурах написано Константы.ВидНоменклатурыСпециальный.Получить() ).

После рефакторинга со стороны подрядчика, обращение к константам переделали на обращение к функциональным опциям

ПолучитьФункциональнуюОпцию("ВидНоменклатурыСпециальный")

Я предполагал в не частых случаях переделать на предопределенные значения справочника вида номенклатуры, в случаях почаще использовать параметры сеанса.

Вот у меня вопрос не ужели функциональные опции целесообразно так использовать ? Я думал у них совсем другое назначение.

Можно ли завявить что обращение к
ПолучитьФункциональнуюОпцию("ВидНоменклатурыСпециальный")
Более оптимально в коде чем
Константы.ВидНоменклатурыСпециальный.Получить()
?
1 Рэйв
 
28.07.17
07:10
А замерять  время выполнения не позволяет длина цепи от батареи?
2 EarthsSoul
 
28.07.17
07:13
Сейчас попробую, интересно мнение экспертов, потом напишу результаты замеров ))
3 igorPetrov
 
28.07.17
07:37
Вот точно, людям делать нечего...
4 EarthsSoul
 
28.07.17
07:37
Да лучше, но мне кажется это оригинальное использование функциональных опций

Количество обращений    Чистое время    Процент
ИзПараметрыСенаса =  ПараметрыСеанса.СпецВидНоменклатуры;    100 000    3,367411    3,91
ИзСправочника =  Справочники.ВидыНоменклатуры.СпецВидНоменклатуры;    100 000    5,036589    5,84
ИзФункциональнойОпции = ПолучитьФункциональнуюОпцию("СпецВидНоменклатуры");    100 000    9,122305    10,59
ИзКонастаны = Константы.СпецВидНоменклатуры.Получить();    100 000    58,387468    67,75
5 igorPetrov
 
28.07.17
07:40
(4) Что тебе это дает? В коде 100 000 раз получают значение константы? Если да, то вопрос зачем? Если нет, так какая разница?
6 yzimin
 
28.07.17
07:50
(0) А если константа не привязана к ФО?
7 mikeA
 
28.07.17
08:29
(3) +1

(0) Сделай справочник с настройками и код получения в общем модуле с повторным использованием значений если уж так интересует быстродействие. Только imho это последнее что нужно оптимизировать.

А про справочник кстати вспомнишь когда таких настроек станет over 9000 ))
8 igorPetrov
 
28.07.17
08:37
Такого "аудитора" гнать нужно тряпками... имхо, ситуацию в контексте смотреть нужно. И не высасывать проблему из пальца.
9 EarthsSoul
 
28.07.17
08:49
(8) что самоценка храмает ? Что за нападки ?
10 bodri
 
28.07.17
08:50
Если не изменяет память, обращение к функциональной опции всегда в привилегированном режиме, а к константе нет, поэтому целесообразней пользоваться ФО, чтоб не парится с правами на константу
11 EarthsSoul
 
28.07.17
08:55
(10) есть такой момент
плюс ко всему функциональная опция является оберткой которая может хранится в разных структурах данных, и замена источника информации может быть полезна.
12 Галахад
 
гуру
28.07.17
09:01
(4) Можно ли завявить что обращение к ... Более оптимально в коде чем ...

В 6 раз. Чего еще надо?
13 Джо-джо
 
28.07.17
09:03
(9) "храмает"
Проведите лучше аудит учебника по русскому языку
14 Джо-джо
 
28.07.17
09:04
Кстати, пробел перед знаками препинания не ставится
15 igorPetrov
 
28.07.17
09:09
(14) Вот так и код аудирует.
16 Diversus
 
28.07.17
09:15
По факту, что подрядчик переделал - это то же самое. Функциональная опция скорее всего хранится в константе. Раньше проверяли константу, сейчас опцию, значение которой в этой же константе =)
17 Diversus
 
28.07.17
09:18
Если константа читается часто, имеет смысл вынести ее в модуль с повторным использованием возвращаемых значений.