|
Нужно написать обработку, которая загружала бы данные из excel файла. | ☑ | ||
---|---|---|---|---|
0
kotosob
13.07.22
✎
13:18
|
Требования:
Обработка должна быть написана на управляемых формах. Пользователь выбирает excel файл (нужен отбор по расширениям .xls и .xlsx) и с какого листа в excel необходимо брать данные. Количество загружаемых колонок может быть любым. Пользователь задает новые наименования столбцов и типы загружаемых значений подскажите пожалуйста как это реализовать спасибо. |
|||
1
Amra
13.07.22
✎
13:23
|
Шо, тестовое задание?)
|
|||
2
Lama12
13.07.22
✎
13:31
|
(0) Скачай с инфостарта
|
|||
3
6awkup_true
13.07.22
✎
13:32
|
1. Открыть конфигуратор
2. создать новую внешнюю обработку 3. создать форму обработки 4. создать реквизиты формы 5. написать логику выбора файла 6. написать логику обработки полученных данных ... ... ... x*(n+1). PROFFIT P.S. вопросов конкретных не прозвучало, на вопрос как реализовать ответ выше по тексту, все решение легко гуглится пошагово по мере возникновения вопросов |
|||
4
ads55
13.07.22
✎
13:54
|
(0)
ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(Объект.ПутьКФайлуЭкселя); //вот здесь лежит твоя файл Экселя ОбластиТаб = ТабДок.Область(1, 1, ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы); Построитель = Новый ПостроительЗапроса; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластиТаб); Построитель.Выполнить(); ТЗ = Построитель.Результат.Выгрузить(); //вот здесь лежит твоя таблица, прочитанная их Экселя :) |
|||
5
Kassern
13.07.22
✎
13:57
|
(4) ага, ТС бездумно это копирнет с словит, Отказано в доступе))
|
|||
6
Kassern
13.07.22
✎
13:57
|
*и словит
|
|||
7
Lama12
13.07.22
✎
13:57
|
(4) За такое он сразу получит неуд. Они этого еще не проходили. Сразу будет видно что писал не сам.
|
|||
8
ads55
13.07.22
✎
13:59
|
(5) без внятного ТЗ и результат такой же :)
Конечно словит. |
|||
9
Ryzeman
13.07.22
✎
14:00
|
Я как сам вчерашний новичок сразу понимаю что если используется построительзпроса то это откуда-то слизано) Сейчас никто им не пишет и не учит, всё на СКД... Да и какой построитель запроса на клиенте?) А на сервере - (5)
|
|||
10
ads55
13.07.22
✎
14:02
|
(9) "слизано)" с тырнетов с этих, с ваших! УУУУ, неучи! :)
|
|||
11
Vovan1975
13.07.22
✎
14:02
|
(4) ага, а теперь внимательно читаем "и с какого листа в excel необходимо брать данные."
|
|||
12
timurhv
13.07.22
✎
14:04
|
(9) >Сейчас никто им не пишет и не учит
Я и раньше не учил и до сих пор не знаю, однако загрузку Excel из (4) использую. Также как и формирование xlsx с помощью xml и архива, работает в десятки/сотни раз быстрее. |
|||
13
ads55
13.07.22
✎
14:04
|
(11) Да понятно все это. Думал ветка "пятничная", а потом посмотрел - тут так всё серьёзно! Простите меня, товарищи, я больше не буду.
|
|||
14
ads55
13.07.22
✎
14:06
|
(5) Кстати, на УФ, в толстом клиенте, в файловом варианте - не словит.
|
|||
15
6awkup_true
13.07.22
✎
14:08
|
(9) не обязательно. есть штук 5-6 разных способ загрузки их экселя. и все подробно описаны в инете. если это тестовое задание, то тут скорее всего будут ожидать чтение построчное через ком. врядли через чтение хмл(если уж не проходили построитель запроса)
|
|||
16
KJlag
13.07.22
✎
14:08
|
хм, вот сегодня как раз почти на эту же тему.
12-ый ответ. Можно ли прочитать Excel через АДО без экселя? впрочем там то же что и в (4) |
|||
17
6awkup_true
13.07.22
✎
14:09
|
(14) а в серверном поймает ошибку, что файл не найден. потому что его сначала нужно с клиента положить во временное хранилище, а потом уже заново создать файл на сервере
|
|||
18
ads55
13.07.22
✎
14:14
|
(17) Да знаю я про сервер, я же уже покаялся...
|
|||
19
NorthWind
13.07.22
✎
14:14
|
(15) да ну, мне кажется, ком уже неактуален. Через табличный документ, но, может, без построителя, просто чтение из области.
|
|||
20
6awkup_true
13.07.22
✎
14:15
|
Вот еще вариант с минимумом кода через comsafearray. чтение по листам. но 1) должен быть эксель на компе, 2) должна быть зарегана компонента ком
&НаКлиенте Процедура ПрочитатьФайл(Команда) Попытка ОбъектЕксель = Новый COMОбъект("Excel.Application"); Исключение Сообщить(НСтр("ru = 'Exсel не установлен на данном компьютере!'")); Возврат; КонецПопытки; СтруктураДанных = Новый Структура; СоответствиеДанных = Новый Соответствие; ОбъектКнига = ОбъектЕксель.Application.WorkBooks.Open(ПутьКФайлу); Для каждого Лист Из ОбъектКнига.Sheets Цикл СоответствиеДанных.Вставить(Лист.Name,ПолучитьДанныеЛистаПоИмени(ОбъектКнига,Лист.Name)); КонецЦикла; ОбъектКнига.Close(-1); ОбъектЕксель.Quit(); Конецфункции &НаКлиенте Функция ПолучитьДанныеЛистаПоИмени(WorkSheet,SheetName) Результат = Неопределено; Попытка Sheet = WorkSheet.Sheets(SheetName); DataArray = Новый COMSafeArray(Sheet.Usedrange().Value); Результат = DataArray.Выгрузить(); Исключение КонецПопытки; Возврат Результат; КонецФункции |
|||
21
6awkup_true
13.07.22
✎
14:17
|
(19) очень много видел поделок, которые работают именно через ком. может и легаси, но все таки писали и продолжают писать с его использованием
|
|||
22
Kassern
13.07.22
✎
14:18
|
(20) а потом бац и у ТС клиент на линуксе))
|
|||
23
6awkup_true
13.07.22
✎
14:19
|
(22) это уже скорее исключение из правил. чаще всего видел, что сервак на линухе, а вот клиенте на шиндовсе все таки. а вариант из (20) крутится исключительно на клиенте)
|
|||
24
El_Duke
гуру
13.07.22
✎
14:20
|
Кажись спамер пытается разводить наше многоуважаемое сообщество ... Я за бан
|
|||
25
NorthWind
13.07.22
✎
14:25
|
(21) comsafearray на самом деле неплохая тема, быстрая. Но ком-сервер экселя капризен. Бывает, ложится по непонятным причинам, и начинаются танцы с бубнами. Пару раз сталкивался с таким. В целом, когда наконец родили чтение через табличный документ - это был огромный вздох облегчения.
|
|||
26
kubik_live
13.07.22
✎
14:26
|
(20)
ОбъектКнига = ОбъектЕксель.Application.WorkBooks.Open(ПутьКФайлу); Это в файловой сработает, в клиент-серверной нет... |
|||
27
Eugeneer
13.07.22
✎
14:26
|
Пишите компоненту на Питоне которая читает любой эксель и возвращает ТЗ или ТабДоки. И все. Хоть виндовс, хоть линукс, хоть черт лысый
|
|||
28
NorthWind
13.07.22
✎
14:26
|
+ (25) это если еще забыть про то что люди юзают и LibreOffice, и Linux.
|
|||
29
Eugeneer
13.07.22
✎
14:26
|
(25) только читает оно половину форматов.
|
|||
30
PLUT
13.07.22
✎
14:27
|
(27) микросервис на GO
|
|||
31
Eugeneer
13.07.22
✎
14:29
|
(0) у тебя год уйдет на эту работу.
Мало того ты сейчас на стадии как читать. А потом еще настраивать. А если листы разные с разной структурой. То и разные настройки на каждый лист. И там пошло поехало. Итог будет такой что 1-2 месяца писать, еще год потом отлаживать. Проще купить то что уже все это продумано и сделано. Вплоть до полностью автоматической работы с забором файлов с почты, ссылок, чтение XML и все прочее. Мегалайт: Загрузка прайсов в 1С из Excel от А до Я https://subsystems.ru/solutions/1c_excel/zagruzka_praysov_v_1s_iz_excel_csv_txt/ |
|||
32
Eugeneer
13.07.22
✎
14:30
|
Только я уже не загрузку продаю, а целый комплект вещей которые связаны с этой задачей. Там и отчеты и сравнение и куча другого функционала.
Мегавещь сделал! |
|||
33
6awkup_true
13.07.22
✎
14:31
|
(31) цена в 45к? не проще ли купить унф за 5400 и взять универсальную обработку загрузки из нее?
|
|||
34
Eugeneer
13.07.22
✎
14:32
|
(33) ну если ты про стандартную говоришь то абсолютнол не знаешь как она работает. А работает она крайне отстойно
|
|||
35
PLUT
13.07.22
✎
14:33
|
(32) ну а что, вроде бы удовлетворяет требованиям из (0)
я щетаю надо брать! |
|||
36
6awkup_true
13.07.22
✎
14:34
|
(34) за 40 сохраненных тыщ можно допилить ее под свои нужды. то что она так себе - никто не спорит, но тут и постановка задачи 1) простая и 2) скорее всего тестовая, а не прикладная. мож ТС вообще во франч стажером на 20к деревянных, а тут 3 зп отдать за лабораторку :D
|
|||
37
Ryzeman
13.07.22
✎
14:34
|
И правду говорят, среда - это маленькая пятница...
|
|||
38
Eugeneer
13.07.22
✎
14:35
|
стандартная это все равно что ничего. От слова совсем.
Ручная вставка колонок... Ограничение колонок только тем что там есть. Никаких свойств, реквизитов и прочего - ничерта этого не будет. Имеет только ограниченные поиски. Многолистовые файлы читать не будет от слова никак, и тем более настраивать их. Не отображает результаты. На одном из шагов тупо создаст номенкалатуру в базу хотя там не написано что эта кнопка ее создает. |
|||
39
Eugeneer
13.07.22
✎
14:36
|
(35) могу поспорить что никак с требованиями (0) не сочитается.
а) многолистовые файлы б) разное количество колонок и прочего. Это значит что вполне вероятно могут загружаться не только артикул и наименование. Еще есть бюывают характеристики из свойств, свойства номенклатуры. Даже тупо производитель - это еще один справочник. И кстати во многих спецификах надо искать номенклатуру Артикул+Производитель. |
|||
40
Kassern
13.07.22
✎
14:41
|
(24) ТС ходит по офигительно тонкому льду)
|
|||
41
Eugeneer
13.07.22
✎
14:41
|
А это значит что для начала нам нужно синхронизировать справочник производителей, до начала синхронизации номенклатуры.
Могут быть новые производители, которых нет. А еще могут производители поставщика отличаться по названиям от производителей в базе. И после синхронизации этого справочника только можно будет синхронизировать номенклатуру. Еще отдельная тема это характеристики. как мы знаем еще один справочник. сложный - состоящий из свойств. Только на одном этом можно встрять на месяц. Еще допс свойства. Не забываем чсто свойства тоже все - наборы всякие, разные типы значений свойств - тоже куча справочников. Ну и молжно еще сотню вещей причислять. Как изюминка на торте - загрузка картинок. А тут огого бывает. Картинки могут быть вместе, а могут отдельными колонками - где то 2-3 где то 5 картинок. Был случай когда все картинки файлы (поставщик СИМА_ЛЕНД) вообще имеют ОДНО название. а отличает их только ссылка (название подпапки разное). По дной тиолько загрузке картинок в загрузку встроена еще одна целая обработка с настроками и ситуациями. И везде контроль..контроль... сто раз контроль. Так как загрузка - это любой баг загрузки приведет к плачевным результатам. |
|||
42
6awkup_true
13.07.22
✎
14:43
|
(40) там сегодня у него тема есть еще про кредитный калькулятор. может там тоже поможем? :D
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |