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

Sdílet
Vložit
  • čas přidán 8. 06. 2024
  • 💥 Записаться на курс "Программист 1С: с нуля до профи": ironskills.by/kursi/programmi...
    Задачи по загрузке данных Excel в 1С встречаются достаточно часто. В этом видео мы покажем 4 способа прочитать Excel в 1С, которые помогут вам решать такие задачи.
    00:00 - Подготовка
    02:43 - Способ № 1. Табличный документ (по ячейкам)
    09:05 - Способ № 2. Табличный документ + построитель запроса
    12:23 - Способ № 3. Технология OLE (Excel.Application)
    21:55 - Способ № 4. Технология ADO (ADODB.Connection)
    31:22 - Сравнение скорости работы
    Внешняя обработка из видео: clck.ru/35TXXb
    #1с #ironskills #excel

Komentáře • 93

  • @anatoliykalinin6855
    @anatoliykalinin6855 Před 9 měsíci +12

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

  • @R4VENekb
    @R4VENekb Před 9 měsíci +9

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

  • @alexeynelepa1090
    @alexeynelepa1090 Před 8 měsíci +3

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

  • @user-kx2kw7uc2v
    @user-kx2kw7uc2v Před 9 měsíci +1

    Иван, спасибо! Всегда жду Ваши уроки.

  • @triviumfan9411
    @triviumfan9411 Před 9 měsíci +1

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

  • @user-fy7ps1qy1f
    @user-fy7ps1qy1f Před 9 měsíci +1

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

  • @antonfoxy4816
    @antonfoxy4816 Před 9 měsíci +2

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

  • @mikefrygin6615
    @mikefrygin6615 Před 9 měsíci +3

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

  • @user-hh5ve2qp1o
    @user-hh5ve2qp1o Před 3 měsíci +1

    Большое спасибо за материал и качественную подачу.

  • @Imitation_of_content
    @Imitation_of_content Před 9 měsíci +1

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

  • @alex-pravdorub
    @alex-pravdorub Před 4 měsíci +1

    Спасибо! Добрый человек! Четко, ясно, понятно, исчерпывающе.

  • @cam_180
    @cam_180 Před 9 měsíci +2

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

  • @sashaperevisly7755
    @sashaperevisly7755 Před 9 měsíci +1

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

  • @asg5511
    @asg5511 Před 9 měsíci +1

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

  • @cryptoprofit1190
    @cryptoprofit1190 Před 8 měsíci +1

    Круто все разложили, сейчас многие даже опытные 1С ники всех 4х технологий не знаю, а тут все наглядно и доходчиво, спасибо за обучение, надеемся на новые уроки!

  • @user-cz7bl8fo8g
    @user-cz7bl8fo8g Před 9 měsíci +1

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

  • @karambaichickiz_gondurasa902
    @karambaichickiz_gondurasa902 Před 9 měsíci +1

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

  • @ucccer
    @ucccer Před 24 dny

    Будь счастлив, мил человек!

  • @rafikov_aleksandr
    @rafikov_aleksandr Před 9 měsíci +1

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

    • @1c_kz_all
      @1c_kz_all Před 9 měsíci

      Да, это важны момент. Но была ситуация когда таким способом символы некоторые не поняла 1с, а через эксел нормально. Но это скорее исключение

  • @user-kn5st1qr6u
    @user-kn5st1qr6u Před měsícem

    Супер! Пушка! Всё по делу и понятно !

  • @user-bs8jm4ye8u
    @user-bs8jm4ye8u Před 7 měsíci +1

    Очень полезно! Спасибо!

  • @user-tf9wg3js1k
    @user-tf9wg3js1k Před 9 měsíci +1

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

  • @dkorppinen
    @dkorppinen Před 8 měsíci

    Просто супер! Спасибо

  • @odilgafurov2558
    @odilgafurov2558 Před 9 měsíci

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

  • @PTolkachev
    @PTolkachev Před 9 měsíci +5

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

  • @Rarogg
    @Rarogg Před 8 měsíci

    Ваня крут как всегда!!!

  • @user-tx8tl7rn2b
    @user-tx8tl7rn2b Před 4 měsíci

    Хотелось бы такой разбор для файлов эксель где нужна не только ТЧ, а и реквизиты.

  • @user-ft8ux4oy6e
    @user-ft8ux4oy6e Před 2 měsíci

    спасибо!

  • @user-up7yt6sl3r
    @user-up7yt6sl3r Před 9 měsíci

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

  • @user-jp5bv3bs8p
    @user-jp5bv3bs8p Před 9 měsíci +1

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

  • @imbagrille1688
    @imbagrille1688 Před 9 měsíci +1

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

  • @spiller26
    @spiller26 Před 9 měsíci +2

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

  • @Feofan4ik
    @Feofan4ik Před 9 měsíci

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

  • @user-ze1wj8pl6z
    @user-ze1wj8pl6z Před 9 měsíci +1

    Огонь.🙃🙃🙃

  • @user-zl5gp4yi9z
    @user-zl5gp4yi9z Před 9 měsíci +1

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

    • @ironskills-1c
      @ironskills-1c  Před 7 měsíci

      Спасибо за дополнение)

  • @antonfoxy4816
    @antonfoxy4816 Před 9 měsíci +2

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

  • @user-ow6ub9ii2d
    @user-ow6ub9ii2d Před 4 měsíci

    Добрый день.
    Подскажите, пожалуйста, а при чтение Экселя из Линукса планируется видео?

  • @tikeyl7563
    @tikeyl7563 Před 9 měsíci +1

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

  • @user-uv4hi8jo8y
    @user-uv4hi8jo8y Před 5 měsíci

    Добрый день!
    Можете подсказать, какой из способов применим для баз находящихся на Линуксе?

  • @helmetson652
    @helmetson652 Před 9 měsíci +2

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

  • @justhorrorgames7900
    @justhorrorgames7900 Před měsícem

    Добрый день, а можно ли грузить данные ссылочного типа из Excel в документ напрямую?

  • @olegkim615
    @olegkim615 Před 9 měsíci +1

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

  • @andrey_pav
    @andrey_pav Před 9 měsíci

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

    • @Shaluniya
      @Shaluniya Před 9 měsíci +1

      так вы читаете данные в ТЗ или ещё куда и потом создавайте средствами 1С, как обычно создаете документы, с этим нет проблем

  • @user-vj8gg4hh2j
    @user-vj8gg4hh2j Před 9 měsíci +1

    💥💥

  • @user-up7yt6sl3r
    @user-up7yt6sl3r Před 9 měsíci +1

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

  • @fastAbout1s
    @fastAbout1s Před 9 měsíci +1

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

    • @ironskills-1c
      @ironskills-1c  Před 7 měsíci

      Спасибо за дополнение)

  • @user-pe7bh5hc9o
    @user-pe7bh5hc9o Před 9 měsíci +2

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

    • @ironskills-1c
      @ironskills-1c  Před 7 měsíci

      Спасибо большое за поддержку)

  • @WhoAmI-sx6fb
    @WhoAmI-sx6fb Před 9 měsíci

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

  • @EvilBloodEye
    @EvilBloodEye Před 9 měsíci +1

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

    • @ironskills-1c
      @ironskills-1c  Před 7 měsíci

      Спасибо за дополнение :)

  • @vallak1981
    @vallak1981 Před 9 měsíci +1

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

    • @Shaluniya
      @Shaluniya Před 9 měsíci

      у меня никак руки не дойдут до бсп, немного смущает,что сами библиотеки могут меняться, не бывает так,что меняется бсп и нужно менять код? если есть ссылки на материалы про бсп, которые понрачились при разборех темы, может, поделитесь?)

    • @user-qi4wt6vg1p
      @user-qi4wt6vg1p Před 9 měsíci

      Спасибо! Конечно все зависит от задачи.

  • @stepanuchnnn4123
    @stepanuchnnn4123 Před 9 měsíci

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

  • @gaia3478
    @gaia3478 Před 22 dny

    а как во втором способе перейти на другую страницу в файле?

  • @Shaluniya
    @Shaluniya Před 9 měsíci

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

    • @1c_kz_all
      @1c_kz_all Před 9 měsíci

      Ещё столкнулся с тем, что некорректно некоторые символы сели в 1С через построитель, а через эксел нормально...

  • @SkiPastor
    @SkiPastor Před 6 měsíci +1

    Чтобы пропустить первую строку, надо ставить Если вместо банального Для НомерСтроки=2 ??? Вообще то оператор Если в 1С весьма длительный и при чтении больших файлов из-за такой пустышки будут нехилые тормоза.

    • @ironskills-1c
      @ironskills-1c  Před 6 měsíci

      Спасибо за дополнение, сделаем замеры на большом файле, чтобы оценить влияние)

  • @user-qi4wt6vg1p
    @user-qi4wt6vg1p Před 9 měsíci +2

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

    • @ironskills-1c
      @ironskills-1c  Před 7 měsíci +1

      Спасибо за дополнение)

    • @Dendemixture
      @Dendemixture Před 3 měsíci

      спасибо. а то не мог разобраться. достаточно неочевидный момент

  • @TRIALEX3
    @TRIALEX3 Před 9 měsíci

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

    • @ironskills-1c
      @ironskills-1c  Před 7 měsíci

      При чтении формулы мы не потеряем) Разве что при записи.

  • @AlexeySimf
    @AlexeySimf Před 8 měsíci +1

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

  • @filaretbusoni3135
    @filaretbusoni3135 Před 9 měsíci +1

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

    • @ironskills-1c
      @ironskills-1c  Před 7 měsíci

      Спасибо за комментарий)

  • @user-uf1kx1dd4b
    @user-uf1kx1dd4b Před 3 měsíci

    А что делать если столбцы не совпадают по названиям(это я про ПостроительЗапроса)? Как обойти всё аккуратно?

    • @ironskills-1c
      @ironskills-1c  Před 2 měsíci

      Можно к столбцам по индексам обращаться) А в коде можно хранить соответствие ИмяПоля - Индекс колонки)

  • @dnk3569
    @dnk3569 Před 9 měsíci

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

  • @stogramm6290
    @stogramm6290 Před 6 měsíci +1

    А вот что делать, если в файле несколько страниц, и нужно обратиться к последней, например...

    • @ironskills-1c
      @ironskills-1c  Před 6 měsíci +1

      Покажем в отдельном ролике)

  • @dionis2898
    @dionis2898 Před 9 měsíci +1

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

  • @Alcoholdehydrogenas
    @Alcoholdehydrogenas Před 9 měsíci

    На линухах не работает. 1С:Предприятие 8.3 (8.3.23.1865) Версия для разработчиков. Linux Mint 21.2 Cinnamon

  • @krutoyinfo
    @krutoyinfo Před 5 měsíci

    А где парсинг самого файла???

  • @user-rs1rm1se9k
    @user-rs1rm1se9k Před 9 měsíci

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

    • @AntonPahomov
      @AntonPahomov Před 9 měsíci +2

      Проверьте версию 1С Предприятия и установленный режим совместимости. Асинхронные методы стали доступны начиная с версии 8.3.18.

    • @user-rs1rm1se9k
      @user-rs1rm1se9k Před 9 měsíci

      @@AntonPahomov Спасибо. У меня действительно 8.3.17.

  • @daniilmatveev
    @daniilmatveev Před 5 měsíci

    Про табуляции, которые делают код более "красивым".
    Полагаю не раз приходилось искать по большому тексту место инициализации переменной или место присвоения значения (как в способе №1).
    Логично было бы искать по "ИмяПеременной =".
    В случае с ручной табуляцией это просто невозможно.
    А еще если программист по тексту сделает замену имени переменной каким-либо образом и поленится выровнять опять вручную эти красивости, то получится форменный беспорядок.
    Поэтому сделать картинку на обучающем видео это одно, а ручные красивости в рабочем коде это совсем другое.
    Поэтому же приходится нещадно стирать табуляции (про себя тихо матерясь) в совсем некрасивом коде.

  • @alm6543
    @alm6543 Před 9 měsíci

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

  • @alexflanker25
    @alexflanker25 Před 6 měsíci

    В импортозамещеном варианте уже только через ТабДок)))

  • @user-xe9wz9ir9s
    @user-xe9wz9ir9s Před 9 měsíci +6

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

  • @fizikrnd
    @fizikrnd Před 9 měsíci

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

  • @danxai
    @danxai Před 9 měsíci

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

    • @olegkim615
      @olegkim615 Před 9 měsíci

      Это что бы было понятней, наверное, а так да, сразу с 2 счетчик..🙃