|   |   | 
| 
 | 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) (( | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |