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

Ставим на мобилке, ставим на компе. Файл чудесным образом перемещается с мобилки в папку
2 abbas
 
23.08.21
08:07
(1) Дело в том что могут быть обрывы с интернет связью
Можно ли реализовать через сетевые папки?
3 ДенисЧ
 
23.08.21
08:07
(2) Как раз при обрывах-то дропбокс даёт фору сетевым папкам, как кондор воробью )))
4 abbas
 
23.08.21
08:53
(3) Попроще разжуйте
5 abbas
 
23.08.21
08:55
Есть ли другие варианты решения
6 ДенисЧ
 
23.08.21
08:56
(4) Куда проще? Дропбокс как расчитан на прерывистую связь, он умеет докачивать. А сетевая папка - связь отвалилась и ага, заново с нуля лей.
7 abbas
 
23.08.21
09:02
В случае обрыва интернета на 20-30 мин, ожидание будет проблемой
а если через сеть то можно и наладить причину
8 abbas
 
23.08.21
09:03
я не спорю, я лишь ищу более оптимальный вариант
9 abbas
 
23.08.21
09:04
Там текстовой файл не большой
10 Галахад
 
гуру
23.08.21
09:10
(5) Почтой шли. :-)
11 abbas
 
23.08.21
09:11
(10) Если интернет пропадет?
12 Garykom
 
гуру
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) Шли когда появляется. :-)
16 Garykom
 
гуру
23.08.21
09:17
(13) флешкой
17 abbas
 
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.
Сначала просто скопируй руками любой файл со своего мобильного устройства на сетевую папку.
Как получится - делай выводы, пиши код.
19 abbas
 
23.08.21
09:47
(18) Через TotalComander копируется, но можно ли воспользоваться без разворачивания вебсервера.
Использовать функции TotalComander через 1С или другого файлообменика
20 ДенисЧ
 
23.08.21
09:48
(19) В мобильном приложении КопироватьФайл() работает?
21 abbas
 
23.08.21
09:52
(20) Нет
Не может найти путь указанный путь 192.168.0.1/test/ к примеру
Общий доступ к папке есть
В TotalComander добавил сетевую папку, копирую вручную, все ок
а вот как через 1с моб платформу это реализовать
22 ДенисЧ
 
23.08.21
09:53
А если \\192.168.0.1\test попробовать?
23 abbas
 
23.08.21
09:57
(22) Пробовал, файл не обнаружен
24 Garykom
 
гуру
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))
}
25 Garykom
 
гуру
23.08.21
10:05
(24) скомпилить можно под винду, линукс, андроид
засунуть бинарник (.exe для винды) в макет 1С
при надобности из макета на диск и запустить

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

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

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