|   |   | 
| 
 | Как сериализовать структуру в конфу так, чтобы она максимально быстро десериализовывалась? | ☑ | ||
|---|---|---|---|---|
| 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С а не С | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |