|
v7: Тормозят константы | ☑ | ||
---|---|---|---|---|
0
alexexe
15.08.13
✎
02:22
|
Конфигурация нетиповая (переделанная торговля)
Проблема: Конфа тормозит в местах, где идет обращение к константам В частности, страшно медленно работает это место: спрОсновнаяФирма = ПолучитьПустоеЗначение("Справочник.Фирмы"); Если Константа.НастройкиПоУмолчанию.Выбран() = 1 Тогда спрОсновнаяФирма = Константа.НастройкиПоУмолчанию.ОсновнаяФирма; КонецЕсли; Железо новое, объем базы тоже не влияет (есть аналогичные с базы с таким же размером, которые работают вполне нормально) Загрузка/Выгрузка данных производилась, на производительность никак не повлияло Может кто сталкивался или есть какие идеи? |
|||
1
leshikkam
15.08.13
✎
02:47
|
Сделай глобальную переменную и считывай в ПриНачалеРаботыСистемы
|
|||
2
Aleksey
15.08.13
✎
02:58
|
Функция глКонстанта(Имя) Экспорт
Значение = глКэшКонстант.Получить(Имя); Если ПустоеЗначение(Значение) = 1 Тогда Значение = Константа.ПолучитьАтрибут(Имя); глКэшКонстант.Установить(Имя,Значение); КонецЕсли; Возврат Значение; КонецФункции Настройки = глКонстанта("НастройкиПоУмолчанию"); |
|||
3
Aleksey
15.08.13
✎
02:59
|
ну и соответственно в начале
Перем глКэшКонстант Экспорт; // Список значений констант и в конце глКэшКонстант=СоздатьОбъект("СписокЗначений"); |
|||
4
Aleksey
15.08.13
✎
03:02
|
И да существует мнения что .Выбран() некошэрно использовать (идет обращения к БД), более кошэрный вариант
Если ПустоеЗначение(Константа.НастройкиПоУмолчанию)=0 тогда или Если ПустоеЗначение(глКонстанта("НастройкиПоУмолчанию"))=0 тогда |
|||
5
ildary
15.08.13
✎
03:03
|
Причиной торможения может быть большое число значений периодических реквизитов, которые хранятся в том же файле. Проверяется любым dbf просмотрщиком.
|
|||
6
Туц
15.08.13
✎
07:20
|
(0) +1 к (5)
Фраза "Железо новое, объем базы тоже не влияет (есть аналогичные с базы с таким же размером, которые работают вполне нормально)" дилетантская. Раз конфа переписанная, то можете дописать хранение настроек в отдельный справочник. |
|||
7
Zerg80
15.08.13
✎
07:25
|
(5) + 1, надо считывать при запуске 1С
|
|||
8
Рэйв
15.08.13
✎
07:29
|
(0)Достаточно оставить одну строку.
спрОсновнаяФирма = Константа.НастройкиПоУмолчанию.ОсновнаяФирма; Зачем тебе эти проверки и получение пустого значения? Если константа незаполнена то и итак пустое будет |
|||
9
Рэйв
15.08.13
✎
07:30
|
Если у тебя весь код такой, то неудивительно что тормозит:-)
|
|||
10
ЧеловекДуши
15.08.13
✎
07:31
|
(0) Избавься от этих констант.
Накрути лучше какой-либо справочник и назови его "Константы". Так же, проанализируй периодические реквизиты и по возможности вынеси самые часто изменяемые, либо в регистр, либо в еще один справочник :) |
|||
11
Aleksey
15.08.13
✎
10:46
|
(8) А если тип константы - справочник, или неопределено?
|
|||
12
Барбариска
15.08.13
✎
11:04
|
(10) еще и справочник накрутить... потом будет "проще взорвать, чем отремонтировать" ))
Просто константы один раз при начале работы системы в глобальные переменные. Ну и для "полной корректности защиты от дурака" - переопределение переменных при записи константы и запрет на их изменение в разделенном режиме )) |
|||
13
Chum
15.08.13
✎
11:07
|
(1) +100500
глОсновнаяФирма глОсновнаяВалюта или глРуб глГБ глГД глФД и т.д. Обращение к константам обычно тупит, особенно, когда они периодические. |
|||
14
ЧеловекДуши
15.08.13
✎
11:08
|
(12) Ремонтировать что?
У него походу туда пишутся какие либо периодические реквизиты, типо "Цена", "Затраты" И судя по тормозам, пишутся они очень часто и много раз :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |