Вход | Регистрация
 

Как сериализовать структуру в конфу так, чтобы она максимально быстро десериализовывалась?

Как сериализовать структуру в конфу так, чтобы она максимально быстро десериализовывалась?
Я
   Гений 1С
 
13.01.22 - 11:37
Есть настройки формы в виде структуры, я их готовлю на этапе разработки (тиражное решение).
В продакшне хочу быстро эту структуру восстановить из макета в конфигурации.
Вопрос - как максимально быстро это сделать.
Так то понятно, что можно использовать текстовый JSON или даже ЗначениеВСтрокуВнутр, но хочется чего-нибудь бинарного.
   acht
 
1 - 13.01.22 - 11:43
ХранилищеЗначений, гггеня.
   H A D G E H O G s
 
2 - 13.01.22 - 11:46
Никак
   fisher
 
3 - 13.01.22 - 11:48
Ума не приложу, где критична "максимально быстрая десериализация преднастроек".
ИМХО, как не положи - скорость будет достаточна. Поэтому ложить надо "как удобнее", а не "как быстрее".
(2) Ему не сохранять. Ему читать преднастройки.
   Галахад
 
4 - 13.01.22 - 11:54
"хочется чего-нибудь бинарного" - секреты что-ли?
   H A D G E H O G s
 
5 - 13.01.22 - 11:56
Хранилище значений - это та же ЗначениеВСтрокуВнутр
Получать из макета гораздо дольше, чем из константы или РС. Поэтому лучше пытаться вытащить из константы, если в ней пусто - из макета, и закешировать в константу. Если планируется обновлять - при обновлении затираем константу. А лучше webservice на Goo, конечно же. Конечно же WebService. Да.
   Гений 1С
 
6 - 13.01.22 - 11:57
(3) ну хорошо, в структуре я храню добавляемые в форму элементы (вложенная форма). Мне нужно чтобы вложенная форма максимально быстро отрисовывалась при открытии формы.
   fisher
 
7 - 13.01.22 - 11:58
(5) Вангую, что "тиражное решение" представляет собой обработку.
   acht
 
8 - 13.01.22 - 11:59
(5) > это та же ЗначениеВСтрокуВнутр
Зато сжатая
   Гений 1С
 
9 - 13.01.22 - 11:59
(1) (5) Я не могу хранить значение типа ХранилищеЗначения в базе, могу хранить только бинарный файл в макете, но как из него структуру получить, хз...
   Гений 1С
 
10 - 13.01.22 - 12:00
(7) расширение.
   pechkin
 
11 - 13.01.22 - 12:00
Для однократной загрузки вообще не важно
   Гений 1С
 
12 - 13.01.22 - 12:00
(9) т.е. не в базе а в CFE-файле, мне надо хранить эту структуру в файле расширения.
   Гений 1С
 
13 - 13.01.22 - 12:01
(11) а с чего ты взял что у меня однократная загрузка? Хотя может там десериализация из ЗначениеВСтрокуВнутр и быстро происходит, хз.
   acht
 
14 - 13.01.22 - 12:01
Хтоническая хрень из Коллеги, мне поручили сделать вложенную форму, есть опыт? пытается вырваться наружу
   Гений 1С
 
15 - 13.01.22 - 12:01
(4) Секреты - это крипта.
(14) она уже давно реализована, сейчас речь об ее ускорении.
   pechkin
 
16 - 13.01.22 - 12:02
(6) ты уверен что именно на чтении макета основной затык?
   H A D G E H O G s
 
17 - 13.01.22 - 12:03
(14)бля. Жгите ее вогнемэтами!
   fisher
 
18 - 13.01.22 - 12:03
Оптимизировать ненаписанный код - это сильно.
Ты напиши сначала и замеры сделай, если не понравится.
"Доставание" переписать там если что - будет раз плюнуть.
   fisher
 
19 - 13.01.22 - 12:06
(15) Т.е. замер производительности показывает что тормоза на "доставании"? Ну, покажи результаты замеров, что ли. Интересно.
   Гений 1С
 
20 - 13.01.22 - 12:27
(19) ок, проверю. Пока что у меня кодом форма разбирается, это долго. Посмотрю, если сохранить разбор в конфигурации, будет ли долго.
   FIXXXL
 
21 - 13.01.22 - 12:28
   Гений 1С
 
22 - 13.01.22 - 12:47
(21) Это каким боком сюда?
   FIXXXL
 
23 - 13.01.22 - 13:16
(22) кэширование, что бы не читать макет каждый раз
   Гений 1С
 
24 - 13.01.22 - 13:47
(23) это понятно, но и самый первый раз занимает какое-то время. можно конечно его в фоне дернуть, хз
   Гений 1С
 
25 - 13.01.22 - 13:59
Хотя семен семеныч, можно хранилище же сериализовать в XML: v8: Сериализация Хранилища Значений
Тогда в текстовый макет закидываю XML с сериализованным хранилищем и из него получаю значение хранилища, из него - искомую структуру. Бинго!
Можно и не текстовый макет, а бинарный файл XML, но не хочу издеваться над разработчиками, чтобы они лишний раз в файл скидывали XML
   Гений 1С
 
26 - 14.01.22 - 16:43
возможна сериализация только ЗначениеВСтрокуВнутр, т.к. все сериализации XML ругаются на серверный тип 'ВертикальноеПоложениеЭлемента' (ну и на другие подобные).

Десериализация в принципе быстрая из ЗначениеВСтрокуВнутр, занимает лишь 3% от времени отрисовки вложенной формы.

И все же чую, что десериализация неоптимальная, хотелось бы сразу струтуру получать в приложении. Но думаю, что тут уж ничего не сделаешь.

Как вариант можно еще структуру в хранилище значения запихнуть и уже из него десериализовать, не знаю, надо потестить, насколько это быстро. Потестирую - напишу
   mistеr
 
27 - 14.01.22 - 18:15
(26) Вспомни молодость платформы, все хранится в табличном виде в табличных макетах.

Надеюсь, ты не будешь спорить, что табдок читается достаточно быстро?
   VladZ
 
28 - 14.01.22 - 18:37
(0) Я таки не понял, зачем это нужно.
   Кирпич
 
29 - 16.01.22 - 09:59
(28) Мультфильмы наверное делает. Он же у нас, последнее время, творчеством занимается.
   Кирпич
 
30 - 16.01.22 - 10:02
про кнопочку Сформировать и волшебника Уф.
 
 
   Гений 1С
 
31 - 16.01.22 - 10:02
(28) это нужно для вложенных форм, поищи в теме, там прописано зачем нужно иметь возможность быстро восстановить структуру
   acht
 
32 - 16.01.22 - 10:12
Кстати, структура управляемой формы может быть изменена пользователем. Ну, это так, для тех кто не знает.
   Гений 1С
 
33 - 16.01.22 - 12:46
(32) Это вы к чему, КЭП?
   pechkin
 
34 - 16.01.22 - 12:50
(32) что такое структура формы?
   SleepyHead
 
35 - 16.01.22 - 12:57
(34) Наверное, имеется ввиду перенос элементов управления в другие группы/страницы, или что-то подобное.
   Гений 1С
 
36 - 17.01.22 - 11:14
(34) (35) список элементов, команд, реквизитов вложенной формы, которые я вставляю в другую форму, храню всё это добро в виде структуры.

Попробовал использовать ХранилищеЗначения, но там тоже не сериализуется из-за интерфейсных элементов, так что оставил ЗначениеВСтрокуВнутр:
Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент
   pechkin
 
37 - 17.01.22 - 11:23
чтоб быстрее работало - сохраняй и восстанавливай только те свойства, что отличаются от дефолтных
   pechkin
 
38 - 17.01.22 - 11:25
для всяких вертикальных положений можно строковое представление хранить и восстанавливать
ВертикальноеПоложениеЭлемента["Авто"]
   Гений 1С
 
39 - 17.01.22 - 12:08
(38) это дольше, чем ЗначениеВСтрокуВнутр при сериализации. Вместо одной команды будет анализ содержимого.
   Гений 1С
 
40 - 17.01.22 - 12:08
(37) там нет такого, там нужно все элементы восстановить.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.