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

НаКлиенте или НаСервере?

НаКлиенте или НаСервере?
Я
   Nicole
 
25.04.19 - 10:28
Пишу обычную обработку: загрузка данных из файла Excel и формирование на основе этих данных документов ОперацияБух.
Какие действия правильно выполнять на клиенте, а какие - на сервере?
Например, у меня процедура ЗагрузитьДанные(Команда). Это на клиенте.
В этой процедуре проверка заполненных полей:
Если НЕ ЗначениеЗаполнено(Объект.ИмяФайлаДанных) Тогда
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Нстр("ru = 'Не указан файл данных для загрузки'"));
    Возврат;
КонецЕсли;
Далее: где лучше выполнить чтение файла Excel и загрузку прочитанных данных в таблицу значений? На клиенте?
 
 
   ДенисЧ
 
1 - 25.04.19 - 10:30
Загрузить файл в ХЗ, передать на сервер, там читать и заполнять
   toypaul
 
2 - 25.04.19 - 10:31
"где лучше выполнить чтение файла Excel" этот файл может быть не доступен на сервере

если данных в файле не шибко много, можно прочитать в ТЗ (реквизит формы) на клиенте
   elCust
 
3 - 25.04.19 - 10:33
(1) >> Загрузить файл в ХЗ, передать на сервер

Перед этим проверить, что на сервере есть Excel.
   sqr4
 
4 - 25.04.19 - 10:33
(3) можно 1сными средствами попробовать
   Eg0rkas
 
5 - 25.04.19 - 10:44
(0) думаю, что правильнее в модуле объекта основные операции делать.
файл Excel через временное хранилище на сервер, потом можно в ТабличныйДокумент загрузить Excel и уже работать с ним.
   MyNick
 
6 - 25.04.19 - 11:26
(0) надо начать с того, что на клиенте нет таблицы значений
   MyNick
 
7 - 25.04.19 - 11:29
А вообще все просто. Если мы автоматизируем ручной ввод данных на форме у отдельного пользователя, то однозначно на клиенте. Если мы грузим какие-то данные "за кадром пользователя" (т.е. не требуется дополнительная визуальная проверка и прочее участие пользователя), которую вообще лучше делать отдельным регламентным заданием и т.п. - то на сервере. Контекст выбирается исходя из логики процесса.
   Nicole
 
8 - 25.04.19 - 11:41
(7) Поняла, спасибо
   Evgenchik
 
9 - 25.04.19 - 11:43
Последние загрузки из Excel делал так. Чтение файла через ADO на стороне клиента, сохраняется все на ТЗ на форме (ДанныеФормыКоллекция), потом перехожу на сервер и загружаю данные из этой ТЗ. А все потому, что к серверу доступа не было, и там нереально было настроить чтение файла. А с клиента читалось очень быстро. Долгая передача больших данных на сервер, но это терпимо было.
Примерно такое соотношение, чтение com-соединением файла из 60000 строк проходило за 30 минут, ADO-соединением за 2 минуты.
   Вафель
 
10 - 25.04.19 - 11:44
из ексель можно и без самого екселя читать. 1с вроде давно умеет
 
 Рекламное место пустует
   Rema Dan
 
11 - 25.04.19 - 11:44
(0) На клиенте читаем файл через Новый ДвоичныеДанные(ИмяФайла). Помещаем двоичные данные во временное хранилище и отправляем на сервер адрес временного хранилища. На сервере получаем двоичные данные по адресу, записываем их во временный каталог и открываем записанное через ТабличныйДокумент.Прочитать(). Удаляем временный файл, парсим получившийся ТабличныйДокумент. Собираем по полученным данным документ и записываем его. Возвращаемся на клиент и открываем пользователю получившийся документ/документы.
   Вафель
 
12 - 25.04.19 - 11:46
   Evgenchik
 
13 - 25.04.19 - 11:54
(11) Хороший вариант, надо попробовать
   ptiz
 
14 - 25.04.19 - 11:55
(12) Господи...насколько же проще в ОФ было.
   Rema Dan
 
15 - 25.04.19 - 11:59
(12) Какой-то уж слишком правильный вариант. НачатьПомещениеФайла делает то же самое, что и чтение через ДвоичныеДанные, только с кучей асинхронных вызовов. При такой конструкции форма по прежнему будет лагать ожидая завершения серверного вызова или нет?
На счёт чтения из потока. При чтении старых xls файлов из потока платформа периодически отказывается воспринимать их как корректные файлы. При чтении из файлов таких проблем нет.
   fisher
 
16 - 25.04.19 - 12:00
(11) Не знаю, как сейчас, но когда я тестил загрузку через табдок - работало более криво и менее гибко, чем через ADO. Т.е. для каких-то файлов - ок, а для каких-то и не ок. Все мечтаю переписать на прямой парсинг, но руки не доходят...
   fisher
 
17 - 25.04.19 - 12:05
(15) Если не путаю, то основная фишка в том, что "НачатьПомещениеФайла" нативно работает в браузерах.
   Nicole
 
18 - 25.04.19 - 13:02
Хорошо, а в какой момент и где лучше провести проверку реквизитов? У меня именно реквизиты обработки, не формы. В типовой конфигурации видела метод ПроверитьЗаполнение(), инициирующий запуск ОбработкиПроверкиЗаполнения().
   vi0
 
19 - 25.04.19 - 13:06
(0) раз у тебя будет запись в БД, то если ничего не мешает делать это на сервере то делай на сервере
   Evgenchik
 
20 - 25.04.19 - 13:09
Проверку реквизитов на Клиенте
   Nicole
 
21 - 25.04.19 - 13:10
(19) Я имею в виду, что в обработке, помимо имени файла, необходимо указать еще ряд реквизитов: подразделение организации, дату формирования документов и т.д и т.п
   Nicole
 
22 - 25.04.19 - 13:14
И еще вопрос: я знаю как обратиться к экспортной процедуре типовой обработки - "Обработки.ЗагрузкаДанныхИзЗУП.ЗагрузитьДанныеВИБ" 
А к экспортной процедуре внешней обработки?
   Evgenchik
 
23 - 25.04.19 - 13:17
ВнешняяОбработка = РеквизитФормыВЗначение("Объект");
ВнешняяОбработка.ТвояПроцедура();
   Nicole
 
24 - 25.04.19 - 13:19
Это я знаю. А если я, к примеру, хочу воспользоваться ДлительныеОперации.ЗапуститьВыполнениеВФоне()? Там вторым параметром строка - имя экспортной процедуры "Обработки.ЗагрузкаДанныхИзЗУП.ЗагрузитьДанныеВИБ".
   Evgenchik
 
25 - 25.04.19 - 13:30
Насколько я знаю, фоновые процедуры надо использовать только те, что встроены в конфигурацию.
   vi0
 
26 - 25.04.19 - 14:08
(21) я ответил на твой вопрос: "где лучше выполнить чтение файла Excel и загрузку прочитанных данных в таблицу значений? На клиенте?"
а проверку полей можно переложить на платформу - в реквизитах установить свойство "Проверка заполнения" = "Выдавать ошибку"
   vi0
 
27 - 25.04.19 - 14:10
кстати не забывай, что нельзя работать работа с ТЗ не поддерживается тонким клиентом
   Nicole
 
28 - 25.04.19 - 14:32
Всем спасибо, все прочитала .
Ну до кучи еще вопрос: вот добавила я свою дополнительную обработку в справочник. А дальше? В разделе "Продажи" в Сервисе есть команда "Дополнительные обработки". Но там открывается пустой список.
   Evgenchik
 
29 - 25.04.19 - 14:38
Так там же где добавляла - там есть каким пользователям включить доступность этой обработки
   Nicole
 
30 - 25.04.19 - 14:41
(29) .... там вроде ничего похожего нет...
   Evgenchik
 
31 - 25.04.19 - 14:42
а конфигурация-то какая?
   Nicole
 
32 - 25.04.19 - 14:42
Нашла! Вот слепандя...
   Вафель
 
33 - 25.04.19 - 14:45
(24) лови пример загрузки в фоне
http://catalog.mista.ru/public/943888/
 
 
   Nicole
 
34 - 25.04.19 - 15:04
(33) Спасибо!
   Eiffil123
 
35 - 26.04.19 - 10:41
А если тонкий клиент? Там же уже нельзя будет создавать COMОбъект.
Думаю, что кошернее на сервере проводить операции работы с excel.
   D_E_S_131
 
36 - 26.04.19 - 11:16
(33) Какая-то "шляпа". Фраза "в БСП объем вспомогательного кода достаточно велик" можно читать как "Я не знаю как это работает в БСП и мне влом разбираться. Поэтому ловите мой «велосипед»".
   Evgenchik
 
37 - 26.04.19 - 12:56
(35) COM-объект можно создавать и на тонком клиенте


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