Как прочитать файл Excel на сервере в 1С?
Вставка
- Опубліковано 17 жов 2024
- Как можно меня отблагодарить: pay.cloudtips....
В данном видео мы рассмотрим чтение файла Excel средствами 1С, и разберем пример того, как прочитать файл в 1С на сервере.
Существует несколько способов передачи файла с клиента на сервер - мы разберем использование временного хранилища и использование потока в памяти.
Использование временного хранилища предполагает сохранение полученных двоичных данных во временный файл. Далее этот файл можно прочитать в табличный документ.
Поток в памяти позволяет передавать файл без создания промежуточного временного файла. И для простой передачи файла с клиента на сервер 1С это будет предпочтительный вариант. Однако в случае, если мы хотим переданный файл прочитать в табличный документ, использование потока накладывает ограничение - доступны только форматы mxl и ods.
В видео используются следующие методы:
02:19 - ПоместитьВоВременноеХранилище
04:49 - ТабличныйДокумент.Прочитать
13:38 - НачатьПомещениеФайлаНаСервер
18:14 - ДвоичныеДанные.ОткрытьПотокНаЧтение
Добавляйте в закладки мой сайт 1c.alexcode.ru... с полезными материалами по настройке и программированию 1С
Курс «Разработчик 1С с нуля»
1c.alexcode.ru/
Индивидуальное обучение 1С
1c.alexcode.ru...
Видео также размещено на моем Дзен-канале «1С с Леоновым»: dzen.ru/video/...
Лучшее что я видел по этой теме , просто и эффективно
Спасибо за душевный отзыв! 🤝
Почему так мало комментариев?!)) Пересмотрела много видео про чтение файла Excel. Это очень доступно, особенно для новичка. Спасибо за видео
Спасибо за такой позитивный отклик! Как раз и старался записать видео максимально доступно для начинающих. Но иногда и сам подглядываю)))
Спасибо за интересную практическую задачу. Надо будет попробовать самому написать код, а потом сравнить с вашим.
Пробуйте, экспериментируйте!)) Почти любую задачу в 1С можно решить несколькими способами.😉
Супер, держи подписку
Поймал, благодарю :)
Спасибо за адекватный код, хоть 1С и нереальное говно)
1С не стоит рассматривать как ЯП общего назначения, тогда и не будет разочарования. А вот в среде энтерпрайз решений и автоамтизации бизнеса он очень даже конкурентоспособен.
Пришлось отказаться от такого способа: в файле несколько листов.
при чтении файла с несколькими листами при помощи метода табличного документа Прочитать(), каждый лист будет отдельной именованной областью. В остальном все то же самое.
@@alexcode_1c Что значит, отдельной именованной областью? Вижу после последней строки первого листа следует первая строка второго, как узнать, что это следующий лист? Решил, что проще будет используя ОЛЕ, тем более, что придется еще и записывать файл после редактирования. В настоящее время обрабатываю файл, в csv формате, конечно, не удобно.
@@ButInButOut Поищите информацию по работе с табличным документом. У таб. документа есть области, к ним можно обращаться по имени. Например, вы прочитали эксель табличным документом с именем ТабДок. Первый лист будет что-то типа ТабДок.ПолучитьОбласть("Лист1")
и дальше с этим работаете как с отдельным табличным документом.
потом второй лист, и т.п.
Важно. Скрытые листы 1С читать не умеет. если нужно - сперва их надо сделать видимыми.
@@alexcode_1c спасибо, действительно, без проблем считывает нужный лист. Хорошо не начал переделывать обработку, но для записи в файл все равно придется ОЛЕ подключать? Извините за назойливость, я не программист, но простые обработки иногда пишу сам.
если вам нужно на выходе получить новый файл excel с несколькими листами, то придется работать с com-объектом Excel, скорее всего. это уже совсем другая история :)
Очень познавательное видео, спасибо! Я сегодня столкнулся с задачей, когда нужно получить данные из файла exel в базу. Проблема в том, что файл там не просто голая таблица, а документ заявка на запчасти, где в начале идет шапка, потом таблица(которая может быть разной величины), и в конце подвал с итогами, суммами и ФИО. Было бы классно найти разбор похожей задачи. Как это реализовать, до сих пор бьюсь.
Как правило, задачи загрузки файлов со сложной структурой очень специфичны, и решаются не тривиально. Чаще всего я такие задачи решал путем перебора колонок и строк и сопоставлением с определенным текстом. Например, встретили в первой колонке слово Итого - значит таблица закончилась, дальше ищем подписи, и т.п. то же и с колонками.
Часто ещё помогает гибкий маппиннг - когда мы в соответствие записываем номера колонок и их имя, чтобы не хардкодить. Если шапка может быть разной высоты, то иногда помогает определение начала тч по тексту - например, если в ячейке r3c1 текст "Номенклатура", значит это шапка таблицы, и допустим через одну строку начинается уже сама таб. Часть. А бывает, что можно опираться даже на цвет фона ячейки. Например, мне доводилось загружать каталог номенклатуры, где разные уровни групп были разного цвета. В общем, такие задачи сложные, но интересные. Надеюсь, мои советы хоть немного помогут вам с загрузкой.