4 способа прочитать Excel в 1С

4 способа прочитать Excel в 1С

IRONSKILLS - Курсы по 1С

11 месяцев назад

26,269 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

Alexey Nelepa
Alexey Nelepa - 17.09.2023 22:39

Кайф вообще! По работе сталкиваешься не раз с такими задачами, при выборе более универсальной и быстрой загрузки, самый полезный контент, спасибо огромное за материал!

Ответить
AlexeySimf
AlexeySimf - 17.09.2023 21:19

Стоит отметить, что Прочитать (в табличный документ) не работает с файлами Excel старых версий, например, если файл выгружен из 1с 7.7, раз уж мы в контексте 1с.

Ответить
Быстро и полезно о разработке на 1С
Быстро и полезно о разработке на 1С - 08.09.2023 16:35

Еще можно через внешние источники данных, тогда можно сразу запросы на СКД делать к данным экселя.

Ответить
karambaichick iz_gondurasa
karambaichick iz_gondurasa - 08.09.2023 05:21

Как всегда шикарно!

Ответить
Виссарион Балашефф
Виссарион Балашефф - 07.09.2023 13:36

Спасибо! Очень полезный контент.
Для определения количества строк и колонок в 3-м способе лучше использовать:
КоличествоКолонок = Лист.UsedRange.Columns.Count();
КоличествоСтрок = Лист.UsedRange.Rows.Count();

Ответить
Filaret Busoni
Filaret Busoni - 06.09.2023 16:27

Во втором способе если не писать Выгрузить(), Загрузить(), а обойти результат в выборке и заполнить строки, то скорость будет еще быстрее.

Ответить
Шахло
Шахло - 04.09.2023 15:08

💥💥

Ответить
Mori Ataee
Mori Ataee - 04.09.2023 11:58

Это было хорошо, и я использовал это

Ответить
Петр Викторович Дорожкин
Петр Викторович Дорожкин - 04.09.2023 08:11

Огонь.🙃🙃🙃

Ответить
Who Am I
Who Am I - 30.08.2023 21:40

В 1 и 2 примерах как можно по странично получить эксель? 1 и 2 примераз там все в 1 документ а если 2 и более страниц и разные колонки?

Ответить
Dionis
Dionis - 30.08.2023 15:44

Отличное видео Иван! Недавно решал задачу, где нужно было вытащить данные из табличной части внешнего документа exel -заявки на запчасти, с шапкой в несколько строк и различными подписями и расшифровками в подвале, пришлось помучиться с анализом содержимого загружаемых ячеек.

Ответить
Anton Foxy
Anton Foxy - 29.08.2023 12:06

Самое главное не забыть что, табДок.Прочитать(Путь_КФайлуНаСервере, СпособЧтенияЗначенийТабличногоДокумента.Текст); обязательно укажите способ чтения данных, если вам данные нужны как строка

Ответить
Андрей Су
Андрей Су - 28.08.2023 18:37

Спасибо. Как всегда отличный ролик.

Ответить
Евгений Медведев
Евгений Медведев - 28.08.2023 18:09

Не для всех табличных документов работает способ с построителем запросов или построителем отчетов. Если первая строка таблицы иксель пустая, то будет ошибка.

Ответить
Александр Кравченко
Александр Кравченко - 28.08.2023 11:30

2 последних способов подходят только для Winows-систем.
Сам пользуюсь уже давно 2-м способом, через построитель.

Ответить
Шалунья Попрыгунья
Шалунья Попрыгунья - 28.08.2023 09:55

очень полезное видео, описаны все основные варианты, но есть нюансы. Часто приходится читать и записывать данные 1С-Эксель и обратно. COM-соединение не всегда можно использовать, и OLE тоже, так что всегда пользовалась методом 1, с полгода назад в очередной задаче воспользовалась для реализации методом через построитель. И вот с метод с построителем очень прям удобный в плане кода, не нужно читать каждую ячейку (у меня по 30 колонок в таблице и порядка 50000строк), на практике столкнулась с косяками при чтении и записи. Например, с чтением возникла проблема типизации колонок. То есть, когда НЕ заполнена ячейка тип значения строка, а если заполнена, то число (или наоборот, точно не помню, были нюансы). Как этого избежать? При записи файла экселя тоже столкнулась с такими трудностями, что если текст ячейки не помещается в ячейку, то при записи он заносится в соседнюю ячейку справа от записываемой, опять же файл я получаю от подрядчика, они себе вообще не дают труд типизировать данные, передают тип Общий. Видимо, я что-то упускаю. Первый метод работает вполне корректно, но из-за описанных выше проблем, с построителем мне не понравилось на данный момент, буду разбираться, возможно, придется использовать другой метод, пока не знаю, какой лучше. В любом случае спасибо за разбор актуальной всегда темы.
Если есть совет, подскажите, пожалуйста, как избежать проблем при преобразовании значений при чтении и записи. Большое спасибо за Вашу работу!

Ответить
Роман Кислинский
Роман Кислинский - 28.08.2023 09:46

Как всегда на уровне! Красава!

Ответить
fizik 12345
fizik 12345 - 28.08.2023 00:31

Эх, а как же прямое чтение xml из xlsx? 😂

Ответить
Al
Al - 27.08.2023 20:47

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

Ответить
triviumfan
triviumfan - 27.08.2023 19:52

Есть к чему прицепится, в смысле неточности, но в целом - очень грамотно и доступно. Лектор молодец.

Ответить
Oleg Kim
Oleg Kim - 27.08.2023 18:50

И еще при OLE - не все методы Excel доступны из 1С ... , ADO не пробовал с EXCEL, но сталкивался - не установлен драйвер ODBC - для других приложений ... а так надо переходить наверное на OpenOffice наверное .. ? Ввиду санкций? Похоже самый популярный метод - через Построитель запрос ?

Ответить
Александр Ребиков
Александр Ребиков - 27.08.2023 18:28

А если в экселе куча формул и надо их сохранить? Я пока 3им способом пользуюсь так как переживаю что какие то формулы могу затереться при всех преобразованиях.

Ответить
Tikey L
Tikey L - 27.08.2023 13:36

Подскажите какой шрифт у Ивана стоит, пожалуйста.

Ответить
Sasha Perevisly
Sasha Perevisly - 27.08.2023 13:22

Спасибо, за сравнительный обзор!

Ответить
Imba Grille
Imba Grille - 27.08.2023 10:30

Как исправляли пропущенную кавычку в строке соединения ADO так и не показали) Спасибо за видео!

Ответить
Dan Xai
Dan Xai - 27.08.2023 07:42

Запустить счётчик от 1 , а потом проверять не равен ли счётчик 1? Л - логика.

Ответить
Андрей Павлович
Андрей Павлович - 27.08.2023 00:28

Спасибо за урок! А как заставить 1С создавать документы поступления или реализации по файлу эксель ? читая его заполненные строки. Хочется научиться парсить эксель файлы в 1С.

Ответить
Антон Долгих
Антон Долгих - 26.08.2023 21:52

Огромное Вам спасибо, Иван за то что делитесь знаниями, да ещё с такой крутой подачей! Лайк сразу поставил(еще до просмотра!), потому что не сомневался в качестве, ну а комментарий-это мотивация для продолжения и развития канала. Я совсем недавно в этой сфере, но контента, который был бы более качественный, чем Ваш, я пока не встретил. Единственный // комент
Почаще пилите ролики!!!! 😉

Ответить
Павел Толкачев
Павел Толкачев - 26.08.2023 21:10

1. Чтобы пользователя не пугать системной информацией (номер строки, текст кода этой строки, стек вызовов и т.п.) в сообщениях об ошибке лучше вместо "ОписаниеОшибки()" использовать "КраткоеПредставлениеОшибки(ИнформацияОбОшибке())".
2. Вопрос по третьему способу. А почему ошибка запуска Excel обрабатывается "мягко", а открытие файла нет? Другими словами, почему "Книга = Эксел.Workbooks.Open(ПутьКФайла)" не заключено в "Попытка...Исключение"? А вообще, тут более глобальный вопрос. Зачем, в принципе, нужна "Попытка...Исключение"? Какая разница, увидит пользователь ошибку в диалоговом окне или окне сообщений с припиской вначале: "Не удалось прочитать файл по причине...". При этом, во втором случае получит кучу непонятной информации, возвращаемой функцией "ОписаниеОшибки()", вместо краткого представления ошибки. Хотя, открытие файла, всё же, хорошо бы делать через попытку и в случае исключения выполнить Эксель.Quit(). Иначе в процессах зависнет процесс Excel, в чём можно убедиться, открыв диспетчер задач.
3. Ну и в четвёртом способе при ошибке создания выборки необходимо закрывать соединение, иначе, если, по какой-то причине, выборка не создастся, то соединение останется открытым.

Ответить
Валерий Александрович
Валерий Александрович - 26.08.2023 20:45

Для конфигураций на БСП неплохо научиться применять подсистему "Загрузка данных из файлов". Сам один раз разобрался, теперь другие методы и не применяю.

Ответить
Онлайн курсы
Онлайн курсы - 26.08.2023 19:46

Не запускается:
Ошибка инициализации модуля: ВнешняяОбработка.IRONSKILLS_КакПрочитатьExcel.Форма.Форма.Форма
по причине:
{ВнешняяОбработка.IRONSKILLS_КакПрочитатьExcel.Форма.Форма.Форма(16,1)}: Ожидается определение процедуры/функции
<<?>>Асинх Процедура ПрочитатьExcel(Команда)
{ВнешняяОбработка.IRONSKILLS_КакПрочитатьExcel.Форма.Форма.Форма(18,27)}: Тип не определен (ПараметрыДиалогаПомещенияФайлов)
ПараметрыДиалога = Новый <<?>>ПараметрыДиалогаПомещенияФайлов;
{ВнешняяОбработка.IRONSKILLS_КакПрочитатьExcel.Форма.Форма.Форма(22,23)}: Ожидается символ ';'
ОписаниеФайла = Ждать<<?>> ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);

Ответить
uppinua
uppinua - 26.08.2023 19:22

Для ехель.аплкейшн выбран самый тормозной способ.
Если использовать .UsedRange.Value все остальные методы проиграют в скорости на порядок.

Ответить
Anton Foxy
Anton Foxy - 26.08.2023 19:01

Иван больше спасибо. Я делал обработку для загрузки заказов, по первому вашему видео. Но теперь вижу 2й способ и беру его в замен первого. Пойду переписывать)))

Ответить
Anatoliy Kalinin
Anatoliy Kalinin - 26.08.2023 17:41

Очень крутое изложение. Кратко, ёмко и по существу. Отдельный респект за тембр голоса, дикцию и позитив!!!

Ответить
Odil Gafurov
Odil Gafurov - 26.08.2023 16:53

Круто. Спасибо.

Ответить
Александр Рафиков
Александр Рафиков - 26.08.2023 15:16

Отличное видео! С замерами - прямо научный подход. Через табличные документы будет работать и на linux. Большое спасибо!

Ответить
Feofan f
Feofan f - 26.08.2023 15:00

Иван! Целую вас в мозг!

Ответить
Матвей Серёгин
Матвей Серёгин - 26.08.2023 15:00

Еще можно добавить 5-й способ как развитие 4-го - через внешние источники данных.

Ответить
Виктор Князькин
Виктор Князькин - 26.08.2023 14:42

Как всегда круто! Идея для следующего видео, запись данных из 1с в google-таблицы.

Ответить
R4VEN
R4VEN - 26.08.2023 14:09

для номерСтроки = 2 по количествоСтрок

Ответить
Stepanuch NNN
Stepanuch NNN - 26.08.2023 14:05

Ваня, скажи где ты работаешь, я кину свою работу зам. начальника управления и пойду к тебе в подмастерье!😊

Ответить
Helmets On
Helmets On - 26.08.2023 13:58

Для полного счастья не хватает закрытия ком объектов в случае ошибки

Ответить
Маша Ефимова
Маша Ефимова - 26.08.2023 13:53

Не увидела ссылку на сайт с методами экселя🤔

Ответить
Александр
Александр - 26.08.2023 13:35

Мега полезное видео! Большое спасибо!

Ответить
Роман Савинов
Роман Савинов - 26.08.2023 13:32

Крутяк! Особая благодарность за замеры !

Ответить
Маша Ефимова
Маша Ефимова - 26.08.2023 13:28

Спасибо) а можно видео про программную установку отбора на формах?)

Ответить
dnk3569
dnk3569 - 26.08.2023 13:23

Супер, большое спасибо. Очень полезно.

Ответить
Mike Frygin
Mike Frygin - 26.08.2023 13:01

Спасибо, как и всегда все очень понятно и на таком позитиве. Великолепно!

Ответить
Имитация Контента
Имитация Контента - 26.08.2023 12:49

Как всегда, великолепно!)

Ответить
Алексей Л.
Алексей Л. - 26.08.2023 12:31

Если есть возможность, то не надо сканировать эксель построчно. Это попа. Загрузить весь лист в ТЗ и потом её сканировать в сто раз быстрее

Ответить