Загрузка из EXCEL в 1С на платформе 8.3.6/8.3.7/8.3.8/8.3.9/8.3.10 (с картинками)

0. Андрей М. (StepByStep) 2649 04.04.15 17:13 Сейчас в теме
Импорт содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в таблицу значений.

Перейти к публикации

Комментарии
1. Андрей М. (StepByStep) 2649 04.04.15 18:24 Сейчас в теме
УДАЧНОГО ПРИМЕНЕНИЯ ...
mchammer4; myr4ik07; veiuper; kostyaomsk; 256mb; fvadim; +6 Ответить
2. Константин Юрин (kostyaomsk) 71 07.04.15 05:49 Сейчас в теме
Где-то про схожее уже писали, но чтоб не возиться нужно быстро найти шаблоны кода когда есть экстренная необходимость. Может, про картинки разве что. Попадаются задачи парсинга сайтов с использованием 1С.
3. Андрей М. (StepByStep) 2649 07.04.15 09:52 Сейчас в теме
(2) kostyaomsk,
Почерпнул из описании нововведений к платформе 8.3.6.
4. Павел Алексеенко (qwinter) 505 07.04.15 15:01 Сейчас в теме
Зачем здесь все кроме
ТабличныйДокумент.Прочитать(ФайлEXCEL, СпособЧтенияЗначенийТабличногоДокумента.Значение);
?????

Скоро синтаксис-помощник будут публиковать...
5. Андрей М. (StepByStep) 2649 07.04.15 18:07 Сейчас в теме
(4) qwinter,

В данной публикации приводится пример реализации функционала импорта из файлов EXCEL (xlsx, xls, ods) в таблицу значений в режиме 1С:Предприятие на платформе 8.3.6.


Приведенный функционал вполне подходит для примера, о чем и написано выше в тексте публикации..
sheffchik; +1 Ответить
6. ООО Пластторг (strangers) 18.05.15 18:26 Сейчас в теме
Не считывает картинки из excel
7. Андрей М. (StepByStep) 2649 19.05.15 12:52 Сейчас в теме
(6) strangers,
Картинки должны находиться в пределах ячейки. В одной ячейке может быть несколько картинок.
В результирующую таблицу значений записываются ссылки на файлы картинок.
В ячейке, содержащей какртинки не должно быть ничего другого (текст, число и т.д.).
8. Вадим Питон (mostovaya) 29.05.15 11:32 Сейчас в теме
Чем данный очередной загрузчик из эксель выделяется на фоне многих других?
9. Андрей М. (StepByStep) 2649 29.05.15 19:16 Сейчас в теме
(8) mostovaya,
Тем, что построен на возможностях новой платформы 8.3.6.
10. rasswet (rasswet) 80 05.06.15 11:31 Сейчас в теме
а заполнять именованные области без использования ком объекта Эксель можно будет?
11. Андрей М. (StepByStep) 2649 08.06.15 13:46 Сейчас в теме
(10) rasswet,
Можно, если формировать ТабличныйДокумент, а не ТаблицуЗначений как здесь.
EXCEL не нужен.
12. Максим (tesseract) 10.06.15 10:31 Сейчас в теме

КонечнаяКолонка = ТабличныйДокумент.ШиринаТаблицы; // 8.3.6.1760 некорректно определяет количество колонок (например, >=1025 для xlsx, =256 для xls).


Все читается корректно. Просто ТД может содержать строки с разным количеством колонок. Поэтому правильный вариант :

КоличествоКолонок = ТабличныйДокумент.ПолучитьОбласть(1,,1).ШиринаТаблицы;


Так мы получим реальное количество колонок в строке.
13. Андрей М. (StepByStep) 2649 10.06.15 20:14 Сейчас в теме
(12) tesseract,
СПАСИБО.
И в качестве развития мысли предлагаю:
КолВоКолонокФайла = ТабличныйДокумент.ПолучитьОбласть().ШиринаТаблицы;

В этом случае получим реальное количество колонок, вне зависимости от заполнения 1-ой строки.
(последние колонки, не имеющие заполненной 1-ой строки также будут учтены.)
14. Roman Sam (shydla) 18.06.15 14:14 Сейчас в теме
Из xlsx картинки грузится, из xls - на доступно для чтения(
15. Vasiliy Gololobov (GVasiliy) 19 08.07.15 14:31 Сейчас в теме
Нашел маленькую ошибку.
Переменная "СтрокаЗаголовка" не используется.
Для цикла считывающего наименования колонок следует исправить на:


НоваяСтрокаТФ[ИмяКолонки] = ТабличныйДокумент.ПолучитьОбласть("R" + Формат(СтрокаЗаголовка,"") + "C"+нКолонка).ТекущаяОбласть.Текст;
16. Алексей Непутин (mamanelli) 33 13.07.15 14:41 Сейчас в теме
ТабличныйДокумент.Прочитать(ФайлEXCEL, СпособЧтенияЗначенийТабличногоДокумента.Значение);

А почему никто не пишет, что при использовании директивы"&НаСервере" в клиент-серверном варианте файл должен располагаться либо по сетевому пути, либо на сервере, где установлен "Агент сервера 1С:Предприятия 8.3 (x86-64)"?
irbis-auto; AGLux; NN2P; s03; dedicated; veiuper; RomaM; +7 Ответить 2
17. urbanist Железняков (urbanist) 57 15.07.15 11:20 Сейчас в теме
Нужно ли для корректной работы этого функционала у "старых" конфигураций изменять режим совместимости?

А то не хочет работать в 8.3.6 (2076)

{Форма.Форма.Форма(26)}: Ошибка при вызове метода контекста (Прочитать)
ТабДок.Прочитать("D:\1.xls");
по причине:
Ошибка при выполнении файловой операции.

С любым параметром "СпособЧтенияЗначенийТабличногоДокумента" то же самое.



18. Сергей Самарин (Samarin) 96 16.07.15 14:19 Сейчас в теме
(17) urbanist, для использования данной возможности необходима платформа 8.3.6 с отключенным режимом совместимости.
Сейчас подобные вещи можно тестировать и смотреть на тестовых ЗУП 3.0.23 и БП 3.0.41, которые переводят на 8.3.6 со снятием режима совместимости (БСП версия 2.3).
19. Андрей М. (StepByStep) 2649 16.08.15 15:32 Сейчас в теме
(14) shydla,
На платформе 8.3.6.2152 читает.
20. Андрей М. (StepByStep) 2649 16.08.15 15:33 Сейчас в теме
21. Андрей М. (StepByStep) 2649 16.08.15 15:34 Сейчас в теме
(16) mamanelli,
Да, так и есть. Это стандартно в клиент-серверном варианте.
22. Андрей М. (StepByStep) 2649 16.08.15 15:39 Сейчас в теме
(17) urbanist, (18) Samarin,
Режим совместимости не причем.
Не открыт ли файл в EXCEL?
Еще столкнулся с тем, что какая-то из версий LibreOffice коверкала файлы.
Поэтому рекомендую использовать MS EXCEL.
23. Александр Синиченко (nytlenc) 71 21.08.15 08:34 Сейчас в теме
В Функции
Функция ЗагрузитьМетодом_1C836(Знач ФайлEXCEL, Знач СтрокаЗаголовка = 1, НачСтрока = 0, КонСтрока = 0, КолвоСтрокФайла = 0)

замени строку:
Область = ТабличныйДокумент.ПолучитьОбласть("R"+нСтрока + "C"+нКолонка);

на:
Область = ТабличныйДокумент.ПолучитьОбласть("R"+Формат(нСтрока,"ЧГ=0") + "C"+Формат(нКолонка, "ЧГ=0"));

В противном случае когда итератор нСтрока или нКолонка достигнет значения 1000 будет подставляться как "1 000" соответственно
"R"+нСтрока + "C"+нКолонка
например будет равен значению "C1 000R1" или "C1R1 000" а такой области не существует. Будет ошибка в общем.
24. Андрей М. (StepByStep) 2649 01.09.15 12:55 Сейчас в теме
(23) nytlenc,
СПАСИБО. Правильно.
25. Иван Коротеев (kiv1c) 334 02.09.15 17:35 Сейчас в теме
(16) mamanelli, то есть, в клиент-серверном варианте нет возможности прочитать файл с локального компьютера пользователя? и как быть?
26. Артём Артёмов (TeMochkiN) 04.09.15 10:21 Сейчас в теме
(25) kiv1c,
ТабличныйДокумент (SpreadsheetDocument)
Прочитать (Read)
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
27. Иван Коротеев (kiv1c) 334 09.09.15 10:01 Сейчас в теме
(26) TeMochkiN, да, я разобрался, с клиента на сервер можно передать прочитанные из файла двоичные данные, потом на сервере их записать во временный эксель-файл и читать табличным документом из него.
28. Serg Morales (Morales) 13.11.15 18:15 Сейчас в теме
Функция ТолькоЦифрыИЗапятаяВСтроке не отлавливает отрицательные числа
Надо добавить условие:
// Проверка на отрицательное число
Если Сред(СтрокаПроверки, 1, 1) = "-" Тогда
	СтрокаПроверки = Сред(СтрокаПроверки, 2, СтрДлина(СтрокаПроверки));
КонецЕсли; 
...Показать Скрыть
29. Андрей М. (StepByStep) 2649 15.11.15 18:36 Сейчас в теме
30. Мария Кассаева (Lazerka) 19.11.15 13:49 Сейчас в теме
Подскажите, а как загружать в 1с 8.3 из екселя формата xlsb это двоичные данные.
31. Сергей Скрынник (nofx) 20.11.15 09:37 Сейчас в теме
(30) Lazerka, Также интересен этот вопрос.
32. Андрей М. (StepByStep) 2649 20.11.15 10:38 Сейчас в теме
(30) Lazerka, (31) nofx,
СПАСИБО.
Загрузка из XLSXB возможна черз ADODB.
Строка соединения = "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + ФайлEXCEL + ";ReadOnly=1;"
33. Сергей Скрынник (nofx) 04.12.15 01:48 Сейчас в теме
34. Рамиль Хисматуллин (ram8291) 17.01.16 15:35 Сейчас в теме
Считываются все Листы Excel. Не понятно как считать только один Лист?
Наконец 1С родила долгожданный функционал!

35. Андрей М. (StepByStep) 2649 24.04.16 19:09 Сейчас в теме
(34) ram8291,
Из текста публикации:
О файле EXCEL:
В общем случае файл EXCEL содержит несколько листов с данными.
Метод табличного документа "Прочитать" читает все листы в 1 (один) табличный документ.
Поэтому в исходном файле EXCEL должен быть только один лист.
36. Гость 10.05.16 19:48 Сейчас в теме
Проблема: числовые значения заполняются в Таблицу Значений правильно (как числа) из файла Эксель (через Табличный Документ), только если числа не содержат десятичной (дробной) части. Если есть дробная часть, то они записываются как текстовые значения, либо как тип Дата.

Пытался менять региональные настройки ("," или "." в качестве разделителей дробной части) и Региональные настройки базы данных 1С - безрезультатно.
37. Андрей М. (StepByStep) 2649 15.05.16 19:23 Сейчас в теме
(36) Гость,
Рекомендовал бы Вам обратить внимание на обработку Импорт из внешнего источника в 1С: infostart.ru
В ней механизм загрузки данным методом уточнен (несколько изменен функционал по типизации значений).
38. phil pro (phil1n) 20.07.16 14:46 Сейчас в теме
На платформе 8.3.6.2299 даты со временем в интервале 11:59:30 - 11:59:59 не считываются
39. Андрей М. (StepByStep) 2649 21.07.16 13:38 Сейчас в теме
(38) phil1n,
В том числе не берет и некоторые форматы даты (в общем-то "экзотические"), существующие в EXCEL.
40. Александр Чебыкин (borzyj) 1 10.10.16 01:43 Сейчас в теме
Есть еще нюанс
при работе с файлами эксель формата офис 95 вызывается исключение, учтите это на коммерческих проектах
41. Андрей М. (StepByStep) 2649 30.10.16 17:41 Сейчас в теме
(40) borzyj,
Старый формат.
Можно пересохранить файл в более современном формате каким-либо офисом.
42. Александр Чебыкин (borzyj) 1 20.11.16 04:11 Сейчас в теме
(41) StepByStep,
Была у меня задача, когда было необходимо загружать заказы от покупателей, приходящие в формате XL 95, база в клиент-серверном варианте, обработка на сервере, где офис не установлен, и никакого автоконвертера я не нашел, пришлось использовать другой способ обработки файла без установки мс Офис на сервер
43. Зоя Сорокина (Soikalv) 16.12.16 12:37 Сейчас в теме
Очень интересная и полезная обработка. На 8.2. очень часто была нужна и нужна на 8.3. переход на 8.3 - вынужденный. Объясните, почвему ядолжна выкладывать 1200 рублей, если переход на 8.3. был вынужден? Меня все устраивало..
44. Олег Медведев (olgerd666) 28 16.12.16 12:45 Сейчас в теме
(43) Вы о чем? это не обработка, это бесплатная статья, в которой рассказывается как можно загрузить из Экселя в 1С, приводится метод который автор предлагает воспользоваться.
Про переход с 8.2 на 8.3 тут ничего не говорится, денег автор тоже не требует за свою статью.
45. Александр Хомяк (logarifm) 974 09.05.17 12:06 Сейчас в теме
сделайте обработкой и залейте для скача. Спасибо!
46. Игорь Лисицкий (lisrws) 65 19.05.17 21:25 Сейчас в теме
с конструкцией для определения количества колонок "ОбластьФайла.ПолучитьРазмерОбластиДанныхПоГоризонтали()" будьте осторожны. она определяет количество колонок по первой строке. у меня в первой строке 6 колонок с данными, а с 7 строки уже 8 колонок. конструкция возвращает мне 6. если в первой строке добавить данные в 7 и 8 колонки, то вернет 8 как и должно быть. релиз "8.3.10.2252"
47. Андрей М. (StepByStep) 2649 07.06.17 14:18 Сейчас в теме
(45)
Практическое применение:
"Импорт из EXCEL и других источников (xls, xlsx, xlsb, ods, sxc, dbf, mxl, csv, clipboard, sql) в 1С"
http://infostart.ru/public/120961/
48. Андрей М. (StepByStep) 2649 07.06.17 14:21 Сейчас в теме
(46)
Совершенно верно, так и есть.
При загрузке предполагается, что исходная таблица должным образом оформлена, т.е. со всей заполненной 1-ой строкой.
Оставьте свое сообщение