Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Загрузка из файла .xls в 1С. 2 страниц V   1 2 >          
MH.z Подменю пользователя
сообщение 25.05.12, 13:06
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день!
Конфигурация УТ 11.
Ситуация следующая. Надо в базу 1С загрузить файл экселя, но на сервере на котором находится база, нет экселя. Как это можно сделать? С загрузкой документов еще не разу не работал, поэтому надеюсь на Вашу помощь!

logist Подменю пользователя
сообщение 25.05.12, 13:11
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(MH.z @ 25.05.12, 14:06) *
Как это можно сделать?

Поставить эксель.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

MH.z Подменю пользователя
сообщение 25.05.12, 13:14
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

А если нет возможности его туда установить?

Acid Подменю пользователя
сообщение 25.05.12, 13:18
Сообщение #4

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

Эксель должен стоять на клиентской машине. дальше есть стандартная обработка по загрузке этих файлов.


Signature

Документируйте Код! мать вашу...


Vofka Подменю пользователя
сообщение 25.05.12, 13:21
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4522 раз
Рейтинг: 3645.4

Цитата(MH.z @ 25.05.12, 14:14) *
А если нет возможности его туда установить?

Сказать, что нет возможности загружать на сервере из эксэля.

Сообщение отредактировал Vofka - 25.05.12, 13:21

Ardi Подменю пользователя
сообщение 25.05.12, 13:37
Сообщение #6

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Можно без экселя грузить. Гуглите 1с Excel ADO


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

MH.z Подменю пользователя
сообщение 26.05.12, 13:20
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Подскажите пожалуйста как можно из внешней обработки загрузить эксель? Чтобы он загрузился в форму.

MH.z Подменю пользователя
сообщение 28.05.12, 13:01
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Попробую описать более подробнее. и все же надеюсь на Вашу помощь!!!
Есть внешняя обработка в которой присутствует Табличный документ и на форме расположена кнопка. Так вот, как сделать чтобы при нажатии на кнопку загружался файл экселя в табличную часть формы???
Спасибо!

Acid Подменю пользователя
сообщение 28.05.12, 13:03
Сообщение #9

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
    ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xls)|*.xls|";
    Если ДиалогВыбораФайла.Выбрать() Тогда
        ТабличныйДокумент = ЭлементыФормы.ТЗ;
        ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла);
        Если нРег(ФайлНаДиске.Расширение) = ".xls" Тогда
            мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла);
        КонецЕсли;
    КонецЕсли;


Signature

Документируйте Код! мать вашу...


Спасибо сказали: MH.z,

MH.z Подменю пользователя
сообщение 28.05.12, 13:36
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Не пойму, что мне эта процедура или функция даст? Можно объяснить пожалуйста?

Acid Подменю пользователя
сообщение 28.05.12, 13:44
Сообщение #11

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

загрузит в табличное поле данные из файла.


Signature

Документируйте Код! мать вашу...


MH.z Подменю пользователя
сообщение 28.05.12, 13:49
Сообщение #12

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Сделал следующее :
&НаКлиенте
Процедура Загрузить(Команда)
     ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
    ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xlsx)|*.xlsx|";
    Если ДиалогВыбораФайла.Выбрать() Тогда
        ТабличныйДокумент = ЭлементыФормы.ТЗ;
        ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла);
        Если нРег(ФайлНаДиске.Расширение) = ".xlsx" Тогда
            мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Это сама кнопка.
И добавил функцию в модуль объекта
Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт
    
    xlLastCell = 11;
    
    ВыбФайл = Новый Файл(ИмяФайла);
    Если НЕ ВыбФайл.Существует() Тогда
        Сообщить("Файл не существует!");
        Возврат Ложь;
    КонецЕсли;
    
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ИмяФайла);
        Состояние("Обработка файла Microsoft Excel...");
        ExcelЛист = Excel.Sheets(НомерЛистаExcel);
    Исключение
        Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
        Возврат ложь;
        
    КонецПопытки;
    
    ТабличныйДокумент.Очистить();
    
    ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
    RowCount = ActiveCell.Row;
    ColumnCount = ActiveCell.Column;
    Для Column = 1 По ColumnCount Цикл
        ТабличныйДокумент.Область("C" + Формат(Column, "ЧГ=")).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth;
    КонецЦикла;
    Для Row = 1 По RowCount Цикл
        
        Для Column = 1 По ColumnCount Цикл
            ТабличныйДокумент.Область("R" + Формат(Row, "ЧГ=") +"C" + Формат(Column, "ЧГ=")).Текст = ExcelЛист.Cells(Row,Column).Text;
        КонецЦикла;
        
    КонецЦикла;
    
    Excel.WorkBooks.Close();
    Excel = 0;
    
    Возврат Истина;
    
КонецФункции // ()


Выдает ошибку :

{Форма.Форма.Форма(8,29)}: Переменная не определена (ЭлементыФормы)
        ТабличныйДокумент = <<?>>ЭлементыФормы.ТЗ; (Проверка: Тонкий клиент)
{Форма.Форма.Форма(11,13)}: Процедура или функция с указанным именем не определена (мПрочитатьТабличныйДокументИзExcel)
            <<?>>мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла); (Проверка: Тонкий клиент)


И такую ошибку:
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(15,3)}: Процедура или функция с указанным именем не определена (Состояние)
        <<?>>Состояние("Обработка файла Microsoft Excel..."); (Проверка: Сервер)

Acid Подменю пользователя
сообщение 28.05.12, 13:55
Сообщение #13

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

На Клиенте вызываете Процедуру или Функцию, которая будет вызывать серверные функции/процедуры.


Signature

Документируйте Код! мать вашу...


MH.z Подменю пользователя
сообщение 28.05.12, 14:12
Сообщение #14

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Все равно эта ошибка остается:
{Форма.Форма.Форма(8,29)}: Переменная не определена (ЭтотОбъект)
        ТабличныйДокумент = <<?>>ЭтотОбъект.ТЗ; (Проверка: Тонкий клиент)
{Форма.Форма.Форма(11,13)}: Процедура или функция с указанным именем не определена (мПрочитатьТабличныйДокументИзExcel)
            <<?>>мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла); (Проверка: Тонкий клиент)


в функцию мПрочитатьТабличныйДокументИзExcel добавил "#Если Клиент Тогда" "#КонецЕсли"


Acid Подменю пользователя
сообщение 28.05.12, 16:32
Сообщение #15

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

Цитата(MH.z @ 28.05.12, 15:12) *
в функцию мПрочитатьТабличныйДокументИзExcel добавил "#Если Клиент Тогда" "#КонецЕсли"

Неправильно.
И вместо ЭтотОбъект надо использовать или ЭтаФорма или ТекущиеДанные. посмотрите в синтакс-помошнике.


Signature

Документируйте Код! мать вашу...


Vofka Подменю пользователя
сообщение 28.05.12, 19:01
Сообщение #16

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4522 раз
Рейтинг: 3645.4

Невозможное возможно? smile.gif Excel все же установлен?

MH.z Подменю пользователя
сообщение 29.05.12, 9:08
Сообщение #17

Говорящий
***
Группа: Пользователи
Сообщений: 75
Из: Харьков
Спасибо сказали: 0 раз
Рейтинг: 0

Пропустил один момент smile.gif Эксель то на сервере не установлен. Надо через макет делать. Спасибо всем smile.gif

Acid Подменю пользователя
сообщение 29.05.12, 9:14
Сообщение #18

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

ну... раз не получилось намеком
убираете из модуля формы вызов общего модуля. Вместо него ставите эту функцию (которая находится в обработке, и вызывается этой общей функцией)
Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт
    
    xlLastCell = 11;
    
    ВыбФайл = Новый Файл(ИмяФайла);
    Если НЕ ВыбФайл.Существует() Тогда
        Сообщить("Файл не существует!");
        Возврат Ложь;
    КонецЕсли;
    
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ИмяФайла);
        Состояние("Обработка файла Microsoft Excel...");
        ExcelЛист = Excel.Sheets(НомерЛистаExcel);
    Исключение
        Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
        Возврат ложь;
        
    КонецПопытки;
    
    ТабличныйДокумент.Очистить();
    
    ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
    RowCount = ActiveCell.Row;
    ColumnCount = ActiveCell.Column;
    Для Column = 1 По ColumnCount Цикл
        ТабличныйДокумент.Область("C" + Формат(Column, "ЧГ=")).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth;
    КонецЦикла;
    Для Row = 1 По RowCount Цикл
        
        Для Column = 1 По ColumnCount Цикл
            ТабличныйДокумент.Область("R" + Формат(Row, "ЧГ=") +"C" + Формат(Column, "ЧГ=")).Текст = ExcelЛист.Cells(Row,Column).Value;
        КонецЦикла;
        
    КонецЦикла;
    
    Excel.WorkBooks.Close();
    Excel = 0;
    
    Возврат Истина;
    
КонецФункции // ()


Signature

Документируйте Код! мать вашу...


Vofka Подменю пользователя
сообщение 29.05.12, 9:54
Сообщение #19

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4522 раз
Рейтинг: 3645.4

Acid, эксэля нету! smile.gif

Acid Подменю пользователя
сообщение 29.05.12, 10:27
Сообщение #20

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 378 раз
Рейтинг: 262

на сервере нету, а на клиенте есть.


Signature

Документируйте Код! мать вашу...


Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 22.05.24, 5:30
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!