|
1с и Ексель | ☑ | ||
---|---|---|---|---|
0
Singenor
22.11.12
✎
16:08
|
Понимаю, что тема заезженная, но все же, у меня есть файл выгрузки базы из сапа, данные в экселе разбросаны по файлу( начинаются данные с позиции С7, и дальше идет таблица с данными, вот теперь вопрос, как мне выгрузить эти данные в саму 1ску с созданием документов? ну точнее как потом создать документы с заполнением данных я знаю, не знаю как выгрузить данные, в дбф как то проще было)
|
|||
1
Singenor
22.11.12
✎
16:08
|
Выгрзука из екселя в 1с 8.2
|
|||
2
Heckfy
22.11.12
✎
16:10
|
||||
3
Singenor
22.11.12
✎
16:10
|
Док = ПолучитьCOMОбъект(ПутьКФайлу);
НомерСтраницы = 1; Пока СокрЛП(Док.Sheets(1).Cells(НомерСтроки,1).Value) <> "" Цикл // Если значение ячейки = "Begin_Doc", тогда создаем новый документ Если СокрЛП(Док.Sheets(1).Cells(НомерСтроки,1).Value) = "Begin_Doc" Тогда // Переход на след. строку с реквизитами Номер = СокрЛП(Док.Sheets(1).Cells(НомерСтроки,1).Value); Дата = Дата(СокрЛП(Док.Sheets(1).Cells(НомерСтроки,2).Value)); как вариант тут дальше прописывать названия полей которые мне нужны, и строки в экселе, но мне че то не особо этот вариант нравится |
|||
4
vde69
22.11.12
✎
16:10
|
||||
5
Singenor
22.11.12
✎
16:13
|
буду ковырять, спс
|
|||
6
Singenor
22.11.12
✎
16:14
|
тока еще вопрос:
СоздатьОбъект это ведь типовая процедура? почему 1ска ругается что она не определена? |
|||
7
vde69
22.11.12
✎
16:15
|
(6) 1с бывает 7.7 и 8.х
|
|||
8
Singenor
22.11.12
✎
16:16
|
(7) не понял к чему это
|
|||
9
Singenor
22.11.12
✎
16:17
|
новый ком объект потому что в 8)
|
|||
10
vde69
22.11.12
✎
16:17
|
(8) "СоздатьОбъект" - это из синтаксиса 7.7
в 8.х вместо него "Новый" |
|||
11
Heckfy
22.11.12
✎
16:18
|
Замени на:
Новый COMОбъект("Excel.Application"); |
|||
12
Singenor
22.11.12
✎
16:21
|
да, понял это)
|
|||
13
Singenor
22.11.12
✎
16:22
|
теперь такой вопрос, как вручную задать чтобы поиск шел например с 10 строки? я делаю поле с числовым типом, ввожу туда 10, и в екселе сразу с 10 строки поиск начинается?
|
|||
14
Singenor
22.11.12
✎
16:23
|
для Строка = 1 по ВсегоСтрок цикл
для Колонка = 1 по ВсегоКолонок цикл Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value); КонецЦикла; в Строка просто передаю то, что у меня будет вводиться в числовом поле? |
|||
15
Singenor
22.11.12
✎
16:24
|
ТО есть ПолеДля ввода числа - реквизит
для Строка = ПолеДлявводачисла по ВсегоСтрок цикл для Колонка = 1 по ВсегоКолонок цикл Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value); КонецЦикла; |
|||
16
Singenor
22.11.12
✎
16:24
|
ок?
|
|||
17
vde69
22.11.12
✎
16:25
|
(16) чего кликаешь? я тебе дал рабочие процедуры, просто скопируй и все
|
|||
18
Singenor
22.11.12
✎
16:25
|
дааа)
|
|||
19
Singenor
22.11.12
✎
16:27
|
(17) мне надо понять сразу) чтоб потом не спрашивать то же самое)
|
|||
20
Dionis Sergeevich
22.11.12
✎
16:27
|
Щас из своей обработочки скопипастю
|
|||
21
Dionis Sergeevich
22.11.12
✎
16:31
|
Попытка
Эксель = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Excel не установлен"); КонецПопытки; Попытка Файл = Эксель.WorkBooks.Open(ПутьКфайлуТолстый); Исключение Сообщить("Файл не найден"); ЗакрытьЭксель(Эксель); КонецПопытки; Лист2 = Файл.WorkSheets(2); Лист5 = Файл.WorkSheets(5); // запись Лист5.Cells(8,3).Value = Результат.НАчальноеСальдо; Лист5.Cells(9,3).Value = Результат.СуммаОборотДТ; Лист5.Cells(11,3).Value = Результат.СуммаОборотКТ; //чтение А = Лист5.Cells(8,3).Value; Б = Лист5.Cells(9,3).Value; В = Лист5.Cells(11,3).Value; Эксель.Application.Quit(); |
|||
22
Dionis Sergeevich
22.11.12
✎
16:33
|
А дальше оперируй циклами-счетчиками для обхода строк-столбцов
|
|||
23
Singenor
22.11.12
✎
16:52
|
(21) вот я тут не понимаю, смотри
Лист5.Cells(11,3).Value = Результат.СуммаОборотКТ; к примеру, 11 и 3 позиции соответственно, это уже считай жеско задано, и именнов этой области будет искаться запрашиваемый результат, а у меня может один раз 11, 3 оказаться, другой раз 12, 4, и т.д. Как сделать чтобы универсальный поиск был? пока приходит тока идея делать выбор на запрашиваемое значение, то есть типа там Наименование у меня берется из определенной колонки, Б4 например, нормально ведь так? или не прокатит? |
|||
24
Heckfy
22.11.12
✎
16:54
|
Как осуществить поиск / замену значений ячеек на листе
//Выбираем область поиска - весь лист ОбластьПоиска = Лист.Cells; // Укажем начало листа НачалоЛиста = Диапазон.Cells(1, 1); // Ищем ячейку с текстом, указанным в переменной ТекстДляПоиска, //укажем откуда искать - с начала листа ОбластьПараметр = ОбластьПоиска.Find(ТекстДляПоиска, НачалоЛиста); // Если нашли, заполняем значением из переменной Значение Если ОбластьПараметр <> неопределено Тогда ОбластьПараметр.Value = Значение; КонецЕсли; Замечание. Текст для замены лучше выделять, например, в угловые скобки, аналогично параметрам макета в 1С. Это улучшит наглядность, визуально отделит от рабочего текста. Текст для поиска в этом случае будет выглядеть так: ТекстДляПоиска = "<ИмяДляЗамены>" |
|||
25
Singenor
22.11.12
✎
18:05
|
пишу:
Эксель = Новый COMОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open(ПутьКФайлу); Лист = Эксель.WorkSheets(1); ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; КодТовара = СокрЛП(Книга.Sheets(1).Cells(НомерСтроки,1).Value); Наименование = СокрЛП(Книга.Sheets(1).Cells(НомерСтроки,2).Value); Количество = СокрЛП(Книга.Sheets(1).Cells(НомерСтроки,3).Value); Цена = СокрЛП(Книга.Sheets(1).Cells(НомерСтроки,4).Value); выдает ошибку: {Форма.Форма.Форма(53)}: Ошибка при вызове метода контекста (Cells) КодТовара = СокрЛП(Книга.Sheets(1).Cells(НомерСтроки,1).Value); по причине: Произошла исключительная ситуация (0x800a03ec) (( |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |