![]() |
|
Как работать с методами, недоступными на web-клиенте? | ☑ | ||
---|---|---|---|---|
0
Crush
30.05.18
✎
17:13
|
Всем привет!
В глобальном модуле держу процедуры и функции, доступные на клиенте и на сервере, что б проще вызывать. Например функция глобального контекста ПрочитатьJSON() используется в одной из процедур глобального модуля. В веб-клиенте эта функция недоступна и загрузка 1С валится с ошибкой. &НаСервере Функция jsonЗначениеВстрокуНаСервере(зн) Экспорт зп = Новый ЗаписьJSON; зп.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет)); ЗаписатьJSON(зп, зн); Возврат зп.Закрыть(); КонецФункции Функция jsonЗначениеВстроку(зн) Экспорт #Если ВебКлиент тогда Возврат jsonЗначениеВстрокуНаСервере(зн); #Иначе зп = Новый ЗаписьJSON; зп.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет)); ЗаписатьJSON(зп, зн); Возврат зп.Закрыть(); #КонецЕсли КонецФункции Конструкции такого типа лепить везде не хочется. Может есть какой способ попроще? |
|||
1
hhhh
30.05.18
✎
17:21
|
(0) "В глобальном модуле держу процедуры и функции, доступные на клиенте и на сервере"
выкинь это своё ноу-хау, и сразу всё устаканится. |
|||
2
Crush
30.05.18
✎
17:29
|
(1) А поподробнее?
Есть метод платформы ЗаписатьJSON(). Он доступен на клиенте. Но недоступен в веб-клиенте. Для веб-клиента писать отдельный код? Или всегда дёргать сервер, когда нужно выполнить ЗаписатьJSON()? Я не знаю как правильно это организовать, потому и спрашиваю. Два раза держать одну процедуру - ерунда получатся. Дёргать сервер с клиента без надобности - тоже фигня какая то.. |
|||
3
Crush
30.05.18
✎
17:54
|
Нашел статью, с такими же извращениями, что и у меня:( неужели нет человеческих решений?
http://pro1c.org.ua/index.php?showtopic=31919 &НаКлиенте Функция СериализоватьВJSON(СериализуемыйОбъект) #Если ВебКлиент Тогда СтрокаJSON = СериализоватьВJSONНаСервере(СериализуемыйОбъект); #Иначе ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); НастройкиСериализации = Новый НастройкиСериализацииJSON(); НастройкиСериализации.СериализовыватьМассивыКакОбъекты = Ложь; ЗаписатьJSON(ЗаписьJSON, СериализуемыйОбъект, НастройкиСериализации, "ПреобразованиеВJSON", ЭтотОбъект); СтрокаJSON = ЗаписьJSON.Закрыть(); #КонецЕсли Возврат СтрокаJSON; КонецФункции &НаСервереБезКонтекста Функция СериализоватьВJSONНаСервере(СериализуемыйОбъект) ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); НастройкиСериализации = Новый НастройкиСериализацииJSON(); НастройкиСериализации.СериализовыватьМассивыКакОбъекты = Ложь; ЗаписатьJSON(ЗаписьJSON, СериализуемыйОбъект); // ЗаписатьJSON(ЗаписьJSON, СериализуемыйОбъект, НастройкиСериализации, "ПреобразованиеВJSON", ЭтотОбъект); // // ЭтотОбъект недоступнен в безконтекстном вызове, поэтому нужно либо поместтить эту функцию в общий модуль, // либо изменить директиву компиляции в &НаСервере СтрокаJSON = ЗаписьJSON.Закрыть(); Возврат СтрокаJSON; КонецФункции |
|||
4
hhhh
30.05.18
✎
17:59
|
(2) ну, сервер с клиента дергается миллионы раз. До фанатизма не доходите. Это обычная ситуация.
|
|||
5
Crush
30.05.18
✎
18:40
|
Мда.. Пришел к выводу, что для работы с json и с сериализатором xdto в веб-клиенте нужно будет писать отдельные процедуры с вызовом сервера. Глядишь в дальнейшем получится их заменить на клиентские (с использованием javascript), но когда это будет..?:) пока сервер подёргаю:)
Спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |