Имя: Пароль:
1C
1С v8
обмен базы и мобильного приложения 1с
,
0 zladenuw
 
11.03.20
01:42
Формат обмена и формат сжатия.
Чем лучше реализовать.
в обмене может быть 5000 товара и картинок по 2-3 штуки.
клиентов около 5000. у каждого может быть свой тип цен.
выгружать историю продаж это около 20 000 документов.
как загрузку сделать за 5 минут?
1 Галахад
 
гуру
11.03.20
04:14
Гм. а просто записать все эти данные за 5 минут получается?
2 zladenuw
 
11.03.20
05:18
Через скд. В json.
3 zladenuw
 
11.03.20
05:23
Я на серверу это отдам. Ещё клиент это должен принять и переварить
4 zladenuw
 
11.03.20
05:27
А если залить в базу на сервере. И отдать базу)
5 Aleksey
 
11.03.20
06:39
А телефон переварить этот объем данных, не подавиться и сможет их отобразить? И связь по таймауту не отвалится? И место хватит?
6 dangerouscoder
 
11.03.20
07:32
5000 мобильных клиентов?
7 arsik
 
гуру
11.03.20
08:23
(0) А зачем тебе каждый раз все тащить? Только измененные данные тащи. План обмена добавь, в который изменения писаться будут.
8 Великий Чебуратор
 
11.03.20
10:43
никак, тупо не загрузится.
9 Великий Чебуратор
 
11.03.20
10:44
задача какая поставлена, может имеет смысл воспользоваться профильными инструментами?
10 pavig
 
11.03.20
11:07
(0)
Мои 5 копеек:
1. Выгружать только изменения. При этом не обязатльо использовать планы обмена, так как планы обмена для 5000 узлов - это жестоко для сервера. Как вариант - на сервере "запоминать" ранее выгруженную таблицу куда-нибудь в РС. Потом при выгрузке сверять её с актуальной таблицей и отправлять только измененные строки.
2. Картинки не держать в мобилке, а подгружать динамически по воздуху только тогда когда отркывается карточка товара (ну или в иных ситуациях только тогда когда картинка нужна)
3. Можно поиграться, предварительно упаковав в хранилище значения с высокой степенью сжатия, и только потом отправлять. Ну тут надо тестить.
11 Garykom
 
гуру
11.03.20
11:12
(0) При таких жестких исходных я бы делал внешнюю базу для мобильного приложения 1С, которая будет работать на том же девайсе.
Короче обновляется эта база (sqlite?) а далее 1С в фоне начинает синхронизировать из нее данные с текущей базой.
12 Василий Алибабаевич
 
11.03.20
11:13
(10)
п. 1 - лажа.
п. 2 - +100500
п. 3 - +100500 (так во всех типовых обменах).
13 Garykom
 
гуру
11.03.20
11:14
(11)+ Причем хитрым образом да сравнивая свою базу МП, предыдущую базу sqlite и новую базу sqlite.
База sqlite это по сути один файл, так что его можно целиком скачивать
14 Garykom
 
гуру
11.03.20
11:15
(13)+ И да лучше всего ВК для МП 1С для работы с sqlite наваять и встроить
15 pechkin
 
11.03.20
11:16
(10) картинки уже некуда жать. ведь это же жипег
16 Garykom
 
гуру
11.03.20
11:18
(14)+ Вариант попроще без ВК в МП это нечто вроде https://github.com/olsonpm/sqlite-to-rest
Т.е. МП 1С запускает "веб-сервер" на мобильном девайсе который работает с sqlite, а само МП с базой работает через http api.
17 pavig
 
11.03.20
11:18
+ (10)
п1. Мы это применяли на практике и получали очень хорошие результаты при количестве клиентов 300+
18 pavig
 
11.03.20
11:19
(15) Прочитай п.2 что делать с картинками
19 Галахад
 
гуру
11.03.20
11:34
Если информация только для чтения на мобильном устройстве, можно сразу передать в таблице значений. И ее там показать.
Как пример:
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ИД", Новый ОписаниеТипов("Строка"));
    ТЗ.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    ТЗ.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 10000
    |    Номенклатура.Ссылка,
    |    Номенклатура.Код,
    |    Номенклатура.Наименование
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура";
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
            
        НовСтр = тз.Добавить();
        НовСтр.ИД = Выборка.Ссылка.УникальныйИдентификатор();
        ЗаполнитьЗначенияСвойств(НовСтр, Выборка);
        
    КонецЦикла;
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, лОбъект);
    СтрокаXML = ЗаписьXML.Закрыть();
20 Галахад
 
гуру
11.03.20
11:35
(19) + У меня такая строка вести примерно 1 мб.
21 Василий Алибабаевич
 
11.03.20
11:47
(19) ГЫ. Заполняем ТЗ, а записываем лОбъект. Это что бы враг не догадался? Так можно и меньше 1 мб получить.
22 zladenuw
 
12.03.20
19:30
Печалка в том. что они хотят видеть картинки при просмотре списка товара. подбор через картинки. Есть такая штука на мобилках которые не 1с.
Тогда каталог в настройки и фотки отдельно отправлять. А данные остальные отдельно.
23 xXeNoNx
 
13.03.20
07:36
(10) мухахаха "Картинки не держать в мобилке, а подгружать динамически по воздуху" - муха-ха-ха
24 xXeNoNx
 
13.03.20
07:47
Интересно, а как это реализовано в таких андроид-приложухах как "aliexpress" загружается ли там вся инфа сразу?
25 xXeNoNx
 
13.03.20
07:52
яб сделал буфер кеширования с временем жизни пакета на сервере. Для вида цен хранил бы запакованый пакет с ценами, регламентом бы чистил когда надо. Остатки в разрезе складов по изменениям так же в буфер скидывал(разделил бы полные остатки и изменения по ним
26 Великий Чебуратор
 
13.03.20
07:55
Картинку можно сжать до пиктограммы и выводить в отдельном поле вместе с остальными реквизитами товара. Но я как понимаю за это платить не хотят.
27 xXeNoNx
 
13.03.20
07:57
2 варианта по картинкам: 1. догружать все в мобилку после первичный данных - будет все быстро летать, но клиентам нужно будет подарить sd-карту
2. Догружать в динамике, организовать отображение таким образом, что бы ты знал последовательность элементов, где ты мог бы догружать инфу
28 xXeNoNx
 
13.03.20
07:59
Но самое простое сделать аля браузер и грузить все динамически
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.