0. yarsort 27.05.19 09:00 Сейчас в теме

Сжатие данных в мобильном приложении 1С:Предприятие

Эту небольшую статью я планировал опубликовать у себя на сайте, чтобы такие любители мобильного приложения от 1С:Предприятие, как я, могли использовать её без дополнительно потраченных двух дней на поиски вариантов написания алгоритма.
Во-первых, хотел сказать, что я небольшой разработчик, который начинал делать свои первые шаги ещё на заре правления "Семерки". Новая платформа версии 8 была как глоток свежего воздуха - бодрящий и легко воспринимаемый организмом. Я был очень удивлен, да что сказать, до сих пор удивляюсь как элементарные вещи можно делать на 1С, и как это стремно делается на других языках программирования. Во-вторых, обилие разнообразных интерпретаций платформы позволяет развернуться на все 360 градусов, захватив своими проектами, наверное, любые ветки бизнеса.
Так вот, о небольшом нюансе работы с новой мобильной платформой я и хотел рассказать... Сам додумался, так сказать.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. script 206 27.05.19 11:02 Сейчас в теме
Понравилась переменная АйдиПользователя.
И способ рабочий даже для обмена по HTTP.
2. mevgenym 85 27.05.19 16:13 Сейчас в теме
имхо проще можно

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПолноеИмяФайлаСРасширением, "UTF-8");
ЗаписатьXML(ЗаписьXML, ХранилищеЗначения);
ЗаписьXML.Закрыть();


обратно через ПрочитатьXML

через JSON
СтруктураВыгрузки = Новый Структура("Данные", ХранилищеЗначения); //вроде должен сериализовать
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл(ПолноеИмяФайлаСРасширением, "UTF-8");
ЗаписатьJSON(ЗаписьJSON, СтруктураВыгрузки);
ЗаписьJSON.Закрыть();


минус случайно поставился, не виноватая я
3. YPermitin 5135 27.05.19 16:27 Сейчас в теме
(2) так уберите случайный минус. Статья то хорошая :)
4. yarsort 27.05.19 16:42 Сейчас в теме
(2) Вы правы, можно через XML, но я не любитель этого формата. JSON последнее время зашел мне не по-детски. Тащусь от его простоты и возможности конвертации данных из JSON в структуру с массивами и обратно. Просто и безо всяких веток и деревьев. :)
izidakg; TreeDogNight; 🅵🅾️🆇; vovaikilko; CyberCerber; +5 Ответить
5. V1V 112 27.05.19 18:03 Сейчас в теме
столько слов чтобы рассказать о параметре СжатиеДанных. Н-да... Без комментариев.
androidT1C; GreenDragon; SirStefan; Dream_kz; +4 Ответить
6. Dream_kz 93 27.05.19 18:24 Сейчас в теме
Эмм, вся статья о втором параметре объекта ХранилищеЗначения? Это есть в бесплатном курсе по разработке мобильных приложений (2014 года).

По поводу ftp, устаревший протокол, мобильная платформа прекрасно работает с webdav, можно работать через яндекс диск, или гугл драйв, одной строкой кода
8. vsesam80 27.05.19 19:59 Сейчас в теме
(6)Можете скинуть пример работы с webdav Яндекс диска? Записать у меня получилось на ЯД, а скопировать на диск никак.
9. yarsort 27.05.19 20:07 Сейчас в теме
(6)
webdav
За webdav не слышал. Есть примеры кода обмена?
10. Dream_kz 93 27.05.19 20:14 Сейчас в теме
(9)
(8)

ЯндексДискСтрокаПодключения = "https://%user%:%password%@webdav.yandex.ru/";
    ЯндексДискСтрокаПодключения = СтрЗаменить(ЯндексДискСтрокаПодключения, "%user%", "login");
    ЯндексДискСтрокаПодключения = СтрЗаменить(ЯндексДискСтрокаПодключения, "%password%", КодироватьСтроку("password", СпособКодированияСтроки.КодировкаURL));

    
    Файл = "C:\123.xml";
        
    НовыйФАйл = ЯндексДискСтрокаПодключения + "123.xml";
    
    КопироватьФайл(Файл, НовыйФАйл);
Показать


пути компьютерные, на мобильном надо использовать относительные (КаталогДокументов(), КаталогВременныхФайлов() и т.д)
freed; TreeDogNight; siddy; Serj1C; Aleskey_K; yarsort; +6 Ответить
7. KereberoS 3 27.05.19 19:38 Сейчас в теме
Вы ещё добавили в УТП путевые листы?

Бекап - то, что требуем с пользователей, но не думаем о себе :)

Мобильное приложение по заказам для УТП заинтересовало, можно в личку условия?
11. yarsort 27.05.19 20:20 Сейчас в теме
(7) Путевые листы в разработке. Как раз идет обсуждение принципа обмена. Но в приложении собирать данные о перемещении в ручном режиме уже можно. GPS позиционирование в теории может собирать метки, но механизм пока не нашел применение, а потому надо допиливать. В целом базовый принцип уже есть.
12. yarsort 123 27.05.19 20:47 Сейчас в теме
(7) По поводу приложения: я разрабатывал для типовой конфигурации УТП для Украины. Есть заказы, возвраты, оплаты. Все работает в связке со специальной обработкой. Каждому пользователю настройка и общий обмен через почтовый ящик. Тестируют пока что 10 человек. На данный момент безошибочно работает уже неделю на полную катушку - около 100 заказов в сутки. Если хотите быть тестером - буду рад. По поводу оплаты пока не думал. В будущем будет демократическая цена и надеюсь заработать на массовости использования.
19. script 206 28.05.19 14:15 Сейчас в теме
(7) Вот я когда-то делал путевые листы для бух 8.2
https://infostart.ru/public/151143/
Т.к. доработка модульная, легко перекинуть в УТП.

Недавно переделал ее для Бух 2.0. - скоро тоже выложу.
13. 🅵🅾️🆇 431 28.05.19 01:38 Сейчас в теме
(0) Могу предложить более оригинальный подход: используйте побитовые операции.
В 1 байте (букве) можно уместить аж 8 булевых. Два числа или перечисления до 15 или одно число до 255, а в двух буквах уже число от 0 до 65 тысяч.
И отправлять это дело двоичными данными (ну или в base64).

А вообще на носу http/2 и grpc - вот где прагматическая емкость со скоростью во все поля)
14. SirStefan 37 28.05.19 05:56 Сейчас в теме
15. yarsort 123 28.05.19 08:28 Сейчас в теме
(14) Может быть. Но я после разговора с владельцем этого форума и понимания что его владелец ненормальный человек, я больше туда не хожу. Поэтому не читаю Мисту. Но с другой стороны, видимо зря не ходил, а так нашел бы Вашу заметку. :)
16. yarsort 123 28.05.19 08:32 Сейчас в теме
(14) Значит я актуализировал Ваши знания с небольшой доработкой в JSON.
17. SirStefan 37 28.05.19 08:59 Сейчас в теме
(16) , Почти. У меня нет промежуточного сохранения файла на диск. Все в памяти. А СжатиеДанных(9) лучше не ставить. Скорость обработки замедляется, но выигрыш в размере не сильно больше чем у СжатиеДанных(1). Попробуйте сравнить...
18. asdf_88 28.05.19 14:11 Сейчас в теме
(17)
Почти. У меня нет промежуточного сохранения файла на диск. Все в памяти.

С операциями в памяти надо быть внимательным, иначе можно много памяти съесть за вызов, если на вход придет очень много данных.
20. SirStefan 37 28.05.19 14:35 Сейчас в теме
(18) Так он все равно создаётся, распаковывается, обрабатывается в памяти.
21. asdf_88 28.05.19 16:12 Сейчас в теме
(20) Ну да, только у вас еще весь файл в памяти, а не на диске. В угоду скорости вполне хорошее решение.
ЧтениеJSON с диска читает блоками, а не полностью файл поднимает с диска в память. Или я ошибаюсь?
22. SirStefan 37 28.05.19 17:47 Сейчас в теме
(21) вроде блоками. А запись будет блоками или сперва сформирует, потом запишет? Хотя для обмена у меня файлы больше 40 мегабайт не выходили вроде. А на планшетах по 3Gb оперативки. Должно хватать.
23. palsergeich 28.05.19 23:26 Сейчас в теме
Откажитесь от штатного сериализатора и напишите свой json формат. В штатном механизме слишком много мусора.
Упаковывая структуру в хранилище значений чуда не происходит)
Я именно так 2 года назад сделал, что то похожее на КД3, только на JSON. Результат фантастический.
Если XML сериализация за год - только сериализация занимала минуту, то свой велосипед - 10 секунд сериализация + передача+десериализация. Объем уменьшился в сотни раз.
TreeDogNight; acanta; +2 Ответить
24. androidT1C 73 29.05.19 16:16 Сейчас в теме
(23) Это же под каждый объект свой велосипед изобретать? И это быстрее? Как?
25. palsergeich 29.05.19 16:28 Сейчас в теме
(24)
(23) Это же под каждый объект свой велосипед изобретать? И это быстрее? Как?

не, велосипед один, но каждый объект - декларативно описывается, да
27. androidT1C 73 30.05.19 10:12 Сейчас в теме
(25) Как самописные циклы, например, по ТаблицеЗначений из 100000 строк, с анализом типов и пр., могут работать быстрее, чем платформенная сериализация в XML этой же ТЗ?
26. yarsort 123 29.05.19 17:26 Сейчас в теме
У меня и так свой формат JSON. Я не сериализирую объекты из учетной системы в том виде, в каком их хранит 1С.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 120 000 руб.
Полный день


Программист 1С
Москва
зарплата от 130 000 руб.
Полный день

Технический лидер, архитектор 1С, руководитель проектов
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С
Набережные Челны
зарплата до 90 000 руб.
Полный день