Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Табличные части из Эксель документа          
Lexveritas Подменю пользователя
сообщение 11.06.18, 15:55
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

УПП 1.3, 1С8,3,10

В документе "УстановкаЦенНоменклатуры" кнопка.

Вот обработчик кнопки:

Процедура КоманднаяПанельТаблицыТиповЦенДобваитьИзЭксель(Кнопка)
    
    ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбора.Заголовок     ="Выберите файл";
      
    Если ДиалогВыбора.Выбрать()Тогда
        ИмяФайла=ДиалогВыбора.ПолноеИмяФайла;
    КонецЕсли;
    ТаблицаЦен.Очистить();
    Попытка
        Excel=Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ИмяФайла);
        Состояние("Обработка файла Excel");
        ТекЛист=Excel.Sheets(1);
        Excel.WorkBooks.Close();
    Исключение
        Сообщить(ОписаниеОшибки());
        Предупреждение("Файл не открыт!"+Символы.ПС+"Проверьте файл!");
        Возврат
    КонецПопытки;
    МассивКолонок = ТекЛист.Выгрузить();
    ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;
    Для СтрокаТП = 0 По ВсегоСтрок Цикл
        НоваяСтрока = ТаблицаЦен.Добавить();
        НоваяСтрока.Номенклатура = СокрЛП(МассивКолонок.Получить(1).Получить(СтрокаТП));
    КонецЦикла;
    
      
КонецПроцедуры


При выполнении появляется вот такая ошибка:

{Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента.Форма(2592)}: Метод объекта не обнаружен (Выгрузить)
МассивКолонок = ТекЛист.Выгрузить();

Кто нибудь!
Подскажите что за... Что я делаю не так?

Petre Подменю пользователя
сообщение 11.06.18, 16:13
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

У данного COM-объекта нет метода "Выгрузить". Там все методы - латинские.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Lexveritas Подменю пользователя
сообщение 12.06.18, 8:40
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Petre @ 11.06.18, 17:13) *
У данного COM-объекта нет метода "Выгрузить". Там все методы - латинские.

Ну, тогда я вообще в край потерялся. А, какой метод тогда необходимо использовать?
Перебирать методы екселя на МСДН ничего не дало!

sava1 Подменю пользователя
сообщение 12.06.18, 9:03
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

пройти циклом по строкам Листа и заполнить ТЧ

Lexveritas Подменю пользователя
сообщение 12.06.18, 10:32
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(sava1 @ 12.06.18, 10:03) *
пройти циклом по строкам Листа и заполнить ТЧ

А, хоть какой то пример? Вообще не понимаю как это соорудить!

sava1 Подменю пользователя
сообщение 12.06.18, 10:55
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Вооще-то Гугль дает кучу сцылок

[необходимо зарегистрироваться для просмотра ссылки]

Спасибо сказали: Lexveritas,

Lexveritas Подменю пользователя
сообщение 12.06.18, 16:03
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(sava1 @ 12.06.18, 11:55) *
[необходимо зарегистрироваться для просмотра ссылки]


Это сработало.
Но.
Вот такой обработчик
Процедура ИмпортироватьЦеныНажатие(Элемент)
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите имя файла для чтения";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Фильтр = "Файл MS Excel (.xlsx)| *.xlsx";
    //Диалог.Фильтр = "Все файлы (*.*)| *.*";
    
    Если Не Диалог.Выбрать() Тогда
        Сообщить("Файл для обработки не выбран!");
    Иначе
        //подключаемся к Excel
        ФайлДанных = Диалог.ПолноеИмяФайла;
        Попытка
            Excel = Новый COMОбъект("Excel.Application");
            Excel.WorkBooks.Open(ФайлДанных);
            Состояние("Обработка файла Microsoft Excel...");
        Исключение
            Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;

        Попытка
            //Открываем необходимый лист
            Excel.Sheets(1).Select(); // лист 1, по умолчанию
        Исключение
            //Закрываем Excel
            Excel.ActiveWorkbook.Close();
            Excel = 0;
            Сообщить("Файл " + Строка(ФайлДанных) + " не соответствует необходимому формату! Первый лист не найден!");
            Возврат;
        КонецПопытки;

        //Получим количество строк и колонок.
        //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
        Версия = Лев(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;
        КонецЕсли;
        
        ИмпртЦен.Очистить();
        
        Попытка //Если случится ошибка, то закроем файл, чтобы не висел в процессах
            Для Сч = 2 По ФайлСтрок Цикл
                Состояние("Обрабатывается строка " + Строка(Сч) + " из " + Строка(ФайлСтрок));
                Если НЕ СокрЛП(Excel.Cells(Сч, 1).Value) = ""  Тогда
                    НоваяСтрока = ИмпртЦен.Добавить();
                    НоваяСтрока.Номенклатура     = СокрЛП(Excel.Cells(Сч, 1).Text);
                    НоваяСтрока.Цена             = СокрЛП(Excel.Cells(Сч, 2).Text);
                    //НоваяСтрока.ТестовоеЧисло1     = СокрЛП(Excel.Cells(Сч, 3).Value);
                    //НоваяСтрока.ТестовоеЧисло2     = СокрЛП(Excel.Cells(Сч, 4).Value);
                    //НоваяСтрока.ТестовоеЧисло3     = СокрЛП(Excel.Cells(Сч, 5).Value);
                    //НоваяСтрока.ТестовоеЧисло4     = СокрЛП(Excel.Cells(Сч, 6).Value);
                    //НоваяСтрока.ТестовоеЧисло5     = СокрЛП(Excel.Cells(Сч, 7).Value);
                    //НоваяСтрока.ТестовоеЧисло6     = СокрЛП(Excel.Cells(Сч, 8).Value);
                    //НоваяСтрока.ТестовоеЧисло7     = СокрЛП(Excel.Cells(Сч, 9).Value);
                    //НоваяСтрока.ТестоваяДата     = СокрЛП(Excel.Cells(Сч, 10).Value);
                КонецЕсли;
                КонецЦикла;
        Исключение
            //Закрываем Excel
            Excel.ActiveWorkbook.Close();
            Excel.Quit();
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;
        
        Попытка            
            Сообщить("Файл Excel прочитан!");
            Excel.Quit();
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;            
    КонецЕсли;
КонецПроцедуры

Указанный пример сильно изменять не пришлось...

Засада в том, что не хочет заполнять поле "Номенклатура"... Как сделать "НайтиКоду" или наименованию? Я так понимаю что разница в типе данных?

Lexveritas @ Сегодня, 16:30 * ,
Сам же отвечу на свой вопрос...
НоваяСтрока.Номенклатура     = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Excel.Cells(Сч, 1).Text));


НО!
Есть "ХАрактеристикаНоменклатуры" справочник подчиненный владельцу...
Как Здесь быть?

Спасибо сказали: ebuofficial2705@gmail.com,

Vidocq05 Подменю пользователя
сообщение 13.06.18, 10:27
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

Цитата(Lexveritas @ 12.06.18, 17:03) *
НО!
Есть "ХАрактеристикаНоменклатуры" справочник подчиненный владельцу...
Как Здесь быть?


НоваяСтрока.ХарактеристикаНоменклатуры = Справочники.ХарактеристикаНоменклатуры.НайтиПоНаименованию(СокрЛП(Excel.Cells(Сч, "КолонкаХарактеристики").Text),,,НоваяСтрока.Номенклатура);


Спасибо сказали: Lexveritas,

Lexveritas Подменю пользователя
сообщение 13.06.18, 10:33
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Vidocq05 @ Сегодня, 11:27 * ,

Именно так и сделал!
По собственной же глупости не увидал что там еще и по владельцу параметр есть...
Но все равно спасибо!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 16:41
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!