|
О неравноправии клиента и сервера при загрузке данных из файлов. | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
07.10.15
✎
11:00
|
Пишу обработку по загрузке данных из файлов. Банальщина в принципе, но вот какие размышления навеяло.
Вообще я пишу так, что все основные операции по загрузке делаю на клиенте, а сервер дергаю только для обращения к базе данных. Но ничто не мешало бы выполнять основные функции на сервере, дергая клиент только для чтения данных из файлов. Ничто, кроме того, что в платформе нельзя вызывать клиент с сервера. Операция обращения к серверу одноразовая и не может в ходе своего выполнения дергать вызвавшего ее клиента для чтения данных. В итоге 1С принуждает меня писать клиент-ориентированный код. И если я захочу написать чтение на сервере (для регламентного задания), придется делать рефакторинг задачи. Как вариант можно передать файл на сервер и его там обработать, но это опять же передача большого трафика (если файлы большие) и наверное, не стоит. Я правильно понимаю, что тут я повязан ограничениями 1с по самое не хочу? |
|||
1
Ненавижу 1С
гуру
07.10.15
✎
11:03
|
(0) неправильно понимаешь
|
|||
2
Гений 1С
гуру
07.10.15
✎
11:04
|
(1) просветли
|
|||
3
DexterMorgan
07.10.15
✎
11:06
|
Читаешь все на клиенте, нужное передаешь на сервер, а в чем проблема?
|
|||
4
Гений 1С
гуру
07.10.15
✎
11:09
|
(3) а если я захочу выполнять в регл. задании?
клиентский код можно выполнять в регл.задании? |
|||
5
H A D G E H O G s
07.10.15
✎
11:10
|
"И если я захочу написать чтение на сервере (для регламентного задания), придется делать рефакторинг задачи."
Ты просто рукожоп. |
|||
6
1Сергей
07.10.15
✎
11:10
|
(4) если ты в регл задании читаешь некий файл, тебе его полюбому придется передать на сервер
|
|||
7
1Сергей
07.10.15
✎
11:11
|
а так, да - жизнь боль
|
|||
8
H A D G E H O G s
07.10.15
✎
11:11
|
Открой для себя концепцию:
ОбщийМодульКлиентСервер ОбщийМодульВызовСервера ОбщийМОдульСервер |
|||
9
Маратыч
07.10.15
✎
11:12
|
Если чтение файлов автоматизируется рег. заданием, на кой ляд вообще клиентский код?
|
|||
10
Адинэснег
07.10.15
✎
11:16
|
(8) некогда ему открывать, он резюме фильтрует
|
|||
11
Гений 1С
гуру
07.10.15
✎
11:22
|
(9) чтобы можно было и в ручную и в регл.задании - для разных форматов (контрагентов)
|
|||
12
Гений 1С
гуру
07.10.15
✎
11:22
|
(5)(8) поподробнее и конструктивнее
|
|||
13
Маратыч
07.10.15
✎
11:25
|
(11) Пишешь серверную процедуру с параметром, и вызывай ее хоть из клиента, хоть из рег.задания.
|
|||
14
Stim
07.10.15
✎
11:34
|
Если проблема в том, что файл недоступен для серверного пользователя(под которым крутится служба), то есть вариант присоединить папку под другим пользователем.
Выполняешь на сервере что-то типа: ЗапуститьПриложение("net use X: \\мойКОмп\папка с файлами которые может читать только клиент "ПарольКлиента" /user:"Домен\ИмяКлиента" ",, Истина, КодВозвратаСоединения) и на сервере у тебя "мапируется" внешний диск с доступом через другого пользователя. |
|||
15
ДенисЧ
07.10.15
✎
11:35
|
(14) дурная идея.
|
|||
16
Stim
07.10.15
✎
11:40
|
(15) почему?
Это самое оптимальное решение для чтения файла на стороннем сетевом диске сервером в регл задании |
|||
17
Гений 1С
гуру
07.10.15
✎
11:41
|
(13) серверная процедура не увидит файл на локальном компьютере, поэтому процедура чтения из файла должна быть на клиенте.
а если выполняется из регл задания, то да, файл может лежать на сервере. |
|||
18
Гений 1С
гуру
07.10.15
✎
12:28
|
блин, это какая-то жесть.
с сервера на клиент нельзя передавать таблицу значений. а все настройки обмена хранятся в ней. Переделывать на массив структур или еще как - бессмысленно, будут или потери в производительности при конвертациях или еще какая лажа. Придется все же весь код делать на сервере и файлы для обработки передавать на сервер... Увы... Блин, это какая-то жесть эти УФ. Идеологи затачиваются на минимизацию клиента, но забывают, что есть задачи, которые так не решаются... Маразм короче. |
|||
19
Stim
07.10.15
✎
12:34
|
фиксин познает мир 1С. Ошибки новичка, часть 12
|
|||
20
H A D G E H O G s
07.10.15
✎
12:38
|
(18) Вопрос Гениям 1С. Почему 1С не дало программистам ТаблицуЗначений на Тонком Клиенте, если она там есть:
http://i074.radikal.ru/1407/7e/afd3ecc50250.png Время пошло. |
|||
21
Маратыч
07.10.15
✎
12:46
|
(18) Да передавай через хранилище, чего ты заморачиваешься? Ну реально же, все уже разжевано десятки и сотни раз :)
|
|||
22
Маратыч
07.10.15
✎
12:48
|
+(21) Или еще тупее - через Возврат
|
|||
23
Kain_wrath
07.10.15
✎
12:52
|
(20) магия
|
|||
24
Stepa86
07.10.15
✎
12:53
|
(20) Предлагаю тебя сжечь за колдовство http://screencast.com/t/b7EnwFpRkoZy
|
|||
25
Гений 1С
гуру
07.10.15
✎
13:34
|
(20)
ТаблицаЗначений (ValueTable) Описание: Таблица значений предназначена для хранения значений в табличном виде. Все основные операции с таблицей производятся именно через этот объект. Он позволяет манипулировать строками таблицы значений и предоставляет доступ к коллекции колонок. Колонки могут быть различных типов (в том числе множественных). Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: ValueTable. |
|||
26
Garykom
гуру
07.10.15
✎
13:44
|
(24) это такое особое колдунство... как получить ТЗ на тонком клиенте
намек реквизиты формы |
|||
27
DexterMorgan
07.10.15
✎
13:45
|
(20), (26) Вызовите на клиенте серверную функцию, которая возвращает таблицу значений
|
|||
28
DCKiller
07.10.15
✎
13:47
|
(18) Вот объясни, какого тебе хрена всю, вообще ВСЮ загрузку нельзя сделать на сервере? Зачем надо клиент дергать?
|
|||
29
Гений 1С
гуру
07.10.15
✎
13:47
|
(24) (26) да, я посмотрел реквизит формы, можно получить ТЗ. Но это не то.
У меня ТЗ содержится в струткуре, и не одна. Структура описывает настройки обмена и прочее. То бишь все равно на форму в реквизит не вытащишь такую стркутуру. |
|||
30
Maniac
07.10.15
✎
13:52
|
Все вытаскивается в 1С легко куда хочешь, откуда хочешь и так далее.
Чт ос клиента на сервер что с сервера на клиент - ЭЛЕМЕНТАРНО |
|||
31
Maniac
07.10.15
✎
13:53
|
Через временное хранилище в 1С можно все что угоднео перекидывать туда-сюда-обратно хоть вагонами и маленькими тележками
|
|||
32
H A D G E H O G s
07.10.15
✎
13:58
|
(31) Перекинь мне Таблицу Значений через ВХ с сервера на клиент.
|
|||
33
Stepa86
07.10.15
✎
14:00
|
(26) Реквизит формы с типом Таблица значений и переменная с типом таблица значений - все таки разные вещи
|
|||
34
Stepa86
07.10.15
✎
14:00
|
(32) так перекинуться то перекинется, только уже потом клиент ругнется, что он в душе не в курсе чо ему перекинули
|
|||
35
DexterMorgan
07.10.15
✎
14:03
|
(34) ну так попробуй (27), не будет он ругаться
|
|||
36
Stepa86
07.10.15
✎
14:04
|
(35) да я и так знаю, что упадет с "Тип не определен"
|
|||
37
DexterMorgan
07.10.15
✎
14:05
|
(36) в толстом клиенте будет таблица значений тип
|
|||
38
DexterMorgan
07.10.15
✎
14:05
|
(36) вон скрин в (20)
|
|||
39
H A D G E H O G s
07.10.15
✎
14:06
|
(35) Еще один Гений.
|
|||
40
H A D G E H O G s
07.10.15
✎
14:06
|
(38) Специально для сородичей Г1С - на скрине показан "Предмет отладки" - ТонкийКлиент.
|
|||
41
DexterMorgan
07.10.15
✎
14:06
|
(39) В смысле? в тонком будет ошибка, в толстом определяет тип ТЗ, ты к чему вообще?
|
|||
42
Stepa86
07.10.15
✎
14:07
|
(38) там тонкий клиент
|
|||
43
DexterMorgan
07.10.15
✎
14:11
|
(40) тогда хз как ты это сделал
|
|||
44
Maniac
07.10.15
✎
14:12
|
Миллиард раз перекидывал
|
|||
45
H A D G E H O G s
07.10.15
✎
14:14
|
(44) Покажи мне твой аналог (20)
|
|||
46
Stepa86
07.10.15
✎
14:14
|
(24) ВыбратьСтроку( доступен только в толстом и только у таблицы значений или дерева значений, у реквизита формы нет такого метода
(43) мое предложение его сжечь все еще в силе |
|||
47
Гений 1С
гуру
07.10.15
✎
14:24
|
(40) еще раз повторю - у меня не таблица значений, а структура с таблицами значений.
(31) да, это нормальная тема. Хранить в ВХ структуру обмена, возвращать на клиент адрес ВХ строкой. На клиенте структуру не обрабатывать, опять дергать сервер. Но управление получается событийное - т.е. нужно дернуть сервер, он обработает, На клиенте посмотреть текущий статус, опять дернуть сервер и т.п. Усложнение программирования налицо. |
|||
48
Stepa86
07.10.15
✎
14:27
|
(47) так а почему ты не хочешь сразу работать на сервере? Прокинь файл на сервер и работай с ним, если не хочешь шарить файлик серверу напрямую
|
|||
49
Maniac
07.10.15
✎
14:27
|
(47) да хоть миллирд таблиц значений
|
|||
50
Гений 1С
гуру
07.10.15
✎
14:30
|
(48) я не знаю, какие файлы прочитать. Это может понять только сервер, построив топологию правил обмена.
т.е. есть процедура разбора правила обмена. Она строит некую структуру, из которой становится понятно, сколько и каких файлов читать. ОК, я понял как сделать. Сперва я строю эту структуру, потом сохраняю ее в ВХ, возвращаю на клиента краткую аннотацию в виде списка для поиска файлов и адрес ВХ. Потом нахожу и считываю файлы, передаю их на сервер и передаю адрес ВХ. По адресу восстанавливается ранее расчитанная структура и вперед. |
|||
51
Гений 1С
гуру
07.10.15
✎
14:30
|
(49) тогда расскажи как, через реквизит формы у меня в тонком не получилось структуру с таблицами хранить.
|
|||
52
DexterMorgan
07.10.15
✎
14:34
|
(51) В реквизите формы можно поставить тип произвольный и записывай туда что хочешь
|
|||
53
DexterMorgan
07.10.15
✎
14:34
|
(51) Но вообще херню какую то ты делаешь =)
|
|||
54
Гений 1С
гуру
07.10.15
✎
14:36
|
(52) гм. Это вариант. надо попробовать.
|
|||
55
Ненавижу 1С
гуру
07.10.15
✎
14:50
|
(53) херню не херню, а деньги она этом поднял http://websta.me/p/1090491683902965408_258305880
|
|||
56
Garykom
гуру
07.10.15
✎
14:53
|
(55) может лучше флажки России купить по 25 руб и по 100 руб в пробках продавать?
там в удачный день 2-3 т.р. выходит )) |
|||
57
vhl
07.10.15
✎
16:20
|
(0) расшарь папку и читай на сервере
|
|||
58
vhl
07.10.15
✎
16:21
|
(14) не надо так делать
|
|||
59
vhl
07.10.15
✎
16:22
|
(18) Это ты еще не дошел до асинхронных вызовов :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |