|
Загрузка из Excel номенклатуры | ☑ | ||
---|---|---|---|---|
0
Pe3HuK
04.11.15
✎
14:06
|
Есть такой код:
Соединение = Новый COMОбъект("ADODB.Connection"); НаборДанных = Новый COMОбъект("ADODB.RecordSet"); Соединение.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + ИмяФайла + ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;"""); НаборДанных.Open("select * from [Армалюкс$]", Соединение); Колонок = 0; Строк = 0; ЧислоКолонокНабора = НаборДанных.Fields.Count; ТЗ = Новый ТаблицаЗначений; Для Сч = 1 по ЧислоКолонокНабора Цикл ТЗ.Колонки.Добавить("Колонка"+Строка(Сч)); Колонок = Колонок + 1; КонецЦикла; НаборДанных.MoveFirst(); Пока НЕ НаборДанных.EOF Цикл СтрокаТЗ = ТЗ.Добавить(); Для Сч = 1 по ЧислоКолонокНабора Цикл СтрокаТЗ["Колонка"+Строка(Сч)] = НаборДанных.Fields.Item(Сч-1).Value; КонецЦикла; Строк = Строк + 1; НаборДанных.MoveNext(); КонецЦикла; Если Колонок = 0 Или Строк = 0 тогда Колонок = ТЗ.Колонки.Количество(); Строк = ТЗ.Количество(); КонецЕсли; Этот код обрабатывается без ошибок, но результат на форму не выводи. Подскажите, пожалуйста, что не так |
|||
1
Горогуля
04.11.15
✎
14:07
|
нет вывода на форму. ваш кэп
|
|||
2
Ёпрст
04.11.15
✎
14:09
|
(0) СоздатьКолонки() + ОбновитьСтроки() сделай у табличного поля на форме, что ле..
|
|||
3
Pe3HuK
04.11.15
✎
14:14
|
(2) Что то я сегодня очень плохо соображаю, можете показать в какой момент это сделать нужно
|
|||
4
Горогуля
04.11.15
✎
14:15
|
(3) после того, как ТЗ будет готова
|
|||
5
DexterMorgan
04.11.15
✎
14:25
|
Я сам код не проверял, но так вроде как компактнее:
ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.Прочитать(ПутьКФайлу); Построитель = Новый ПостроительЗапроса; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДокумент.Область()); Построитель.Выполнить(); ТЗ = Построитель.Результат.Выгрузить(); к тому же в 8.3.6 добавили СпособЧтенияЗначенийТабличногоДокумента, так что даже ТЗ типизирована должна быть |
|||
6
Горогуля
04.11.15
✎
14:33
|
(5) это оно так ексель съест?
|
|||
7
DexterMorgan
04.11.15
✎
14:36
|
(6)
ТабличныйДокумент (SpreadsheetDocument) Прочитать (Read) Синтаксис: Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>) Параметры: <ИмяФайла> (обязательный) Тип: Строка. Имя файла табличного документа. <СпособЧтенияЗначений> (необязательный) Тип: СпособЧтенияЗначенийТабличногоДокумента. Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS или XLSX. При загрузке табличного документа из формата Excel 97 и 2007, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра. Значение по умолчанию: Текст. Описание: Считывает табличный документ из файла. Позволяет считывать табличный документ из файла формата табличного документа MXL, файла формата XLS, файла формата XLSX. |
|||
8
VikingKosmo
04.11.15
✎
14:39
|
(7) жесть какая
|
|||
9
VikingKosmo
04.11.15
✎
14:39
|
+ (8) кому теперь Маня будет свои загрузки из Экселя продавать?
|
|||
10
DexterMorgan
04.11.15
✎
14:39
|
Ваще какая то подстава в 8.3.4.482 в СП есть описание СпособЧтенияЗначенийТабличногоДокумента, а использовать нельзя, тк появилась она ток в 8.3.6
Так нечестно, я щeтаю |
|||
11
Горогуля
04.11.15
✎
14:40
|
хмм... только с первого листа?
|
|||
12
DexterMorgan
04.11.15
✎
14:42
|
(11) Хз, у меня необходимости не было - не пользовался. Вопрос еще нужен ли установленный ексель или нет
|
|||
13
VikingKosmo
04.11.15
✎
14:43
|
(12) для XLSX вряд ли нужен, ибо парсить XML явно без Экселя можно ;)
|
|||
14
Горогуля
04.11.15
✎
14:44
|
(12) Позволяет считывать табличный документ из файла. нужен файл
|
|||
15
DexterMorgan
04.11.15
✎
14:45
|
Вообще то, что ПостроительЗапроса кушает область таб документа и выплевывает ТЗ - это очень круто =)
|
|||
16
DexterMorgan
04.11.15
✎
14:46
|
(14) Файл нужен, как без файла. Вопрос был про ексель (приложение), а не файл
|
|||
17
Горогуля
04.11.15
✎
14:46
|
(15) что-то я теряюсь. как области сказать, что вот тут "2" - это число, а тут "3" - строка?
|
|||
18
DexterMorgan
04.11.15
✎
14:46
|
(14) Или ты капитанишь ? =)
|
|||
19
DexterMorgan
04.11.15
✎
14:47
|
(17) До 8.3.6 и не мог, все было строкой.
|
|||
20
Горогуля
04.11.15
✎
14:47
|
(18) не, это повышенный скилл толкования СП ;)
|
|||
21
DexterMorgan
04.11.15
✎
14:48
|
(17) Потом из файла берет, хотя это не надежно все равно
|
|||
22
Maniac
04.11.15
✎
15:38
|
(9) а что маня. У мени загрузка которая читает многолистовые файлы. со скоростью 100 000 строк в минуту.
И даже не это главное. Так как считывание экселя фигня фигней. Самое интересное начинается когда уже все в 1С есть в виде ТЗ. И вот уже тут начинается дальше самое главное. Сопоставление номенклатуры и так далее и так далее. Кривые прайсы в которых иерархия где попало, цены с валютами, артикулы в наименованиях и вообще у пяти поставщиков по разному называется. |
|||
23
DexterMorgan
04.11.15
✎
15:58
|
(22) Маня, ты форумом ошибся, втирай про крутость твоей обработочки на ИС или у себя =)
|
|||
24
Мимохожий Однако
04.11.15
✎
16:14
|
(22)ОФФ: Навеяло..."Печатаю со скоростью 2000 знаков в минуту...Но такая фигня получается..."))
|
|||
25
Maniac
04.11.15
✎
21:47
|
(23) кто бы говорил. после слов "сам не проверял" но код какой то написал.
То есть даже ни разу не выполнял то что написал. Высокий уровень профессионализма. |
|||
26
User_Agronom
04.11.15
✎
22:22
|
(0) Продам отладчик. Очень дорого. Но надёжно!
(22)...Кривые прайсы в которых иерархия где попало, цены с валютами, артикулы в наименованиях и вообще у пяти поставщиков по разному называется... Проводит анализ по наименованию с гарантированным результатом? Метод подскажи? |
|||
27
Maniac
04.11.15
✎
23:06
|
(26) что тебе за метод подсказать?
Там мой код. Много запросов, процедур и функций. Все наработано годами. |
|||
28
Maniac
04.11.15
✎
23:11
|
Я этот функционал начал писать вообще как только с прайсами столкнулся.
Не столько стояла задача как эксель читать - сколько находить и сопоставлять номенклатуру. Тогда вообще ничего не было нигде. 0 разработок по данной теме. Даже никто не знал про регистр сведений в УТ10 с номенклатурой поставщиков - не представлял зачем он нужен и что с ним делать. Да и до сих пор все поисковые запросы идут именно по этой теме. Самая популярная тема в загрузке прайсов из эксель. даже чтение экселя меркнет - по экселю в интернете 2000 разработок найти можно. А как кривую номенклатуру искать - полный ноль. |
|||
29
Maniac
04.11.15
✎
23:12
|
С тех пор как я за это взялся я сам наверное раз 500 перерабатывал все что касается этой темы, пока не нашел золотую середину которая по сути да решает 90 процентов.
Идеала никогда не будет. Так как иногда реально бывает полная жуть. Но в целом механизм работает, и я доволен тем что сделал. |
|||
30
Maniac
04.11.15
✎
23:15
|
А по чтению экселя вообще лажа полная.
Даже без всякого кода уже 10 лет назад было придумана и реализована простая вещь - копи паст. Открой любой файл эксель в опенофисе. Скопируй в буфер и ты его тупо вставишь в 1С в табличное поле. И данные уже в 1С. Древняя фигня как этот мир. |
|||
31
Maniac
04.11.15
✎
23:17
|
Я наверное лет пять именно этим и пользовался (когда небыло прямой компоненты). У меня до сих пор есть закладка для ручной вставки копи-пастом.
Это я уже потом копоненту придумал для красоты и эффективности. Так как реально многолистовые файлы - сплошь и рядом. |
|||
32
Maniac
04.11.15
✎
23:21
|
То что скажем мягко нуд написал в (5) можно сразу выкинуть на свалку.
Если прийдет в экселе торг 12. - загребешся по нему запрос делать. а в ТЗ может оказаться такая лажа, что с такой лажей потом фиг чо сделаешь. Всякие объединеные ячейки, мусор в шапке, подвале. съезжание ячеек. Да там вагон и маленькая тележка ньюансов. У меня для таких форм в несколько проходов идет переработка в нормальный вид. Когда модуль сам распознает что за фигня там в экселе, находит все что в ней и выплевывает четкую ТЗ где только табличная часть с номенклатурой и всем что ее касается. |
|||
33
Злопчинский
05.11.15
✎
01:48
|
(28) "Не столько стояла задача как эксель читать - сколько находить и сопоставлять номенклатуру.
Тогда вообще ничего не было нигде. 0 разработок по данной теме. Даже никто не знал про регистр сведений в УТ10 с номенклатурой поставщиков - не представлял зачем он нужен и что с ним делать. " ну кто же виноват что на восьмерке все так плохо. аналогичная задача мной успешно решалась в 2005 году на семерке. до сих пор в нескольких конторах работает. ну а прайсы которые я грузил - я их тебе показывал, там логика данных весьма приблизительная, описание что откуда грузить даже в рамках одного листа в разных разделах прайса отличается кардинально. и настройка загрузки метаинструментом типа как у тебя - по сложности для юзверей запредельная. а тупо выдать список похожих - гораздо продуктивнее получалось, тем более если под каждый ублюдочный прайс написать маленький плугинчик эвристики выкусывания/разбора мутно логики... |
|||
34
Chameleon1980
05.11.15
✎
08:24
|
не нервничай
|
|||
35
Chameleon1980
05.11.15
✎
08:25
|
пожалуйста
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |