7.7 Из Excel в документ 1С

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Uanna, 20 май 2009.

  1. TopicStarter Overlay
    Uanna
    Offline

    Uanna

    Регистрация:
    18 мар 2008
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Ежедневно производство (фабрика продуктов) создает Excel отчеты о работе за день, а бухгалтера забивают инфу в документы 1С. Создала внешнюю обработку по загрузке разделки мяса из Excel в документ КомплектацияТМЦ, все формируется нормально, осталось только проверить и провести документ. Затруднение у меня возникли с листами книги Excel. На каждый день 1 производственный отчет и формируются 2 документа. В книге Excel на каждый день лист. Не могу корректно листать листы для считывания инфы.
    Приложение нестандартное, имеет бух. и опер. компоненты.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    в чем заключается некорректность? Не вилит именалистов, их количество, не выбирает указаный лист....?
  3. TopicStarter Overlay
    Uanna
    Offline

    Uanna

    Регистрация:
    18 мар 2008
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    В диалоге я выбираю номер листа, мне важно каждый день принять лист соответствующий текущей дате или несколько листов. Так вот, принимаю инфу все время из одного листа, который активен в Excel. НЕ ВЫБИРАЕТ УКАЗАННЫЙ ЛИСТ!

    Я выбираю лист 7, в Excel активен 1 лист,
    " НомерЛиста=ВыбЛист;
    Лист=Excel.Worksheets(НомерЛиста);
    сообщить ("ВыбЛист= "+ВыбЛист+" НомерЛиста= "+ НомерЛиста+" Лист= "+Лист);"

    после выполнения получаю:
    "ВыбЛист= 1 НомерЛиста= 1 Лист= OLE._Worksheet"
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Для примера:
    Excel.Sheets(НомерЛиста).Name - получили имя
    Excel.Sheets("Лист2").Select() - выбрали лист по имени
  5. TopicStarter Overlay
    Uanna
    Offline

    Uanna

    Регистрация:
    18 мар 2008
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Попробую. Спасибо.
    У меня инфа стала читаться с разных листов, но предварительно я назначаю активный лист в Excel.
    Лист= Excel.ActiveSheet;
    ИмяЛиста=Строка(Лист.Name);
    Лист=Excel.Worksheets(String(ИмяЛиста));
    сообщить (" ИмяЛиста= "+ ИмяЛиста+" Лист= "+Лист);

    Результат:
    ИмяЛиста= 7 Лист= OLE._Worksheet
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Лист - это активный объект (лист книги). Для работы с ним нужно применять методы
  7. TopicStarter Overlay
    Uanna
    Offline

    Uanna

    Регистрация:
    18 мар 2008
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Вы, наверное, не закончили свое сообщение. Пож-та, продолжайте. :unsure:
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нееее))) Я просто пытаюсь тебя натолкнуть на МЫСЛЬ - берем книжечку по языку макросов (ВизуалБайсик) в Ёксель... читаем (поверь - в жизни пригодится). Помогать, советовать готов всегда, а РАБОТАТЬ за тебя.... за отдельную плату))))))))))))))
  9. Cooper-Mixal
    Offline

    Cooper-Mixal Опытный в 1С

    Регистрация:
    29 июн 2008
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Код:
    ОкноЕхс	=СоздатьОбъект("Excel.Application");
    ИмяФайла=СокрЛП(ПолнИмя);
    НовыеРабочиеКниги	=ОкноЕхс.Workbooks;
    РабочаяКнига=НовыеРабочиеКниги.Open(ИмяФайла); 
    КолЛистов = РабочаяКнига.WorkSheets.Count();
    Для i =1 по КолЛистов Цикл
    Лист = РабочаяКнига.WorkSheets(i);  
    КолСтрок = Лист.UsedRange.Rows.Count();
    ...................
    
    КонецЦикла;
    
    Опять же в цикле можешь проверять имена листов и если попался нужный лист, считываем с него...
  10. TopicStarter Overlay
    Uanna
    Offline

    Uanna

    Регистрация:
    18 мар 2008
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое. Я что-то зациклилась. Документы уже формирую с шапкой и табличной частью, бухам остаетя только проверить и провести , НО приходится ПОКА делать в excel нужный лист активным. Хочется чтобы было красиво.
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Для того чтобы сделать лист активным примени к нему метод Activate()

Поделиться этой страницей