Имя: Пароль:
1C
1С v8
Каким образом можно загрузить накладную из екселя в 1с 8?
,
0 Сергей-88
 
22.10.11
12:59
1. другим методом, свои вариант 100% (1)
2. Методом COM, OLE 0% (0)
3. с помощью XML 0% (0)
Всего мнений: 1

Привет друзья :-)
Есть задача-
Загрузить товары которые приходят в накладной в файле ексель или опен офисса сразу в документ- поступление товаров и услуг. Вот каким методом это лучше сделать?
1 shuhard
 
22.10.11
13:01
(0) ADODB
все прочие от лукавого

другим методом, свои вариант
2 Сергей-88
 
22.10.11
13:03
А каким образом это можно реализовать? Где можно про это почитать
3 Сергей-88
 
22.10.11
13:15
А что это за механизм такой Adodb?

Почему он работает быстрее чем оле и чем отличается?
4 zak555
 
22.10.11
13:16
сохранить в cvs ?
5 aleks-id
 
22.10.11
13:18
строга 2-3 раза в неделю возникают такие темы. неужели поиском никто не умеет пользоваться?
6 Сергей-88
 
22.10.11
13:20
А cvs это что такое?
7 wade25
 
22.10.11
13:21
Две недели назад делал тож самое =)

Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
позволит нам получить доступ через переменную "Эксель" к запущенному приложению Excel. А далее уже можно получить доступ к книге (файлу), листу и ячейке с данными. Далее примеры кода.

Открываешь файл
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);

Страницу номер или имя пишешь
Лист = Книга.WorkSheets(НомерЛиста);
или
Лист = Книга.WorkSheets(ИмяЛиста);

Загоняешь в цикл вот это
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;

 Это просто и удобно.
Иди вот так, http://1cprofi.com/content/view/19/46/

 А вообще я нуб и сам не знаю как лучше =)
8 Сергей-88
 
22.10.11
13:39
Спасибо за код, но это по Ole соединение, я его делал, но вот сегодня прочитал что через ADODB БУДЕТ ГРУЗИТСЯ быстрее чуть ли не в 10 раз. То что грузится по оле за час с помощью адоб загрузится за 20 секунд. Вот и ищу как бы понять это адоб
9 aleks-id
 
22.10.11
14:03
1. скачать и установить на комп http://www.microsoft.com/download/en/details.aspx?id=23734
2. код для работы

СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+Путь;
       СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=NO;IMEX=1"";";
       
   // Подключаемся

   Об_Конект = Новый COMОбъект("ADODB.Connection");
   Попытка
       Об_Конект.Open(СтрокаПодключения);
   Исключение
       Сообщить ("Невозможно подключится к Microsoft Excel Driver!!!
       |Возможно файл ["+Путь+"] открыт другим пользователем.");
       Возврат;
   КонецПопытки;
       
   СтрЗапроса = "
   |SELECT *
   |FROM [A" + Формат(НачальнаяСтрока,"ЧГ=0") + ":CZ" + Формат(КонечнаяСтрока,"ЧГ=0") + "]
   |";
       
   Попытка
       RecordSet = Об_Конект.Execute(СтрЗапроса);
   Исключение
       Сообщить("Не удалось выполнить запрос к файлу Excel
       |"+ ОписаниеОшибки(),СтатусСообщения.Важное);
       Возврат;
   КонецПопытки;

дальше в цикле обходим рекордсет
10 Сергей-88
 
22.10.11
14:41
Получается мы выбираем последовательно каждую строчку, а как в этой строчке обратится к нужному столбцу?
11 Сниф
 
22.10.11
14:49
(10) в 7 написано :)

Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
12 Сергей-88
 
22.10.11
14:51
А разве этот код в adodb будет работать? Например вот мы получили запросом данные листа, :-)
13 Сниф
 
22.10.11
15:00
(12) я запросом еще ни разу так не делал, хотя так, наверное, быстрее.
Дело не в быстроте. Вы же не сами это будете делать? Менеджер.
14 Сергей-88
 
22.10.11
15:04
Согласен:-)
Ну просто я как то грузил по ole прайс из екселя в 1с 8.2 УТ 11 ред. В прайсе 7 тыс строк. 2 часа грузилось.
15 Фокусник
 
22.10.11
15:10
(14) в эти 2 часа наверное не только загрузка данных из экселя делалась, но и создание кучи разных объектов в базе. В это и медленно скорее всего (вот что нужно оптимизировать), и тут никакие ADODB не ускорят процесс ;)
16 Сергей-88
 
22.10.11
15:17
Понятно. :-)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс