Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Есть ли способ нормально (де)сериализовать данные в 1с на клиенте?

Есть ли способ нормально (де)сериализовать данные в 1с на клиенте?
Я
   Fragster
 
26.01.21 - 12:43
И чтобы веб клиенте тоже работало?
   Asmody
 
1 - 26.01.21 - 12:46
через xml/json?
   acht
 
2 - 26.01.21 - 12:47
(0) Десериализовать из чего? Из двоичных данных?
   Fragster
 
3 - 26.01.21 - 12:48
(1) не работает на клиенте
   Fragster
 
4 - 26.01.21 - 12:48
(2) из строки
   Fragster
 
5 - 26.01.21 - 12:50
кстати, из-за этого пришлось воспользоваться подходом, похожим на Как сериализовать ссылку в XML?, только тссс :)
код, конечно, другой, но блин.
Для РегистрНакопленияКлючЗаписи, например, не  подходит, а надо
   ДенисЧ
 
6 - 26.01.21 - 12:50
ЗаписьXML (XMLWriter)

Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
   Fragster
 
7 - 26.01.21 - 12:51
(6) да, веб клиент пролетает
   Fragster
 
8 - 26.01.21 - 12:59
Вот такой гомункул:

        #Если ВебКлиент Тогда

            ДесериализованныеДанные = ДесериализоватьДанныеНаСервере(Данные);
        #Иначе

            ДесериализованныеДанные = ДесериализоватьДанные(Данные);
        #КонецЕсли


&НаСервереБезКонтекста
Функция ДесериализоватьДанныеНаСервере(Данные)
    Возврат ДесериализоватьДанные(Данные);
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ДесериализоватьДанные(Данные)
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(Данные);
    Возврат ПрочитатьXML(Чтение);
КонецФункции

Мне не нравится (
   fisher
 
9 - 26.01.21 - 13:01
Хм... И действительно - с веб-клиентом проблема.
   fisher
 
10 - 26.01.21 - 13:03
Ну, что тут сказать... Нет ножек - нет варенья.
   acht
 
11 - 26.01.21 - 13:05
(5) > РегистрНакопленияКлючЗаписи
Не выгорит. У этого объекта нет конструктора в веб клиенте, ты новый экзампляр вообще никак не создашь. Получай с сервера.
   acht
 
12 - 26.01.21 - 13:07
(11)+ Ну и это уже совсем не "примивный тип". Для примивных можно через полехтмлдокумента извратится, если очень уж надо.
   Garykom
 
13 - 26.01.21 - 13:09
Для примитивных типов проще свою сериализацию наваять
   Garykom
 
14 - 26.01.21 - 13:09
(13)+ или ВК для веб-клиента, которые расширения для браузеров
   fisher
 
15 - 26.01.21 - 13:11
(14) Кгм...
   fisher
 
16 - 26.01.21 - 13:13
(12) > полехтмлдокумента?
Это что за зверь и как через него извратиться?
   acht
 
17 - 26.01.21 - 13:14
(14) Микросервис же. На Го. Не?
   fisher
 
18 - 26.01.21 - 13:15
А, блин. HTML!
Но все равно не пойму, как он поможет.
   H A D G E H O G s
 
19 - 26.01.21 - 13:15
(0) Напиши на партнерке предложение, а я буду тебе говорить, что ну это можно сделать на сервере. Ну как с множественным отбором для НаборовЗаписей.
   H A D G E H O G s
 
20 - 26.01.21 - 13:16
(17) Как с вами связаться?
   acht
 
21 - 26.01.21 - 13:17
(16) Положить на форму полехтмл, для него будет использоваться инстанс текущего браузера в iframe. Подергать его javascript движок, статей море.
Но в (8) куда меньшее зло
   acht
 
22 - 26.01.21 - 13:17
(20) Я ж письмо писал, ответа так и не получил. Попало в спам?
   H A D G E H O G s
 
23 - 26.01.21 - 13:19
(22) Сейчас все проверил и Входящие и Спам, ничего нет.
Скинь плиз еще раз письмо на liveups@yandex.ru
   fisher
 
24 - 26.01.21 - 13:20
(21) Каким образом браузерный js поможет с одинэсной сериализацией/десмериализацией? Только лишь как более мощный инструмент ручной реализации? Данунах.
   acht
 
25 - 26.01.21 - 13:23
(24) Ты уж определись "примитивные типы", как написано в заголовке темы, или объекты 1С.
   Fragster
 
26 - 26.01.21 - 13:23
(19) ты обиделся, чтоли?
   Fragster
 
27 - 26.01.21 - 13:25
(25) ну вот ОповеститьОбИзменении, например, в веб клиенте есть, РегистрХХХКлючЗаписи ему подсунуть можно, а вот как его на этом самом клиенте получить из строки?
   H A D G E H O G s
 
28 - 26.01.21 - 13:27
(26) Ты давно скайп читал? Нет конечно, просто иронизирую, что ты постоянно играешь за адвоката дьявола. Пусть работают, сидят в своих 1С, штаны протирают :-)
   Fragster
 
29 - 26.01.21 - 13:28
в воскресенье за компом был где он норм работает. а на мобилке сука вылетает :(
   Fragster
 
30 - 26.01.21 - 13:43
 
 Рекламное место пустует
   H A D G E H O G s
 
31 - 26.01.21 - 13:49
(30) Ну воооот! Ты движешься в правильном направлении.
   acht
 
32 - 26.01.21 - 13:50
(23) Скинул. На другие ящики доходит, на яндексе, правда, не проверял.
   acht
 
33 - 26.01.21 - 13:51
(27) > как его на этом самом клиенте получить из строки

Из строки - никак. Взять уже существующий, приехавший с сервера, например как иденфтиикатор строки динамического списка - запросто.
   Fragster
 
34 - 26.01.21 - 13:54
(33) проблема в том, что он с другого сеанса прилетает в ВК, ВК передает по сети в сериализованном виде только.
   Fragster
 
35 - 26.01.21 - 13:54
прямо в клиента
   Fragster
 
36 - 26.01.21 - 13:55
делаю нормальный Оповестить и ОповеститьОбИзменении. Ну и заодно плюхи типа уведомление о звонке на астер прям в 1с без тормозов и прочее
   Fragster
 
37 - 26.01.21 - 13:55
сообщения в чаты с сайта, мгновенно прилетающие менеджеру
   acht
 
38 - 26.01.21 - 14:03
(34) Функциональную форму Новый пробовал?
   H A D G E H O G s
 
39 - 26.01.21 - 14:09
(32) Нет, не пришло. Короче, пофиг, работа не интересует?
   acht
 
40 - 26.01.21 - 14:13
(39) Зависит от. Давай последнюю попытку - на nname935@aol.com напиши =)
   H A D G E H O G s
 
41 - 26.01.21 - 14:38
(40) Написал
   ДедМорроз
 
42 - 26.01.21 - 15:13
А разве значение в строку внутр уже в web-клиенте перестало работать?
   ДедМорроз
 
43 - 26.01.21 - 15:15
Потом,web-клиент,это страница html и там только строки.
   H A D G E H O G s
 
44 - 26.01.21 - 15:15
(42) Оно и в тонком уже не работает
   fisher
 
45 - 26.01.21 - 15:16
(42) А начинало? Не говоря уже о том, что deprecated/
   LoneBull
 
46 - 26.01.21 - 16:46
(0) Конструктор на клиенте можно вызвать через функциональную форму новый:

Новый(<Тип регистра>, <Массив параметров для конструктора>)
(раньше это было в СП, но потом некоторые товарищи это оттуда вырезали т.к. на это проверка конфигурации ругается, а вырезать из СП проще чем чинить)

Попробовал (на демо конфигурации)

ПараметрыКонструктора = Новый Массив;
ПараметрыКонструктора.Добавить(Новый Структура("Период, Валюта", Период, Валюта));
А = Новый(Тип("РегистрСведенийКлючЗаписи.КурсыВалют"), ПараметрыКонструктора);

работает
   fisher
 
47 - 26.01.21 - 17:05
(46) Слава богу, за моим СП "некоторые товарищи" не приходили.
   Cthulhu
 
48 - 26.01.21 - 17:12
(46): ну они так ясно зачем сделали, чтобы на клиенте низя было слепить то что сериализатор не осилит. например, полноценную ТЗ на клиенте типа ОписаниеТипа = Новый ОписаниеТипов("ТаблицаЗначений"); ТЗ = Новый(ОписаниеТипа.Типы()[0]);
   Garykom
 
49 - 26.01.21 - 17:22
Меня больше всего удивляет какого х на веб-клиенте нету HTTPЗапрос на WebКлиенте под 8.3?
   sikuda
 
50 - 26.01.21 - 17:32
(49) Кросс-доменные запросы не такая простая вещь - https://learn.javascript.ru/xhr-crossdomain
   Garykom
 
51 - 26.01.21 - 17:35
(50) хотя бы к тому же домену к другим ресурсам же
или через свое расширение 1Сное для браузеров реализовать хоть кроссдоменные
   sikuda
 
52 - 26.01.21 - 17:41
(51) Расширением для браузера 1С сделала чтобы лучше воровать данные с локального компьютера (все для удобства пользователей)
А к тому-же домену есть функции работы с базой 1С НачатьПомещениеФайловНаСервер() ;)
   Fragster
 
53 - 26.01.21 - 18:21
(46) а то, что для этого структура нужна, для которой нормальной сериализации опять же не завезли?
   Fragster
 
54 - 26.01.21 - 18:22
пока что веб клиенту придется ходить на сервер.
теперь осталось нормальную компиляцию ВК под всю хурму настроить (там cmake, да еще и с конаном)
   ДедМорроз
 
55 - 28.01.21 - 08:15
(51) там проблема в том,что у браузера общее хранилище ключей cookie,что накладывает серьезные ограничения на весь функционал,т.к.в случае разрешения выполнения таких запросов будут пересечения с уже открытыми сеансами.
Расширение - это ещё более печальная история,т.к.оно применяется к браузеру,а не к отдельной странице в нем.
   Вафель
 
56 - 28.01.21 - 09:08
(55) у браузера есть локал сторадж, а также локальная бд
   Fragster
 
57 - 28.01.21 - 10:19
(56) оно тоже на весь браузер. можно в переменных скрипта страниц все хранить
   ДедМорроз
 
58 - 28.01.21 - 21:27
У браузера есть кеш,который позволяет при правильном использовании не передавать повторно данные.
Остальные фокусы с хранением - это только ненужное усложнение.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.