Архитектура управляемых форм

1. zelenprog 25.05.24 11:33 Сейчас в теме
Добрый день!

Прочитал очень хорошую статью про управляемые формы "Под капотом управляемых форм":
https://infostart.ru/1c/articles/198766/

Управляемые формы - это по сути веб-приложение. Верно?

Меня заинтересовал "теоретический" вопрос.
Хочется лучше понять и разобраться с "внутренней" структурой (архитектурой), на основе которой построено это 1С-веб-приложение (управляемая форма).
На какой веб-архитектуре реализована работа управляемых форм?

В статье "Современные архитектуры фронт-энда" есть вот такая картинка:
https://habr.com/ru/articles/500072/

Является ли эта картинка схемой, правильно отображающей работу управляемой формы?
Если нет, то какая схема более правильная?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 25.05.24 20:01 Сейчас в теме
(1)
Управляемые формы - это по сути веб-приложение. Верно?

о общем нет.
Есть веб клиент, который можно с натяжкой так назвать. Но в общем это не веб приложение.
4. zelenprog 26.05.24 09:46 Сейчас в теме
(2)
Есть веб клиент, который можно с натяжкой так назвать. Но в общем это не веб приложение.


Не совсем понял :(
Можно поподробнее объяснить?

(2)
Есть веб клиент, который можно с натяжкой так назвать...


Где есть веб-клиент?
Почему его можно так назвать только с натяжкой? Чем он отличается от полноценного веб-клиента?

(2)
...Но в общем это не веб приложение.


В чем отличие управляемых форм от веб-приложения?
Ведь у УФ есть клиент и есть сервер. По сути это очень похоже на веб-приложение, в котором есть клиентская часть (браузер + фронт-енд) и серверная часть (бэк-енд).
6. user1880116 26.05.24 11:11 Сейчас в теме
(4)
Ведь у УФ есть клиент и есть сервер. По сути это очень похоже на веб-приложение, в котором есть клиентская часть (браузер + фронт-енд) и серверная часть (бэк-енд).
Ложная аналогия подобна котенку с дверцей.

Вот у тебя есть SQL сервер и Management Studio. Ну или Oracle и SQL Developer. Клиент-сервер? Клиент-сервер, да еще какой. Веб-приложение что ли?
7. zelenprog 27.05.24 08:37 Сейчас в теме
(6)
Вот у тебя есть SQL сервер и Management Studio. Ну или Oracle и SQL Developer. Клиент-сервер? Клиент-сервер, да еще какой. Веб-приложение что ли?

Я готов согласиться с тем, что УФ это не клиент-сервер.

Но хотел бы услышать аргументы.
Как внутри "устроено" взаимодействие клиентской и серверной части УФ? По каким критериям УФ отличается от веб-приложения?
Вот когда будет понимание по этим вопросам, тогда можно будет судить чем является УФ.
8. user1880116 27.05.24 09:09 Сейчас в теме
(7)
Я готов согласиться
Но хотел бы услышать аргументы.
Вот иди-ка ты на партнерский, и выноси мозг разработчикам платформы там. Там люди квалифицированные, они тебя направят.

Вот когда будет понимание по этим вопросам, тогда можно будет судить чем является УФ.
Боженьки, пафосно-то как.
9. zelenprog 27.05.24 09:32 Сейчас в теме
(8)
Вот иди-ка ты на партнерский, и выноси мозг разработчикам платформы там. Там люди квалифицированные, они тебя направят.

На партнерский просто так не попадешь :(

(8)
Боженьки, пафосно-то как.

Никакого пафоса.
Просто интересно. Думаю, что понимание "внутреннего" устройства УФ поможет правильно использовать и писать код.
14. starik-2005 3080 28.05.24 15:46 Сейчас в теме
(9)
Думаю, что понимание "внутреннего" устройства УФ поможет правильно использовать и писать код.
Кривое и косое нечто, которое научились как-то с горем пополам тренслировать в тонкий клиент и вебку. В вебке 1С-ный язык транслируется в джаваскрипт, ну или может намутили онлайн-интерпретатор на вебасме, но что-то сомневаюсь.
Суть УФ - данные форм вместо таблиц и прочих серверных штук. Они в контекстных вызовах перемещаются между клиентом и сервером, чем доставляют пользователям неудобства ожиданием. Совсем дикие 1С-неги умудряются сто раз сервер дернуть за один клиентский вызов, чем еще сильнее неудобствами портят жись пользователей, но "опытные" ловят лулзы на этом, заморачиваясь часто куда больше, чем следовало бы. Наверное в целом это все, что можно знать про УФ.
27. user1880116 29.05.24 10:40 Сейчас в теме
(14)
В вебке 1С-ный язык транслируется в джаваскрипт, ну или может намутили онлайн-интерпретатор на вебасме, но что-то сомневаюсь.
Ну теперь включай свою бурную фантазию и выдумывай объяснения как оно работает с клиентскими модулями, поставляемыми без исходного кода, сомневающийся.
28. starik-2005 3080 29.05.24 11:37 Сейчас в теме
(27)
поставляемыми без исходного кода
Ну значет там на джаваскрепте напилено что-то типа интерпретатора байт-кода, как в мобильном приложении. Может в вебасм скомпилили, о чем я выше, кстати, говорил, хоть и с сомнениями (до сих пор сомневаюсь, т.к. в вебасме джамп есть, а в 1С-е его из веб-клиента выпилили).
PS:
В языке JavaScript имеется возможность помечать инструкции именами, благодаря чему в операторах break и continue можно явно указывать, к какому циклу или к какой другой инструкции они относятся.
29. user1880116 29.05.24 11:54 Сейчас в теме
(28) Если бы ты не был ленивым, то был бы подписан на хабре на 1С. Там 1Сники про это прямо пишут: https://habr.com/ru/companies/1c/articles/315414/
30. starik-2005 3080 29.05.24 14:06 Сейчас в теме
(29) Так если бы и ты не был ленивым, то прочитал бы это:
Реализация всего вышеописанного на JavaScript – дело непростое. Возможно, веб-клиент 1С – одно из самых больших client-side приложений, написанных на JavaScript – около 450.000 строк. Мы активно используем в коде веб-клиента объектно-ориентированный подход, упрощающий работу с таким большим проектом.
О чем, собственно,, я и говорил.
ЗЫ: статья 16-го года - 8 лет назад. 1С ничего не поменяла? Вряд ли. Так что статья устаревшая.
31. user1880116 29.05.24 14:24 Сейчас в теме
(30)
Так что статья устаревшая.
Браво!
32. starik-2005 3080 29.05.24 16:06 Сейчас в теме
(31) И что тебя так обрадовало? То, что я изначально говорил, что они транслятор или интерпретатор написали на джаваскрипте? Или ты первое сообщение прочитал на тот 1%, который не попал в прочитанную тобой статью, написанную 8 лет назад? Прям вот чувствуется этодроугинчик с либеральным следом.
33. user1880116 29.05.24 17:39 Сейчас в теме
(32)
этодроугинчик с либеральным следом.
Ух ты!
Продолжай, пожалуйста! Я восхищен диковинными изгибами твоей... гм, имперской мысли.
34. starik-2005 3080 29.05.24 20:52 Сейчас в теме
(33)
Я восхищен диковинными изгибами
Мне девочки нравятся, так что мимо.
35. user1880116 30.05.24 07:39 Сейчас в теме
(34)
Мне девочки нравятся
Ну, судя по всему, тебе политика нравится куда больше, чем девочки.
36. starik-2005 3080 30.05.24 11:22 Сейчас в теме
(35)
политика
Это как в фильмах: "- Дай определение политики":
Поли́тика (др.-греч. πολιτική — «государственная деятельность», от πόλις — «город, государство») — одна из сфер человеческой деятельности, ...
37. user1880116 30.05.24 11:55 Сейчас в теме
(36) Это как в жизни:
Де́вочка — ребёнок женского пола.
38. starik-2005 3080 30.05.24 17:20 Сейчас в теме
39. spacecraft 30.05.24 17:59 Сейчас в теме
(38) среднего пола?
Ну, у них там десятки гендерной идентичности :)
40. starik-2005 3080 30.05.24 18:04 Сейчас в теме
(39) Ну ты там сам реши, пола или рода.
41. user1880116 30.05.24 19:42 Сейчас в теме
(38)
У немцев - среднего.
Да ты и нерусский вдобавок ко всему еще...
3. SlavaKron 26.05.24 07:32 Сейчас в теме
(1) Есть статья "Как работает серверный вызов в 1С" – https://infostart.ru/1c/articles/682305/ для описания работы управляемой формы тоже подходит. Там используется хорошая аналогия с выдачей книг в библиотеке.
5. zelenprog 26.05.24 10:00 Сейчас в теме
(3)
Есть статья "Как работает серверный вызов в 1С"....

Хорошая статья, спасибо.
Там описывается клиент-серверное взаимодействие на "высоком уровне".

Кроме этого, меня интересует еще и "внутреннее" устройство управляемой формы, то есть более подробное взаимодействие на более низком уровне.
Например, в этой статье никак не отражен тот факт, что форма присутствует и на стороне клиента и на стороне сервера.
Хотелось бы увидеть описание\схему, которая подробнее раскрывает взаимодействие этих двух "частей" управляемой формы, а также другие подробности.
10. SlavaKron 27.05.24 09:43 Сейчас в теме
(5) Да, 1С скрывает низкоуровневое устройство клиент-серверного взаимодействия УФ, но оно и не нужно. Достаточно концептуально понимать как управляемая форма работает и следовать стандартам. Например, минимизировать количество серверных вызовов, использовать бесконтекстные вызовы там, где это возможно.
форма присутствует и на стороне клиента и на стороне сервера.
На стороне сервера она присутствует только в момент серверного контекстного вызова.
Kulakov_P; MaQo; +2 Ответить
12. zelenprog 28.05.24 12:07 Сейчас в теме
(10)
На стороне сервера она присутствует только в момент серверного контекстного вызова.

Управляемая форма имеет данные, которые недоступны на клиенте, но доступны при серверных вызовах.
Кроме того, она "умеет" отслеживать изменения в данных, чтобы при серверном вызове передавать только изменения.
Чтобы эти два пункта можно было реализовать, для этого (мне кажется) на сервере нужно хранить какие-то данные. Получается, что на сервере все-таки есть "что-то", связанное с открытой формой.
Скорее всего, какие-то данные формы хранятся на сервере.
13. SlavaKron 28.05.24 14:01 Сейчас в теме
(12)
Управляемая форма имеет данные, которые недоступны на клиенте
Хорошо, какие это данные. Давайте их озвучим. Кроме ПутьКДанным элемента формы не могу вспомнить.
Кроме того, она "умеет" отслеживать изменения в данных
Вот это мы не знаем наверняка. Это как раз низкий уровень, в который 1С нам не советует лезть. Да, там есть оптимизация миграции данных клиент → сервер: вроде бы не все данные с клиента уходят на сервер, а только те, которые используются в серверном вызове (не помню уже где это читал, но больше похоже на домыслы). Безусловно, на сервере "что-то" остается после серверного вызова, это подтверждает практика, но концептуально мы должны исходить из того, что после серверного вызова на сервере ничего нет. Отталкиваться нужно от этого, так как встроенный язык не предоставляет никаких возможностей найти серверный контекст формы вне ее собственного вызова.
Просто игнорируйте это знание, считайте, что, когда управление переходит на клиент, сервер ничего не хранит о форме (кроме УИД, конечно).
15. spacecraft 28.05.24 15:58 Сейчас в теме
(13) это Объект (СправочникОбъект, ДокументОбъект и т.д.) удаляется после создания формы на сервере и создается вновь при записи.
Серверная форма живет пока жива форма.
Пример данные, не доступные на клиенте, которые хранит только северная форма: Реквизит формы типа "ДокументОбъект" и т.д.
Данные в элемент ТаблицаФормы могут подгружаться на клиент. Именно по этому не рекомендуется использовать на клиент НайтиСтроки.
16. SlavaKron 28.05.24 16:04 Сейчас в теме
(15)
Пример данные, не доступные на клиенте, которые хранит только северная форма: Реквизит формы типа "ДокументОбъект" и т.д.
Объясните подробнее, что такое ДокументОбъект в контексте УФ и почему по-вашему, он доступен только на сервере? Это про прикладной объект? – нет, он не существует вне вызова. И какой вообще смысл хранить что-то на сервере, если на клиенте всё может сильно поменяться?
18. spacecraft 28.05.24 16:22 Сейчас в теме
(16) реквизиты формы с таким типом.
И у меня есть опыт их использования.
Прикрепленные файлы:
19. SlavaKron 28.05.24 16:53 Сейчас в теме
20. spacecraft 28.05.24 17:08 Сейчас в теме
(19) что именно проверить?
https://its.1c.ru/db/metod8dev/content/3616/hdoc

Особенности работы формы с данными
Любая управляемая форма предназначена для отображения и изменения некоторых данных. Такие данные, как правило, хранятся в реквизитах формы. Совокупность этих данных (значения реквизитов формы) называется данными формы.

Т.к. данные формы доступны и на клиенте и на сервере, то основным хранилищем всех данных выступает сервер, просто потому что взаимодействие клиента и сервера инициируется только с клиента. Это означает, что в момент работы в памяти сервера находятся все данные формы, и доступ к ним осуществляется напрямую. На клиенте же имеется в общем случае частичное представление этих данных, при необходимости подгружаемое с сервера. При дальнейшей работе с формой изменения данных могут передаваться туда и/или обратно для синхронизации состояний клиента и сервера.

(17)
Для табличных частей, алгоритм работы платформы другой – изначально передается только часть строк. Далее, при обращении к остальным строкам табличных частей, они будут постепенно подчитываться с сервера. Это значит, что при открытии формы все подготовительные действия с табличными частями желательно производить на сервере. Если же аналогичные действия мы попытаемся выполнить на клиенте, то это приведет к тому, что все данные табличной части будут переданы на клиента, хотя они не требуются для отображения в форме.
21. SlavaKron 28.05.24 17:24 Сейчас в теме
(20) Хорошо, вот из приложенных цитат можно сделать вывод, что данные формы хранятся на сервере, пока форма ничего не делает? Если ответ "Да", какие возможности это вам даёт?
UPD: я в курсе, что сервер в некотором роде сохраняет версию/кеш формы, но для программирования эта информация ничтожна.
22. spacecraft 28.05.24 17:31 Сейчас в теме
(21) а это тут причем? Об этом ничего и не было сказано.
Она как минимум хранит данные, которых нет на клиенте. Тот же СправочникОбъект. Да и доступный на клиенте реквизит формы, но который не вынесен на форму и не включен флаг "использовать всегда". Но, которые могут понадобиться для вычислений на сервере.
23. SlavaKron 28.05.24 17:35 Сейчас в теме
(22) К сожалению, пока не могу проверить. Но я уверен, что серверный вызов не создает прикладные объекты, соответствующие реквизитам формы. Я признаю, что сервер, что-то хранит, вне вызова, но это низкоуровневая оптимизация, от которой нам, как программистам, ни холодно ни жарко.
25. spacecraft 28.05.24 18:08 Сейчас в теме
(23) да. тут может быть путаница из-за терминологий.
Что такое серверная форма? Если под ней понимать Данные формы, то именно так и происходит, как я описывал.
Если под ней понимать разметку для создания клиентской разметки, то это возможно и не хранится на сервере. Но про это я не скажу.
26. spacecraft 28.05.24 18:19 Сейчас в теме
(23) нашел в документации четкое определение:
https://its.1c.ru/db/pubv8devui#content:84:hdoc
Среда существования формы
Форма существует и на сервере, и на клиенте. Связь элементов формы с данными информационной базы осуществляется с помощью реквизитов формы (данные формы). Все данные, которые планируется отображать или редактировать в форме, должны быть обязательно описаны в виде реквизитов.

Процесс создания и открытия формы, отображающей объектные данные (у формы определен основной реквизит), выглядит так:

Объект считывается из базы данных на сервере.
Объект конвертируется в данные формы (создание формы на сервере).
Объект удаляется из памяти.
Данные формы передаются на клиент (создание формы на клиенте).
17. SlavaKron 28.05.24 16:07 Сейчас в теме
(15)
Данные в элемент ТаблицаФормы могут подгружаться на клиент.
Это внутренняя кухня, о которой мы не должны знать. Повторюсь, следует исходить из того, что на сервере ничего нет вне вызова.
11. gybson 27.05.24 22:41 Сейчас в теме
На архитектуре "Технологическая платформа 1С 8.*"
Оставьте свое сообщение

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