Редактирование обычной формы НаКлиенте НаСервере

1. jacknk 15.02.17 21:02 Сейчас в теме
При открытии (событие может быть ПередОткрытием и ПриОткрытии) любой обычной формы происходит его настройка в соответствии с теми или иными условиями. Фактически происходит полное редактирование свойств самой формы и всех элементов. Для этого в указанных событиях вызывается процедура. Т.к. клиентские машины слабые, то обработка происходит достаточно долго и формы открываются с зависанием. Можно ли перенести изменение свойств обычной формы и всех элементов, хотя бы частично, на сервер? Проблема в том, что сама форма не сериализуемая и есть элементы которые тоже не передаются на сервер, например, отбор. Есть варианты переноса обработки на сервер или же выход в увеличении мощности клиента и оптимизации кода обработки на клиенте?
По теме из базы знаний
Найденные решения
4. spacecraft 15.02.17 23:35 Сейчас в теме
(3) частичный перевод на УФ в данном случае не поможет. Эффект будет только в тонком клиенте, а он не работает с ОФ.
А в толстом клиенте даже УФ выполняются полностью на клиенте.

Смотря что за затратные операции. Если это получение данных, или другие не связанные с формой действия, то их можно перенести на выполнение в общий серверный модуль, через промежуточный общий модуль с вызовом сервера.
Схема следующая:
ПередОткрытием - ОщийМодульВызовСервера - ОбщийМодульСервер.
Но это будет заметно, если таких переходов будет минимум. Т.е. желательно все действия выполнять за один вызов.

Но опять же, все зависит от операций, которые необходимо делать.
JonnyRonin; dj_serega; DenisCh; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 15.02.17 21:57 Сейчас в теме
(1)выход я вижу в переходе на управляемые формы.
В обычных формах нет разделения на клиент и сервер, там нет директив где и что выполнять, обычные формы это работа под толстым клиентом.
Вы не совсем до конца понимаете события и процесс открытия обычной формы, мне так кажется.
3. jacknk 15.02.17 22:26 Сейчас в теме
(2) Переписывать все на УФ никто не будет. Переход будет постепенный. А редактировать формы надо сейчас. Как вариант, выполнять не имеющие прямого обращения к форме и затратные по времени операции в общем модуле на сервере.

По поводу управляемых форм тоже не совсем понятно. Получить форму на сервере нельзя, передать тоже, какие-то изменения свойств требует обращения на сервер. Но сформировать/отредактировать управляемую форму на сервере так, чтобы на клиенте только результат (т.е. саму форму) показать не получится? Как правильно редактировать управляемые формы тогда, подскажите, пожалуйста?
4. spacecraft 15.02.17 23:35 Сейчас в теме
(3) частичный перевод на УФ в данном случае не поможет. Эффект будет только в тонком клиенте, а он не работает с ОФ.
А в толстом клиенте даже УФ выполняются полностью на клиенте.

Смотря что за затратные операции. Если это получение данных, или другие не связанные с формой действия, то их можно перенести на выполнение в общий серверный модуль, через промежуточный общий модуль с вызовом сервера.
Схема следующая:
ПередОткрытием - ОщийМодульВызовСервера - ОбщийМодульСервер.
Но это будет заметно, если таких переходов будет минимум. Т.е. желательно все действия выполнять за один вызов.

Но опять же, все зависит от операций, которые необходимо делать.
JonnyRonin; dj_serega; DenisCh; +3 Ответить
6. jacknk 16.02.17 08:29 Сейчас в теме
(4) так и придется видимо делать. Я так понимаю если переходить на управляемое приложение то и там нельзя на сервере форму редактировать? Если форму полностью рисовать программно, то это тоже только на клиенте будет возможно?
8. spacecraft 16.02.17 08:51 Сейчас в теме
(6) на УФ существует два разных контекста формы. Серверный и клиентский. Сначала форма строится на сервере. Создание формы УФ это декларативный принцип. После создания серверного контекста формы выполняется серверная процедура модуля формы ПриСозданииНаСервере. В ней можно внести коррективы в созданную форму, в том числе перестроить программно.
Затем серверный контекст формы сериализуется и передается на клиента. Где строится клиентский контекст формы, который заполняется полученными данными с сервера. Серверный контекст формы в этот момент удаляется.
В последующем, при каждом серверном вызове в модуле формы с клиента, происходит сериализация клиентского контекста формы и создание серверного контекста формы, с последующем заполнением полученных данных. Поэтому и не рекомендуются частые контекстные серверные вызовы.

Все это работает полноценно на тонком клиенте. В толстом клиенте последовательность в основном та жа, но все выполняется на клиенте.
9. kolya_tlt 88 16.02.17 09:20 Сейчас в теме
(8) серверный контекст не удаляется. удаляется из памяти объект, тот который ПриЧтенииНаСервере(ТекущийОбъект)
10. spacecraft 16.02.17 09:37 Сейчас в теме
(9) да, согласен. Сам контекст не удаляется.
11. zqzq 25 16.02.17 10:05 Сейчас в теме
(4)
А в толстом клиенте даже УФ выполняются полностью на клиенте.

Отладчик с вами не согласен. Всё там нормально на сервере выполняется.
12. spacecraft 16.02.17 10:13 Сейчас в теме
(11) хотите сказать, что процедура ПриСозданииНаСервере в Толстом клиенте УФ выполняются таки на сервере?
Можете привезти доказательства?
13. spacecraft 16.02.17 10:58 Сейчас в теме
(11) вот вам для размышления. Код модуля формы справочника:
#Если ТолстыйКлиентУправляемоеПриложение Тогда 
	
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ОбщийМодульКлиент.КлиенскаяПроцедура();
КонецПроцедуры

#КонецЕсли
Показать


ОбщийМодульКлиент это общий модуль с флагом Клиент (управляемое приложение).
И этот код работает. Ответите, почему он работает?
14. lefthander 16.02.17 11:05 Сейчас в теме
(13)Тык ведь у вопрошающего не управляемое приложение а обычное, с обычными формами.
15. spacecraft 16.02.17 11:14 Сейчас в теме
(14) а ответ в (13) был дан для (11). Что и где выполняется для УФ толстый клиент.
16. lefthander 16.02.17 11:20 Сейчас в теме
(15) да, конечно. Правда могу предположить что произошла подмена понятий, толстым клиентом обозвали обычное приложение. Хотя я могу и ошибаться.
18. zqzq 25 17.02.17 08:48 Сейчас в теме
(13) Мы сейчас про клиент-серверную базу говорим? На файловой могут быть различия.

В защиту моей версии: при замере производительности указывает явное разделение на клиент и сервер; при отключении серверного предмета отладки и при оставлении предмета отладки толстого клиента остановки на серверных модулях УФ не происходит.

Проверил ваш код
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	#Если ТолстыйКлиентУправляемоеПриложение Тогда 
	Сообщить("плплп");
	#КонецЕсли	
не выполняется он на клиент-сервере.
19. spacecraft 17.02.17 09:21 Сейчас в теме
(18) что-то упустил этот момент. Согласен, что на клиент-серверной базе это так.
На файловой все выполняется на клиенте.
20. kolya_tlt 88 17.02.17 09:24 Сейчас в теме
(19) :) боюсь спросить, а что выполняется на сервере в файловой базе?
21. spacecraft 17.02.17 09:32 Сейчас в теме
(20) в тонком клиенте (файловый вариант) сервер эмулируется. И выполнение по директивам отрабатывает. И тут два варианта:
1. Прямое подключение к файлу базы тонким клиентом. Сервер эмулируется на клиенте. Просто разделение кода в рамках одной программы на одном компьютере.
2. Подключение тонким клиентом через web-сервер. Сервер эмулируется на web-сервере. Разделение кода похожее на настоящий клиент-сервер, хоть и несколько упрощенное.
22. kolya_tlt 88 17.02.17 11:48 Сейчас в теме
5. lefthander 15.02.17 23:52 Сейчас в теме
(3)эк вы ее лихо так. Форма на сервере бесполезная сущность - это сущность для отражения представлений базы на клиенте. Уф вообще может не создаваться, ее создаст система при открытии списка или элемента или документа. Как правильно их редактировать - а зачем их редактировать? Форму надо создать и использовать для управления элементами в базе. Как то так, наверно.
7. jacknk 16.02.17 08:30 Сейчас в теме
(5)
а зачем их редактировать?
было решено реализовать "Вариант запуска" и что-то вроде "ограничение доступа" помимо ролей. Поэтому перед тем как пользователь откроет форму ее полностью редактируем: видимость, доступность, толькопросмотр, отбор, сортировка, настройки отбора и сортировки и т.д.
17. jacknk 16.02.17 11:21 Сейчас в теме
Спасибо всем за подробное описание! Стало понятнее что и как происходит. С УФ надо на практике разбираться и смотреть от конкретных параметров, которые нужно будет редактировать. Полагаю, при возникновении проблем можно отдельную тему создать.
Благодарю за помощь!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот