Имя: Пароль:
1C
 
О неравноправии клиента и сервера при загрузке данных из файлов.
,
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) Это ты еще не дошел до асинхронных вызовов :)
Ошибка? Это не ошибка, это системная функция.