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

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

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> Загрузка данных из excel в 8.2
    Здравствуйте! Мне надо загрузить данные из файла excel в табличное поле. Я работаю в версии 8.2 обычное приложение. код для версии 8.3 управляемое приложение не работает.

    ExpandedWrap disabled
      Процедура ОкрытьФайлНажатие(Элемент)
         ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
         ДиалогВыбора.Заголовок ="Выберите файл";
            
           Если ДиалогВыбора.Выбрать()Тогда
                 ИмяФайла=ДиалогВыбора.ПолноеИмяФайла;
            КонецЕсли ;
       
             Таблица.Очистить();
          Таблица.Колонки.Очистить();
          
          Попытка
              Excel=Новый COMОбъект("Excel.Application");
              Excel.WorkBooks.Open(ИмяФайла);
              Состояние("Обработка файла Excel");
              ExcelЛист=Excel.Sheets(1);
          Исключение
              Сообщить("шибка при открытии файла");
              Сообщить(ОписаниеОшибки());
              Возврат;
              КонецПопытки;
              
                      
              Версия=Лев(Excel.Version,Найти(Excel.Version,".")-1);
              Если Версия="8" Тогда
                  ФайлСтрок=Excel.Cells.CurrentRegion.Rows.Count;
                  ФайлКолонок=Макс(Excel.Cells.CurrentRegion.Columns.Count,13);
              Иначе
                  ФайлСтрок=Excel.Cells(1,1).SpecialCells(11).Row;
                  ФайлКолонок=Excel.Cells(1,1).SpecialCells(11).Column;
              КонецЕсли;
              
              Счетчик=1;
              Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл
                  ИмяКолонки=Excel.Cells(1,Счетчик).Text;
                   ИмяБезПробелов=СтрЗаменить(ИмяКолонки," ","");
                   //Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
                   Таблица.Добавить(ИмяКолонки);
                   НоваяКолонка=ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов,ИмяКолонки);
                   НоваяКолонка.Данные=ИмяБезПробелов;
                   Счетчик=Счетчик+1;
               КонецЦикла;
              
               Для нс=2 по Файлстрок Цикл
               НоваяСтрока=Таблица.Добавить();
               Для НомерКолонки=1 По Таблица.Колонки.Количество()Цикл
                   ТекущееЗначение=Excel.Cells(нс.НомерКолонки).Text;
                    ИмяКолонки=Таблица.Колонких[НомерКолонки-1].Имя;
                    НоваяСтрока[ИмяКолонки]=ТекущееЗначение;
                  
                  
                  
                КонецЦикла;
                 КонецЦикла;
       
      КонецПроцедуры


    Появляются такие ошибки: Слишком много фактических параметров
    Таблица.Добавить(ИмяКолонки);

    помогите,пожалуйста, разобраться.
      Цитата Sweety Bell @
      Таблица.Добавить(ИмяКолонки);

      Таблица.Колонки.Добавить(ИмяКолонки);
        я так и написала. Проверила с помощью отладчика. Зависает на строке выше

        ExpandedWrap disabled
          Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл
                  ИмяКолонки=Excel.Cells(1,Счетчик).Text;
                        Таблица.Добавить(ИмяКолонки);
          А почему тогда опять в цитируемом коде неправильно? И сообщение об ошибке тогда тут при чем вот это:
          Цитата Sweety Bell @
          Появляются такие ошибки: Слишком много фактических параметров
          Таблица.Добавить(ИмяКолонки);

          ???

          Какая ошибка-то в итоге?

          Может еще быть так, что отлаживается новая версия обработки, а в режиме предприятия открыта старая.
            оно ругается на имя файла. В файле excel действительно названия с пробелами. Я изменила код.

            Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл
            ИмяКолонки=Excel.Cells(1,Счетчик).Value;
            ИмяБезПробелов=СтрЗаменить(ИмяКолонки," ","");
            ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"-","");
            ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,".","");
            ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"/","");
            ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"()","");
            ИмяБезПробелов=ТРег(ИмяБезПробелов);

            Если СокрЛП(ИмяБезПробелов)="" Тогда
            прервать;
            Иначе
            Сообщить(ИмяБезПробелов);
            ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов);



            Но он все доходит до пустого столбца и выдает ошибку в этой строке
            ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов);
              Ну я бы посмотрел что в той строке содержится реально, причем вывел бы код каждого символа. Там могут быть табуляторы, разделители строк или еще что.
                там действительно были пробелы в строках в файле. я добавила обработку
                Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл
                ИмяКолонки=Excel.Cells(1,Счетчик).Value;
                ИмяБезПробелов=СтрЗаменить(ИмяКолонки," ","");
                ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"-","");
                ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,".","");
                ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"/","");
                ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"()","");
                ИмяБезПробелов=ТРег(ИмяБезПробелов);

                Если СокрЛП(ИмяБезПробелов)="" Тогда
                прервать;
                Иначе
                Сообщить(ИмяБезПробелов);
                ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов);


                Код доходит до пустого столбца и вылетает. Не могу выйти из этой ситуации
                  1. Проанализировать что там за символ с помощью КодСимв().
                  2. Забить и сделать через Попытка...Исключение, но это не правильно.
                    Зачем придумывать велосипед?
                      Цитата evGenius @
                      Там могут быть табуляторы, разделители строк или еще что.

                      Или неразрывный пробел (Символы.НПП). В свое время я тоже намучался с этим символом в Excel и в 1С.
                      я бы еще добавил СтрЗаменить(ИмяКолонки, Символы.НПП,"").
                      Цитата teagirl @
                      Зачем придумывать велосипед?

                      Видимо, очень надо )))
                      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0283 ]   [ 14 queries used ]   [ Generated: 17.07.25, 23:40 GMT ]