|
Загрузка из экселя на клиенте. УТ11 | ☑ | ||
---|---|---|---|---|
0
vse_serjezno
04.12.13
✎
15:45
|
Здравствуйте.
Написала загрузку из эксельной таблицы в 1с. Да вот бяда, на сервере не установлен Эксель. Что-то такое читала, что можно на клиенте открывать файлы... Будьте добры, подскажите, как в данном конкретном случает обойти эту проблему?.. Код внешней обработки: &НаКлиенте Процедура ФайлДанныхНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Текст = "ru = ""Excel""; en = ""Excel"""; Фильтр = НСтр(Текст)+"(*.xls)|*.xls"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл"; Если ДиалогОткрытияФайла.Выбрать() Тогда Объект.ФайлДанных = ДиалогОткрытияФайла.ПолноеИмяФайла; Сообщить("Выбран файл: " + ДиалогОткрытияФайла.ПолноеИмяФайла); Иначе Текст = "Файл не выбран"; Предупреждение(Текст); КонецЕсли; КонецПроцедуры &НаСервере Процедура ЗагрузитьДанныеИзФайлаСервер() ОбъектОбработкаНаСервере = РеквизитФормыВЗначение("Объект"); ФайлДанныхНаСервере = ОбъектОбработкаНаСервере.ФайлДанных; Сообщить("Идет обработка выбранного файла!.."); Попытка // Загружаем Excel ExcelПриложение = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; Попытка // Открываем файл ExcelФайл = ExcelПриложение.WorkBooks.Open(ФайлДанныхНаСервере); Исключение Сообщить("Не удалось открыть файл: " + ФайлДанныхНаСервере); КонецПопытки; Попытка // Обрабатываем файл // Читаем первую страницу книги ExcelЛист = ExcelФайл.Sheets(1); //RangeAll = ExcelЛист.UsedRange; //xlCellTypeLastCell = 11; //ПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row; ПоследняяСтрока = 100; Для счетчик = 2 по ПоследняяСтрока Цикл НовыйПартнер = Справочники.Партнеры.СоздатьЭлемент(); //Вводим название салона НазваниеСалона = СокрЛП(ExcelЛист.Cells(счетчик, 7).Value); НовыйПартнер.Наименование = НазваниеСалона; НовыйПартнер.НаименованиеПолное = НазваниеСалона; НовыйПартнер.Клиент = Истина; НовыйПартнер.ДатаРегистрации = ТекущаяДата(); //Вводим телефоны СтрокаТелефонов = СокрЛП(ExcelЛист.Cells(счетчик, 12).Value); СтрокаТелефонов = СтрЗаменить(СтрокаТелефонов, " ", ""); СтрокаТелефонов = СтрЗаменить(СтрокаТелефонов, "+", ""); ВторойТелефонПозиция = Найти(СтрокаТелефонов, ","); Если ВторойТелефонПозиция > 0 Тогда Телефон1 = Сред(СтрокаТелефонов, 1, ВторойТелефонПозиция -1); Телефон2 = Сред(СтрокаТелефонов, ВторойТелефонПозиция+1); НовыйПартнер.ИПМ_Телефон = Телефон1; Иначе Телефон1 = СтрокаТелефонов; Телефон2 = ""; НовыйПартнер.ИПМ_Телефон = Телефон1; КонецЕсли; //Вводим адрес СтрокаАдреса = СокрЛП(ExcelЛист.Cells(счетчик, 16).Value); //Заполняем специально созданный реквизит Адрес для быстрого поиска в списке НовыйПартнер.ИПМ_Адрес = СтрокаАдреса; СтрокаКонтактнойИнформации = НовыйПартнер.КонтактнаяИнформация.Добавить(); СтрокаКонтактнойИнформации.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; СтрокаКонтактнойИнформации.Вид = Справочники.ВидыКонтактнойИнформации.АдресПартнера; СтрокаКонтактнойИнформации.Представление = СтрокаАдреса; СтрокаКонтактнойИнформации.ЗначенияПолей = СтрокаАдреса; СтрокаКонтактнойИнформации.Город = СтрокаАдреса; //Вводим статус партнера СтрокаСтатуса = СокрЛП(ExcelЛист.Cells(счетчик, 2).Value); Если СтрокаСтатуса = "1" Тогда НовыйПартнер.СтатусПартнера = Справочники.СтатусПартнера.НайтиПоКоду(3); ИначеЕсли СтрокаСтатуса = "2" Тогда НовыйПартнер.СтатусПартнера = Справочники.СтатусПартнера.НайтиПоКоду(5); ИначеЕсли СтрокаСтатуса = "4" Тогда НовыйПартнер.СтатусПартнера = Справочники.СтатусПартнера.НайтиПоКоду(4); КонецЕсли; //Вводим Вид партнера, устанавливаем Виво НовыйПартнер.ТипПартнера = Перечисления.ТипыПартнеров.Виво; //Вводим ответственного СтрокаОтветственный = СокрЛП(ExcelЛист.Cells(счетчик, 13).Value); ПозицияКонцаФамилии = Найти(СтрокаОтветственный, " "); ФамилияОтветственного = СокрЛП(Сред(СтрокаОтветственный, 1, ПозицияКонцаФамилии)); Если ФамилияОтветственного = "Егорова" Тогда НовыйПартнер.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("Егорова Анна Сергеевна"); ИначеЕсли ФамилияОтветственного = "Никандрова" Тогда НовыйПартнер.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("Никандрова Елена Евгеньевна"); ИначеЕсли ФамилияОтветственного = "Балашова" Тогда НовыйПартнер.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("Балашова Любовь Викторовна"); ИначеЕсли ФамилияОтветственного = "Толмачева" Тогда НовыйПартнер.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("Толмачева Ирина"); КонецЕсли; //Вводим электронную почту СтрокаЕмэйл = СокрЛП(ExcelЛист.Cells(счетчик, 15).Value); //Вводим дополнительную информацию СтрокаЧемПользуются = СокрЛП(ExcelЛист.Cells(счетчик, 1).Value); СтрокаДатаЗвонкаВстречи = Сред(СокрЛП(ExcelЛист.Cells(счетчик, 3).Value),1,11); СтрокаКонтактноеЛицо = СокрЛП(ExcelЛист.Cells(счетчик, 5).Value); СтрокаВидЗакупки = СокрЛП(ExcelЛист.Cells(счетчик, 6).Value); СтрокаКомментарий = СокрЛП(ExcelЛист.Cells(счетчик, 8).Value); СтрокаКомментарийПослеПрезентации = СокрЛП(ExcelЛист.Cells(счетчик, 9).Value); СтрокаПрезентацияСалона = СокрЛП(ExcelЛист.Cells(счетчик, 10).Value); СтрокаДатаВремяСледующегоЗвонка = Сред(СокрЛП(ExcelЛист.Cells(счетчик, 11).Value),1, 11); СтрокаСайт = СокрЛП(ExcelЛист.Cells(счетчик, 14).Value); СтрокаУслуги = СокрЛП(ExcelЛист.Cells(счетчик, 18).Value); СтрокаЧасыРаботы = СокрЛП(ExcelЛист.Cells(счетчик, 19).Value); ТекстДопИнформации = "Контактное Лицо: "+СтрокаКонтактноеЛицо+"; Пользуются: "+СтрокаЧемПользуются+ "; Вид закупки: "+ СтрокаВидЗакупки+ ";" +Символы.ПС+ " "+Символы.ПС+ "Список телефонов: "+Телефон1+" , "+Телефон2+Символы.ПС+ " "+Символы.ПС+ "E-mail: " + СтрокаЕмэйл+ Символы.ПС+ " "+Символы.ПС+ "Адрес: "+ СтрокаАдреса+ Символы.ПС+ " "+Символы.ПС+ "Дата звонка/встречи: " + СтрокаДатаЗвонкаВстречи +"; Дата следующего контакта: "+ СтрокаДатаВремяСледующегоЗвонка +Символы.ПС + "Сайт организации: "+ СтрокаСайт + Символы.ПС+ " "+Символы.ПС+ "Услуги: "+СтрокаУслуги + Символы.ПС + " "+Символы.ПС+ "Часы работы: " + СтрокаЧасыРаботы + Символы.ПС + " "+Символы.ПС+ "Комментарий: "+ СтрокаКомментарий+Символы.ПС+ " "+Символы.ПС+ "ПрезентацияСалона:"+СтрокаПрезентацияСалона+ Символы.ПС+ " "+Символы.ПС+ "Комментарий после презентации: "+СтрокаКомментарийПослеПрезентации; НовыйПартнер.ДополнительнаяИнформация = ТекстДопИнформации; //Вводим комментарий НовыйПартнер.Комментарий = "Партнер добавлен из таблицы Excel"; //Записываем партнера НовыйПартнер.Записать(); КонецЦикла; ExcelПриложение.Quit(); Исключение Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); // Закрыть COM соединение для экономии памяти ExcelПриложение.Quit(); КонецПопытки КонецПроцедуры |
|||
1
vse_serjezno
04.12.13
✎
15:48
|
Если на клиенте открывать приложение, получать файл:
Попытка // Загружаем Excel ExcelПриложение = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; Попытка // Открываем файл ExcelФайл = ExcelПриложение.WorkBooks.Open(ФайлДанныхНаСервере); Исключение Сообщить("Не удалось открыть файл: " + ФайлДанныхНаСервере); КонецПопытки; А потом передавать его в процедуру на сервер, он будет там читаться?.. |
|||
2
banco
04.12.13
✎
15:55
|
(1) можешь прочитать весь файл на клиенте и потом передавать прочитанное на сервер для обработки
|
|||
3
DexterMorgan
04.12.13
✎
15:56
|
АДО
|
|||
4
vse_serjezno
04.12.13
✎
15:57
|
(2) Как выглядит "прочитать весь файл"?.. можно поподробнее?..
|
|||
5
vse_serjezno
04.12.13
✎
15:59
|
Мне потом еще нужно будет выгрузку из 1с в Эксель делать...((
печаль, бяда, что он на сервере не установлен... |
|||
6
banco
04.12.13
✎
15:59
|
(4) можешь в том же ут 11 посмотреть в документе "установка цен номенклатуры" загрузка из Excel
|
|||
7
vse_serjezno
04.12.13
✎
16:07
|
(6) Она там на с клиента читает чтоли?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |