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

1С мобильная платформа и сетевая папка

1С мобильная платформа и сетевая папка
Я
   abbas
 
23.08.21 - 07:23
Доброго времени суток, подскажите пжста, как я могу с мобильного устройства перенести файл в сетевую папку на ПК через 1с моб приложение.
Сервер ставить не хотят, установили wi-fi роутер, есть ли такая возможность, подскажите плс
   Мультук
 
1 - 23.08.21 - 07:38
(0) dropbox

Ставим на мобилке, ставим на компе. Файл чудесным образом перемещается с мобилки в папку
   abbas
 
2 - 23.08.21 - 08:07
(1) Дело в том что могут быть обрывы с интернет связью
Можно ли реализовать через сетевые папки?
   ДенисЧ
 
3 - 23.08.21 - 08:07
(2) Как раз при обрывах-то дропбокс даёт фору сетевым папкам, как кондор воробью )))
   abbas
 
4 - 23.08.21 - 08:53
(3) Попроще разжуйте
   abbas
 
5 - 23.08.21 - 08:55
Есть ли другие варианты решения
   ДенисЧ
 
6 - 23.08.21 - 08:56
(4) Куда проще? Дропбокс как расчитан на прерывистую связь, он умеет докачивать. А сетевая папка - связь отвалилась и ага, заново с нуля лей.
   abbas
 
7 - 23.08.21 - 09:02
В случае обрыва интернета на 20-30 мин, ожидание будет проблемой
а если через сеть то можно и наладить причину
   abbas
 
8 - 23.08.21 - 09:03
я не спорю, я лишь ищу более оптимальный вариант
   abbas
 
9 - 23.08.21 - 09:04
Там текстовой файл не большой
   Галахад
 
10 - 23.08.21 - 09:10
(5) Почтой шли. :-)
   abbas
 
11 - 23.08.21 - 09:11
(10) Если интернет пропадет?
   Garykom
 
12 - 23.08.21 - 09:13
(0) через телеграм можно например
   ДенисЧ
 
13 - 23.08.21 - 09:13
(12)" Если интернет пропадет?" (с)
   Мультук
 
14 - 23.08.21 - 09:14
(11)
Уговорил - делай через сетевую папку.
   Галахад
 
15 - 23.08.21 - 09:14
(11) Шли когда появляется. :-)
   Garykom
 
16 - 23.08.21 - 09:17
(13) флешкой
   abbas
 
17 - 23.08.21 - 09:23
(14) =)))
Дайте пжста примеры данного решения
   Мультук
 
18 - 23.08.21 - 09:30
(17)

1) Поднимаем на компе web-сервер. Даже просто через xamp
2) Пишем простейший скрипт на php для upload файлов через http
3) На мобилке заливаем файл на ваш http через post
4) Скрипт на php принимает файл, копирует его в сетевую папку

P.S.
Сначала просто скопируй руками любой файл со своего мобильного устройства на сетевую папку.
Как получится - делай выводы, пиши код.
   abbas
 
19 - 23.08.21 - 09:47
(18) Через TotalComander копируется, но можно ли воспользоваться без разворачивания вебсервера.
Использовать функции TotalComander через 1С или другого файлообменика
   ДенисЧ
 
20 - 23.08.21 - 09:48
(19) В мобильном приложении КопироватьФайл() работает?
   abbas
 
21 - 23.08.21 - 09:52
(20) Нет
Не может найти путь указанный путь 192.168.0.1/test/ к примеру
Общий доступ к папке есть
В TotalComander добавил сетевую папку, копирую вручную, все ок
а вот как через 1с моб платформу это реализовать
   ДенисЧ
 
22 - 23.08.21 - 09:53
А если \\192.168.0.1\test попробовать?
   abbas
 
23 - 23.08.21 - 09:57
(22) Пробовал, файл не обнаружен
   Garykom
 
24 - 23.08.21 - 09:59
Лично я использую микросервис на Go
package main

import (
    //    "database/sql"

    "encoding/json"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/gorilla/mux"
    //"github.com/jmoiron/sqlx"

    "log"
    //"math/rand"

    "net/http"
    //b "rest/entities"

    //"strconv"

    "bufio"
    "github.com/sethvargo/go-password/password"
    "io/ioutil"
    "os"
    "path/filepath"
)

type ID struct {
    ID string `db:"id"`
}

func getSolt(long, digits, symbols int, noUpper, allowRepeat bool) string {
    // Generate a password that is 64 characters long with 10 digits, 10 symbols,

    // allowing upper and lower case letters, disallowing repeat characters.

    result, err := password.Generate(long, digits, symbols, noUpper, allowRepeat)
    if err != nil {
        fmt.Println(err)
    }
    return result
}

func ReadLines(path string) ([]string, error) {
    file, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer file.Close()

    var lines []string
    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        lines = append(lines, scanner.Text())
    }
    return lines, scanner.Err()
}

func WriteLines(lines []string, path string) error {
    file, err := os.Create(path)
    if err != nil {
        return err
    }
    defer file.Close()

    w := bufio.NewWriter(file)
    for _, line := range lines {
        fmt.Fprintln(w, line)
    }
    return w.Flush()
}

func getDir() string {
    ex, err := os.Executable()
    if err != nil {
        fmt.Println(err)
    }
    exPath := filepath.Dir(ex)
    //fmt.Println(exPath)

    return exPath
}

func getNewID(w http.ResponseWriter, r *http.Request) {
    var id ID
    id.ID = getSolt(10, 5, 0, true, true)
    fmt.Println("NewID: " + id.ID)

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(id)
}

func setFile(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id := params["id"]
    fileType := params["file"]

    dirname := getDir()
    filename := dirname + "/" + id + "_" + fileType
    fmt.Println("Set file: " + filename)
    var lines []string

    bData, err := ioutil.ReadAll(r.Body)
    if err != nil {
        fmt.Println(err)
    }

    jsonData := string(bData)
    //fmt.Println("jsonData:")

    //fmt.Println(jsonData)


    lines = append(lines, string(jsonData))
    err = WriteLines(lines, filename)
    if err != nil {
        fmt.Println(err)
    }

}

func getFile(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id := params["id"]
    fileType := params["file"]

    dirname := getDir()
    filename := dirname + "/" + id + "_" + fileType
    fmt.Println("Get file: " + filename)

    lines, err := ReadLines(filename)
    if err != nil {
        fmt.Println(err)
    }

    w.Header().Set("Content-Type", "application/json")
    for _, value := range lines {
        w.Write([]byte(value))
    }
}

func main() {
    r := mux.NewRouter()

    r.HandleFunc("/getnewid", getNewID).Methods("GET")
    r.HandleFunc("/users/{id}/files/{file}", setFile).Methods("POST")
    r.HandleFunc("/users/{id}/files/{file}", getFile).Methods("GET")

    log.Fatal(http.ListenAndServe(":1717", r))
}

   Garykom
 
25 - 23.08.21 - 10:05
(24) скомпилить можно под винду, линукс, андроид
засунуть бинарник (.exe для винды) в макет 1С
при надобности из макета на диск и запустить

юзается простейше

http:\\ip addres:1717/getnewid - сгенерить новый id (клиента)
http:\\ip addres:1717/users/{id}/files/{file} - POST и GET методы, залить файл и скачать файл
   Garykom
 
26 - 23.08.21 - 10:08
(25)+ мне надо было для json файлов, поэтому только текстовые можно
кому надо любые файлы, сами как-нибудь или использовать base64
   Garykom
 
27 - 23.08.21 - 10:15
(0) >установили wi-fi роутер

если роутер умеет Entware/OPKG то микросервис из (24) можно и на нем запустить
   ejikbeznojek
 
28 - 23.08.21 - 10:18
(0) Передавай через веб сервис двоичными данными. И путь к сетевой папке параметром.
   Garykom
 
29 - 23.08.21 - 10:20
(28) они "Сервер ставить не хотят"
так то логично было бы на апаче или иис базу 1С опубликовать с http сервисом
   ejikbeznojek
 
30 - 23.08.21 - 10:23
(29) А может у них "Сервер" - это мощный комп в серверной)) А против апача они ничего не имеют.
 
 
   Garykom
 
31 - 23.08.21 - 10:24
(30) ну это сложней чем на любой железке в сети запустить .exe как у меня
или на VPS/VDS в инете как у меня сделано и легко обмениваться файлами
   abbas
 
32 - 24.08.21 - 14:57
Скачал es проводник, подключился, все ок, могу на андройде копировать, перемещать файлы и тд
как сделать с помощью 1С моб платформы, подскажите плс
   Garykom
 
33 - 24.08.21 - 15:00
(32) ВК или нечто внешнее
   Garykom
 
34 - 24.08.21 - 15:02
(33)+ но имхо это изврат и юзай (24)
если даже сам скомпилить не можешь готовое на Go и кода на 1С накидать через HTTPСоединение
то сделаю за оплату моего часа


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.