ПредопределенноеЗначение vs Перечисление.Значение #604156


#0 by Humandra
Подскажите, кто-то сравнивал ПредопределенноеЗначение("Перечисление.Значение") с просто Перечисление.Значение? С учетом того, что Перечисление - это просто таблица в базе данных, обращаться к его значениям явно надо с осторожностью. В описании метода ПредопределенноеЗначение сказано, что полученное значение кэшируется. Т.е. по идее не должно быть обращений к базе данных? А при Перечисление.Значение? Не кешируется? Или тоже кэшируется?
#1 by butterbean
сколько тысяч вызовов планируется??
#2 by Maxus43
#3 by Buster007
вообще-то это сделалось для того, чтобы не писать свои собственные процедуры, которые получают значения перечисления, справочников и т.д. на клиенте.
#4 by Maxus43
+ замер включи, следующие вызовы после первого - будут быстрей, кэшируется видимо
#5 by Buster007
вернее, не писать серверные функции для получения значений, которые нужны нам на клиенте)
#6 by Humandra
В теории - до фига может быть. Это перечисление типа Ставки НДС.
#7 by mirosh
"С учетом того, что Перечисление - это просто таблица в базе данных, обращаться к его значениям явно надо с осторожностью. " Ужас, целая таблица в базе данных).
#8 by mirosh
+ результаты из запросов тоже кешируются, если что.
#9 by vmv
+ ага и Вообще-то в контесте 8.2 и УФ метод ПредопределенноеЗначение("Перечисление.Значение") вызванный из клиентского метода делает обращение к серверу, т.е. "портит" клиентский метод, дергая сервак. Когда мне в модуле формы необходимо получать, не вызывая сервер, какие-то ссылочные значения(перечисления, группы справочника и т.д.), то я поступаю так 1. в метод ПриСозданииНаСервере вставляю служебный серверный метод модуля формы СерверИнициализацияТаблицыСсылочныхТипов 2. На форме создаю реквизит типа ТаблицаЗначений с двумя колонками "Ключ" и "Значение" 3. В теле СерверИнициализацияТаблицыСсылочныхТипов произвожу инициализацию всех необходимых мне в модуле форме ссылочных типов 4. Пишу еще один метод КлиентПолучитьСсылкуПоКлючу После этого я могу 1. получать в чистом клиентском методе ссылочные типы не дерагая сервер 2. в любой момент В ОДНОМ МЕСТЕ могу расширить необходимые мне значения ссылок Кто поступает по другому - тот тупой и жадный 1С-к)
#10 by Humandra
Вот пока 1С-ники будут иронизировать над тем, что, к примеру, неявно в цикле будет на каждое обращение запрос к БД лезть, 1С и будет работать только на 10 пользователей. С обычными запросами, даже повторно выполняемыми с теми же параметрами, запрос на сервер все равно уходит. Ну, конечно кэш самой СУБД немного поможет тут, но не более. С перечислениями пока непонятно. Меня интересует не с точки зрения обращения клиента к серверу, а с точки зрения обращения сервера приложений к серверу СУБД.
#11 by Humandra
Ладно, пошла бороть лень и писать тестовый пример, раз никто до меня не интересовался :) О результатах сообщу :)
#12 by vmv
метод ПредопределенноеЗначение(...) производит обращение к СУБД, посему должен быть использован только тогда когда это обращение нужно всего раз. во всех остальных случаях на клиенте должна сущность, которая хранит необходимые для клиента ссыылки и клинет может их получить без обращения к СУБД.
#13 by vmv
довесок значения перечесления невозможно модифицировать штатными средства платформы с уровня приложения, посему страх автора "Перечисление.Значение ...обращаться к его значениям явно надо с осторожностью" скорее вызван молодой луной и магнитной бурей
#14 by MikleV
ты балбес. вызов - один раз.
#15 by MikleV
читайте rtfm
#16 by vmv
и варвда один, ну все-таки один, а так при создании на сервере все в одном флаконе затулил в таблицу формы и не паришься. тем более что писать конструкции ПредпорпделенноеЗначение("Спрвачник.МаиТаври.ГруппаМае") муторно и нудно мне приятнее писать ПолучитьСсылкуПоКлючу("ГруппаМае") и плевать на периименование объектов или реквизитов, все что нужно поправить - все в одном месте, а не расбросано черти где
#17 by Humandra
Вы не поняли. С осторожностью - не потому что не доверяю полученному результату. А потому что от запроса к СУБД, выполняемого на каждую итерацию из нескольких тысяч и десятков тысяч, если не миллионов, явно серверу СУБД не получшеет. И я хотела убедиться, что этих миллионов запросов - нет. Теперь докладываю. Действительно, 1С кэширует запросы к перечислениям. Сделала такую тестовую процедуру: После первого обращения к перечислению, даже при повторном вызове метода, обращение идет только к таблице Справочника. Перечисление не перезачитывается, и это прекрасно.
#18 by Humandra
Меня просто смутило, почему в типовых часто пишут ПредопределенноеЗначение("Перечисление.Значение") ... в общем модуле. Похоже, что прав , и это только для того, чтобы использовать этот метод и на сервере, и на клиенте.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С