|
Как сериализовать структуру в конфу так, чтобы она максимально быстро десериализовывалась? | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
13.01.22
✎
11:37
|
Есть настройки формы в виде структуры, я их готовлю на этапе разработки (тиражное решение).
В продакшне хочу быстро эту структуру восстановить из макета в конфигурации. Вопрос - как максимально быстро это сделать. Так то понятно, что можно использовать текстовый JSON или даже ЗначениеВСтрокуВнутр, но хочется чего-нибудь бинарного. |
|||
1
acht
13.01.22
✎
11:43
|
ХранилищеЗначений, гггеня.
|
|||
2
H A D G E H O G s
13.01.22
✎
11:46
|
Никак
|
|||
3
fisher
13.01.22
✎
11:48
|
Ума не приложу, где критична "максимально быстрая десериализация преднастроек".
ИМХО, как не положи - скорость будет достаточна. Поэтому ложить надо "как удобнее", а не "как быстрее". (2) Ему не сохранять. Ему читать преднастройки. |
|||
4
Галахад
гуру
13.01.22
✎
11:54
|
"хочется чего-нибудь бинарного" - секреты что-ли?
|
|||
5
H A D G E H O G s
13.01.22
✎
11:56
|
Хранилище значений - это та же ЗначениеВСтрокуВнутр
Получать из макета гораздо дольше, чем из константы или РС. Поэтому лучше пытаться вытащить из константы, если в ней пусто - из макета, и закешировать в константу. Если планируется обновлять - при обновлении затираем константу. А лучше webservice на Goo, конечно же. Конечно же WebService. Да. |
|||
6
Гений 1С
гуру
13.01.22
✎
11:57
|
(3) ну хорошо, в структуре я храню добавляемые в форму элементы (вложенная форма). Мне нужно чтобы вложенная форма максимально быстро отрисовывалась при открытии формы.
|
|||
7
fisher
13.01.22
✎
11:58
|
(5) Вангую, что "тиражное решение" представляет собой обработку.
|
|||
8
acht
13.01.22
✎
11:59
|
(5) > это та же ЗначениеВСтрокуВнутр
Зато сжатая |
|||
9
Гений 1С
гуру
13.01.22
✎
11:59
|
(1) (5) Я не могу хранить значение типа ХранилищеЗначения в базе, могу хранить только бинарный файл в макете, но как из него структуру получить, хз...
|
|||
10
Гений 1С
гуру
13.01.22
✎
12:00
|
(7) расширение.
|
|||
11
pechkin
13.01.22
✎
12:00
|
Для однократной загрузки вообще не важно
|
|||
12
Гений 1С
гуру
13.01.22
✎
12:00
|
(9) т.е. не в базе а в CFE-файле, мне надо хранить эту структуру в файле расширения.
|
|||
13
Гений 1С
гуру
13.01.22
✎
12:01
|
(11) а с чего ты взял что у меня однократная загрузка? Хотя может там десериализация из ЗначениеВСтрокуВнутр и быстро происходит, хз.
|
|||
14
acht
13.01.22
✎
12:01
|
Хтоническая хрень из Коллеги, мне поручили сделать вложенную форму, есть опыт? пытается вырваться наружу
|
|||
15
Гений 1С
гуру
13.01.22
✎
12:01
|
(4) Секреты - это крипта.
(14) она уже давно реализована, сейчас речь об ее ускорении. |
|||
16
pechkin
13.01.22
✎
12:02
|
(6) ты уверен что именно на чтении макета основной затык?
|
|||
17
H A D G E H O G s
13.01.22
✎
12:03
|
(14)бля. Жгите ее вогнемэтами!
|
|||
18
fisher
13.01.22
✎
12:03
|
Оптимизировать ненаписанный код - это сильно.
Ты напиши сначала и замеры сделай, если не понравится. "Доставание" переписать там если что - будет раз плюнуть. |
|||
19
fisher
13.01.22
✎
12:06
|
(15) Т.е. замер производительности показывает что тормоза на "доставании"? Ну, покажи результаты замеров, что ли. Интересно.
|
|||
20
Гений 1С
гуру
13.01.22
✎
12:27
|
(19) ок, проверю. Пока что у меня кодом форма разбирается, это долго. Посмотрю, если сохранить разбор в конфигурации, будет ли долго.
|
|||
21
FIXXXL
13.01.22
✎
12:28
|
||||
22
Гений 1С
гуру
13.01.22
✎
12:47
|
(21) Это каким боком сюда?
|
|||
23
FIXXXL
13.01.22
✎
13:16
|
(22) кэширование, что бы не читать макет каждый раз
|
|||
24
Гений 1С
гуру
13.01.22
✎
13:47
|
(23) это понятно, но и самый первый раз занимает какое-то время. можно конечно его в фоне дернуть, хз
|
|||
25
Гений 1С
гуру
13.01.22
✎
13:59
|
Хотя семен семеныч, можно хранилище же сериализовать в XML: v8: Сериализация Хранилища Значений
Тогда в текстовый макет закидываю XML с сериализованным хранилищем и из него получаю значение хранилища, из него - искомую структуру. Бинго! Можно и не текстовый макет, а бинарный файл XML, но не хочу издеваться над разработчиками, чтобы они лишний раз в файл скидывали XML |
|||
26
Гений 1С
гуру
14.01.22
✎
16:43
|
возможна сериализация только ЗначениеВСтрокуВнутр, т.к. все сериализации XML ругаются на серверный тип 'ВертикальноеПоложениеЭлемента' (ну и на другие подобные).
Десериализация в принципе быстрая из ЗначениеВСтрокуВнутр, занимает лишь 3% от времени отрисовки вложенной формы. И все же чую, что десериализация неоптимальная, хотелось бы сразу струтуру получать в приложении. Но думаю, что тут уж ничего не сделаешь. Как вариант можно еще структуру в хранилище значения запихнуть и уже из него десериализовать, не знаю, надо потестить, насколько это быстро. Потестирую - напишу |
|||
27
mistеr
14.01.22
✎
18:15
|
(26) Вспомни молодость платформы, все хранится в табличном виде в табличных макетах.
Надеюсь, ты не будешь спорить, что табдок читается достаточно быстро? |
|||
28
VladZ
14.01.22
✎
18:37
|
(0) Я таки не понял, зачем это нужно.
|
|||
29
Кирпич
16.01.22
✎
09:59
|
(28) Мультфильмы наверное делает. Он же у нас, последнее время, творчеством занимается.
|
|||
30
Кирпич
16.01.22
✎
10:02
|
про кнопочку Сформировать и волшебника Уф.
|
|||
31
Гений 1С
гуру
16.01.22
✎
10:02
|
(28) это нужно для вложенных форм, поищи в теме, там прописано зачем нужно иметь возможность быстро восстановить структуру
|
|||
32
acht
16.01.22
✎
10:12
|
Кстати, структура управляемой формы может быть изменена пользователем. Ну, это так, для тех кто не знает.
|
|||
33
Гений 1С
гуру
16.01.22
✎
12:46
|
(32) Это вы к чему, КЭП?
|
|||
34
pechkin
16.01.22
✎
12:50
|
(32) что такое структура формы?
|
|||
35
SleepyHead
гуру
16.01.22
✎
12:57
|
(34) Наверное, имеется ввиду перенос элементов управления в другие группы/страницы, или что-то подобное.
|
|||
36
Гений 1С
гуру
17.01.22
✎
11:14
|
(34) (35) список элементов, команд, реквизитов вложенной формы, которые я вставляю в другую форму, храню всё это добро в виде структуры.
Попробовал использовать ХранилищеЗначения, но там тоже не сериализуется из-за интерфейсных элементов, так что оставил ЗначениеВСтрокуВнутр: Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент |
|||
37
pechkin
17.01.22
✎
11:23
|
чтоб быстрее работало - сохраняй и восстанавливай только те свойства, что отличаются от дефолтных
|
|||
38
pechkin
17.01.22
✎
11:25
|
для всяких вертикальных положений можно строковое представление хранить и восстанавливать
ВертикальноеПоложениеЭлемента["Авто"] |
|||
39
Гений 1С
гуру
17.01.22
✎
12:08
|
(38) это дольше, чем ЗначениеВСтрокуВнутр при сериализации. Вместо одной команды будет анализ содержимого.
|
|||
40
Гений 1С
гуру
17.01.22
✎
12:08
|
(37) там нет такого, там нужно все элементы восстановить.
|
|||
41
Гений 1С
гуру
21.01.22
✎
08:35
|
В общем, по теме докладываю, что убрал из разбора те элементы, которые создаются платформой автоматически, скорость отрисовки формы увеличилась в 2 раза, раньше она на попытках-исключение работала, сейчас убрал все попытки, и так хорошо без ошибок создает элементы.
При этом конечно, десериализация занимает немного времени. жаль, конечно, что нельзя сразу бинарник в структуру заколошматить, но что поделать, это 1С а не С |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |