На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> Есть ли в 1С выгрузка таблицы в Excel? , И наоборот: из Excel в 1С?
    Есть ли спец функции? Скажем, обращение к ячейкам? :huh:
      Это всё делается через OLE. Данный вопрос многократно обсуждался, воспользуйся для начала поиском, а там уж если что непонятно спрашивай. :)
        igosm, вот например выдернул кусок кода из одного документа - смотри разбирайся:
        ExpandedWrap disabled
          А = СоздатьОбъект("Excel.Application");
          КвоЛистов = А.Worksheets.Count;
          Для Индекс = 1 По КвоЛистов Цикл
              спЛистов.ДобавитьЗначение(А.Worksheets(Индекс).Name);
          КонецЦикла;
          листНакладной = 0;
          Если спЛистов.ВыбратьЗначение(,"Выберите лист",листНакладной,) < 1 Тогда
              Возврат;
          КонецЕсли;
          Результат = А.Worksheets(листНакладной).Activate;
          ИспДиапазон = А.Worksheets(листНакладной).UsedRange;
             СтрНач = ИспДиапазон.Row; СтрКон = ИспДиапазон.Rows.Count;
             СтлНач = ИспДиапазон.Column; СтлКон = ИспДиапазон.Columns.Count;
           
          НачСтрока = 0;
          Если ВвестиЧисло(НачСтрока,"Строка начала табличной части накладной",,0,0) = 0 тогда
              Возврат;
          КонецЕсли;
          КонСтрока = 0;
          Если ВвестиЧисло(КонСтрока,"Строка конца табличной части накладной",,0,0) = 0 тогда
              Возврат;
          КонецЕсли;
          столбецКод = 0;
          Если ВвестиЧисло(столбецКод,"Колонка кода изделия",,0,0) = 0 тогда
              Возврат;
          КонецЕсли;
          столбецНаименован = 0;
          Если ВвестиЧисло(столбецНаименован,"Колонка наименования изделия",,0,0) = 0 тогда
              Возврат;
          КонецЕсли;
          столбецКолво = 0;
          Если ВвестиЧисло(столбецКолво,"Колонка количества",,0,0) = 0 тогда
              Возврат;
          КонецЕсли;
          столбецСумма = 0;
          Если ВвестиЧисло(столбецСумма,"Колонка суммы",,0,0) = 0 тогда
              Возврат;
          КонецЕсли;
           
          Для Индекс = НачСтрока По КонСтрока Цикл
              Состояние("Анализ строк накладной - " + Индекс + "/" + СтрКон);
              Если СокрЛП(Строка(А.Worksheets(листНакладной).Cells(Индекс, столбецКод).Value+А.Worksheets(листНакладной).Cells(Индекс, столбецНаименован).Value)) = "" Тогда
                  Продолжить;
              КонецЕсли;
          // ...
              Цена = А.Worksheets(листНакладной).Cells(Индекс, СтолбецСумма).Value;
              Кво = А.Worksheets(листНакладной).Cells(Индекс, СтолбецКолво).Value;
          // ...
          // тут что-то делаем с данными
          // ...
          КонецЦикла;
          Доступ к ячейке активного листа в Excel

          Excel=СоздатьОбъект("Excel.Application");

          w1=Excel.Cells(Ячейка,Столбец);
          Знач=w1.Value; // Знач-значение ячейки
          Сообщение отредактировано: Darksquall -
            есть еще 1 спрособ. можно просто сохранить уже сформированную страницу в xls то есть
            ExpandedWrap disabled
               
              ...
              table.write(some.xls,1)
              excel = createobject("Excel.Application");
              excel.open("some.xls");
              ;

            а дальше в excele работаем через VBA
            Сообщение отредактировано: Outlander -
              Есть еще способ, но более извращенный. Экселевский файл сохраняещь как дбф, а потом работаешь с ним через объект XBase
              Что то типа этого:
              Спр = СоздатьОбъект("Справочник.Какойнибудь");
              // будем грузить например в справочник
              ДБ = СоздатьОбъект("XBase");
              ДБ.ОкткрытьФайл("exel.dbf");
              кс = ДБ.КоличествоЗаписей();
              Для А = 1 По Кс Цикл
              ДБ.Перейти(А);
              Спр.Новый();
              Спр.Наименование = ДБ.Name;
              Спр.Цена = ДБ.Price;
              Спр.Записать();
              КонецЦикла;
              ДБ.ЗакрытьФайл();

              Маленькое замечение. Если будешь сохранять xls таблицу в дбф, то первая строка у тебя должна будет содержать наименование полей (name,price и тд.)
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0217 ]   [ 15 queries used ]   [ Generated: 4.05.24, 22:56 GMT ]