|
Настройки компоновщика слетают при переходе с сервера на клиент | ☑ | ||
---|---|---|---|---|
0
skormgm
15.01.24
✎
15:05
|
Привет всем! Прошу помочь по возможности. Программно определяю настройки компоновщика (обычные и пользовательские) в обработчике формы "ПриСозданииНаСервере()". Ставлю точку останова в конце обработчика, проверяю - все хорошо. Но в обработчике "ПриОткрытии()" (на клиенте) настройки становятся пустыми (и обычные и пользовательские). Что я не так делаю?
|
|||
1
mikecool
15.01.24
✎
15:22
|
типовая?
|
|||
2
stopa85
15.01.24
✎
15:22
|
(0) нужно сериализовать настройки в xml, передать xml на клиента и там загрузить.
Такой нужно танец выполнять при передачи настроек с клиента на сервер и обратно Причин не знаю) |
|||
3
stopa85
15.01.24
✎
15:24
|
Хотя в случае с "ПриОткрытии" проще в этой процедуре и задать их (подтянув необходимое с сервера)
|
|||
4
skormgm
15.01.24
✎
15:29
|
(1) Нет. Свой внешний отчет.
|
|||
5
skormgm
15.01.24
✎
15:31
|
(3) Хотел сделать "по красоте", но видимо действительно придется в обработчике "ПриОткрытии()" определять.
|
|||
6
skormgm
15.01.24
✎
15:34
|
(2) Если действительно при переходе с сервера на клиент (и обратно) настройки слетают - это хорошая новость. Смирюсь и буду определять на клиенте (3).
|
|||
7
Fedor-1971
15.01.24
✎
15:54
|
(6) Бе таким быть нелюбопытным, сделай реквизит формы Фильтр с типом КомпоновщикНастроекКомпоновкиДанных
Дальше инициализируй его вот так: СхемаКомпоновки = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет"); // это для внешней обработки, если она интегрирована в конфигурацию, то просто получи макет по имени АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(СхемаКомпоновки , УникальныйИдентификатор); ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВоВременномХранилище); Фильтры.Инициализировать(ИсточникНастроек); Фильтры.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию); |
|||
8
Fedor-1971
15.01.24
✎
15:56
|
7+ будет тебе счастье, ничего не слетит при беготне на клиент и обратно
Если очень хочется, то можешь выдать пользователю поле на форму, пусть поиграется с выборками |
|||
9
Fedor-1971
15.01.24
✎
15:59
|
(2) Вовсе не нужно, просто инициализируем через Временное хранилище т.к. оно живёт пока открыта форма
Типа, получается, что мы создали уникальные настройки на время жизни формы |
|||
10
stopa85
15.01.24
✎
16:07
|
(9) а во временное хранилище ляжет xml. Просто не явно.
|
|||
11
Fedor-1971
15.01.24
✎
16:10
|
(10) таки, поместим объект 1С СхемаКомпоновки, бо не смысл его конвертировать в XML
|
|||
12
stopa85
15.01.24
✎
16:15
|
(11) если я не ошибаюсь, во временное хранилище можно поместить то, что сериализуется. И платформа сериализует этот Объект. Т.е. Превратит в xml.
|
|||
13
Fedor-1971
15.01.24
✎
16:20
|
(12) Не совсем: положить можно, что хочешь, только получить это "что хочешь" на клиенте не всегда возможно, например, ДокументОбъект будет лежать в хранилище, но на клиенте его не достать
|
|||
14
stopa85
15.01.24
✎
16:22
|
(13) ЧтениеXML тоже можно?
|
|||
15
Fedor-1971
15.01.24
✎
16:25
|
(14) Не проверял, но, смысл хранилища - чего-то сохранить для использования.
По идее и оный можно сохранить между вызовами сервера, типа обрабатывали, выяснили, что есть проблема, прячем в хранилище, бежим на клиент узнать "что делать?" у пользователя и возвращаемся для дообработки |
|||
16
stopa85
15.01.24
✎
16:29
|
(15) ЧтениеXML - нельзя, потому что оно не сериализуется. ДокументОбъект сериализуется, имеет свое представление в xml, - поэтому можно.
|
|||
17
Fedor-1971
15.01.24
✎
17:14
|
(16) Чёй-то мне думается, что ДокументОбъект существует только на сервере, на клиент ни как приехать не может, а вот ЧтениеXML можно использовать на клиенте (в СП так написано)
|
|||
18
skormgm
16.01.24
✎
07:38
|
Проблему решил следующим способом. Создал реквизит формы "КомпоновщикНастроекКомпоновкиДанных1" с типом "КомпоновщикНастроекКомпоновкиДанных" (как рекомендовано в (7)). Но далее удалось сделать проще.
В обработчике "ПриСозданииНаСервере()" к уже имеющемуся коду (где были программно инициализированы настройки) добавил: НастройкиКомпоновки = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновки); КомпоновщикНастроекКомпоновкиДанных1.ЗагрузитьНастройки(НастройкиКомпоновки); А в обработчик "ПриОткрытии()" добавил строку: Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(КомпоновщикНастроекКомпоновкиДанных1.Настройки); |
|||
19
Fedor-1971
16.01.24
✎
09:05
|
(18) Ну, на вкус и цвет все фломастеры разные, сделал так, значит так
По факту ты инициализировал настройки отчёта, а не свой реквизит формы и упустил факт создания хранилища значения (наши упорные обсуждения со stopa85) Сделал и молодец. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |