Главная » Файлы » Программируем в 1С » 1С Разное

Скачивать материалы с сайта, могут только зарегистрированные пользователи.
Для регистрации заполните два поля ниже!

Через минуту Вы получите "Гостевой доступ"




Как передать файл с «клиента» на «сервер» и обратно ? 1с 8.3
2014 Май 10, 21:09

Как передать файл с «клиента» на «сервер»  и обратно ? 1с 8.3

Когда «управляемые формы» и «тонкий клиент» ?

Приветствую Друзья!

Решение еще одной  задачи,  что 100% выпадет Вам как программисту 1С, если Вы работаете с 1С 8.3, на управляемых формах используя, тонкий клиент!

Речь в статье пойдет о передаче файла с «Клиента» на «Сервер» , Как это  проще и быстрее сделать ?

Я поделюсь с Вами своим опытом, покажу  все пошагово в скриншотах.

И так давайте по порядку:

Создаем обработку на управляемых формах, конечно,  используем только тонкий клиент.

 

Перейдем на вкладку данные и добавим «Табличную часть» а в ней такие реквизиты:

  1. Email -  (Тип строка, длина 50) .
  2. Имя – (Тип строка, длина 50) .
  3. Город – (Тип строка, длина 50) .

Добавим команду «Выбрать»  и перенесем все на форму, затем создадим обработчик события (&НаКлиенте) для нашей команды «Выполнить».

С помощью нее Мы будем вызывать форму выбора файла.

 

На клиенте пишем процедурку выбора файла:

            

&НаКлиенте
Процедура Выбрать(Команда)
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "";
    Текст = "ru = ""Текст""; en = ""Text""";
    Фильтр = НСтр(Текст)+"(*.csv)|*.csv";
    ДиалогОткрытияФайла.Фильтр = Фильтр;
    ДиалогОткрытияФайла.МножественныйВыбор = Истина;
    ДиалогОткрытияФайла.Заголовок = "Выберите файлы";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
        Для Каждого ИмяФайла Из МассивФайлов Цикл
            ВыбФайл = Новый Файл(ИмяФайла);
            Текст = "ru = ""; Размер = ""; en = ""; Size = """;
        КонецЦикла;
    Иначе
        Текст = "ru = ""Файл(ы) не выбран!""; en = ""File(s) not selected!""";
        Предупреждение(НСтр(Текст));
    КонецЕсли;
    
КонецПроцедуры

Обрабатывать Мы будем файл *СSV расширения  разберем его на сервере и загрузим полученный результат в таб часть нашей обработки.

CSV файл состоит всего из трех полей:

  1. Email.
  2. Имя.
  3. Город.

 

 

Весь ниже приведенный код отлично работает и &НаКлиенте но почему использую сервер ?

Здесь думаю особо объяснять не надо, если нам нужны методы что работают только на сервере, к примеру это может быть «Запрос» или «Таблица значений» или сам файл у нас не простой "текстовый", а возможно что то более экзотичное ) все зависит от задачи.

Конечно в таком случаи это возможно только на сервере!

 

Мы всего лишь для наглядного примера, разберем csv файл и отправим в таб. часть обработки.

 

Теперь собственно реализуем передачу файла на сервер.

Вернемся к обработке и на вкладке «Данные» добавим «Реквизит1»  Тип укажем «Произвольный»

(На форму этот реквизит выводить не надо).

С помощь этого реквизита Мы передадим файл на сервер, предварительно поместив его во «Временное хранилище»  ресурсом для этого послужит наш «Реквизит1»

 

Чтоб это реализовать, добавим строчку ниже в нашу процедуру на «Клиенте»

Объект.Реквизит1 = ПоместитьВоВременноеХранилище(ИмяФайла);

Отлично !!!

 Теперь осталось на сервере прочитать его и обработать  «Парсить»

Для этого создадим процедуру &НаCервере

&НаСервере

Процедура НаСервере();

               ДокумОб = ПолучитьИзВременногоХранилища(Объект.Реквизит1);

               

                ТекДок = Новый ТекстовыйДокумент;

                ТекДок.Прочитать(ДокумОб);

                Для строки = 1 По ТекДок.КоличествоСтрок() Цикл

                              

                               ///////// Email

                               Стр = ТекДок.ПолучитьСтроку(Строки);

                               Позиция = Найти (Стр,";");

                              

                               Емаил = Сред(Стр,1,Позиция-1);

                              

                               ///////// Имя

                               Им = Сред(Стр,Позиция + 1);

                               НайтиИм = Найти(Им,";");

                               Имя = Сред(Им,1,НайтиИм - 1);

                               ////////

                              

                               //////// Город

                               Гор = Сред(Им,НайтиИм +1);

                               НайтиГор = Найти(Гор,";");

                               Город = Сред(Гор,1,НайтиГор - 1);

                               ////////                                              

                              

                КонецЦикла;

КонецПроцедуры;       

Все!

Отправим полученное в  «Табличную часть» нашей обработки.

Добавим код в процедуру  &НаСервере.

МояСтрока =  Объект.ТабличнаяЧасть1.Добавить();

МояСтрока.Email = Емаил;

МояСтрока.Имя = Имя;

МояСтрока.Город = Город;

Теперь чтоб  это все выполнялось с одной  кнопки «Выбрать»

Добавим вызов процедуры «НаСервере()» в процедуру  на клиенте

 

&НаКлиенте

Выбрать(Команда)

 

Вот таким вот не хитрым способом можно передавать файлы на «сервер» с «клиента»!

Если Вы уже зарегистрировались на сайте, то можете скачать эту обработку и файл csv.

С уважением, Богдан.

 

Категория: 1С Разное | Добавил: c1
Просмотров: 19145 | Загрузок: 130 | Рейтинг: 5.0/1

Выразить благодарность - Поделиться с друзьями!

 

Здесь все о технической стороне 1С!

 

Узнай, как правильно администрировать 1С Предприятие
Регистрируйся на бесплатный 7-ми дневный курс сейчас:

Ваш E-Mail в безопасности



Всего комментариев: 0
avatar