Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
1

Ошибка в обработке загрузки из Excel

28.09.2017, 22:17. Просмотров 1143. Ответов 20
Метки нет (Все метки)

Почему не работает Excel.Application? Видит Объект Excel как переменную и говорит что не знает такой переменной... 1c 8.1 Предприятие
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2017, 22:17
Ответы с готовыми решениями:

Ошибка в обработке
Вот код обработки весь ... Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ...

Ошибка в обработке проведения
В модуль документа "ЧекККМ" в процедуру "Обработка проведения" Я добавил...

Ошибка в обработке заполнения (БГУ)
Когда пользователь пытается заполнить форму 0503164 на основании формы 0503127,...

Ошибка в обработке удаление проведения.
Подскажите как быть , провожу отмену проведения, конфигурация не снимает...

Ошибка в обработке проведения регистра бухгалтерии
Всем привет! Вылезает ошибка при движение в рег бухглтерии. пытаюсь решить...

20
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,781
28.09.2017, 22:32 2
Даниил Башков, покажите ваш код.
0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 22:41  [ТС] 3
Вот ошибка -{Обработка.Обработка.Форма.Форма(50)}: Поле объекта не обнаружено (Колонка)
ТабличнаяЧасть.Колонка.Добавить(ИмяБезПробелов,,ИмяКолонки);



1C
1
2
3
4
5
6
7
8
9
Сч = 1;
Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл
ИмяКолонки = Excel.Cells(1, Сч).Text;
ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы
ТабличнаяЧасть.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
НоваяКолонка = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
НоваяКолонка.Данные = ИмяБезПробелов;
Сч = Сч + 1;
КонецЦикла;

Код брал в интернете... Может что напутал...
0
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,781
28.09.2017, 22:56 4
Даниил Башков, а при чем тут эксель? Я в упор не вижу конкретно ту строку, которая указана в ошибке. КолонкА и КолонкИ - посмотрите на ваш код внимательнее.
И когда я просила показать код - имелось ввиду весь код, с созданием COMобъекта.

Добавлено через 30 секунд

Не по теме:

п.с. продолжаем тему, не надо плодить новые:)

0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 23:12  [ТС] 5
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Процедура КнопкаВыполнитьНажатие(Кнопка)
    ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбора.Заголовок = "Выберите файл";
 
Если ДиалогВыбора.Выбрать() Тогда
ИмяФайла = ДиалогВыбора.ПолноеИмяФайла;
КонецЕсли;
//очищаем таблицу и удаляем колонки
ТабличнаяЧасть.Очистить();
//подключаемся к эксель
Попытка
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;
Конецесли;
//считываем первую строку и генерируем колонки
 
Сч = 1;
Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл
ИмяКолонки = Excel.Cells(1, Сч).Text;
ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы
ТабличнаяЧасть.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
НоваяКолонка = ЭлементыФормы.ТабличнаяЧасть1.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
НоваяКолонка.Данные = ИмяБезПробелов;
Сч = Сч + 1;
КонецЦикла;
Для НС = 2 по ФайлСтрок Цикл // НС указываем с какой строки начинать обработку
 
Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
 
ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
 
НоваяСтрока = ТабличнаяЧасть.Добавить();
 
Для НомерКолонки = 1 по ТабличнаяЧасть.Колонки.Количество() Цикл
//заполняем строку значениями
ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;
ИмяКолонки = ТабличнаяЧасть.Колонки[НомерКолонки-1].Имя;
НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
КонецЦикла;
 
КонецЦикла;
КонецПроцедуры
Добавлено через 2 минуты
Тут похоже не в Excel.Application дело... Просто что то в коде в строке - ТабличнаяЧасть.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 23:14  [ТС] 6
Вот моя форма
0
Миниатюры
Ошибка в обработке загрузки из Excel  
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,781
28.09.2017, 23:17 7
Даниил Башков, да нет тут ошибок. У вас в описании ругается на "КолонкА", где это в коде? Я не вижу. Выложите вашу обработку целиком.

Не по теме:

В Конфигураторе - Сохранить как внешнюю обработку/отчет, заархивируйте и во вложения.



Добавлено через 1 минуту
Даниил Башков, в общем жду обрабокту или скрина формы на вкладке Реквизиты. Какой тип - ТабличнаяЧасть?
0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 23:18  [ТС] 8
Я вам скинул все что есть... Я первый раз открыл 1с... Да и в программирование не так давно... Так что может вы мне подскажете что мне сделать.... У меня форма в обработке, в этой форме кнопка выполнить и процедуру нажатия кнопки я вам скинул!
0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 23:20  [ТС] 9
Это?
0
Миниатюры
Ошибка в обработке загрузки из Excel  
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,781
28.09.2017, 23:21 10
Даниил Башков, что сделать: слева в Конфигураторе - дерево объектов. Выделяете в ветке Обработки - Обработка. Правой кнопкой мыши - Сохранить как внешнюю обработку/отчет. Архивируете. В сообщении выкладываете во вложении.
0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 23:23  [ТС] 11
Вот
0
Вложения
Тип файла: rar Обработка.rar (5.1 Кб, 2 просмотров)
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,781
28.09.2017, 23:23 12
нет, не это. Если выложить обработку никак. То в дереве объектов разверните ветку Табличные части, кроме ветки Реквизиты.
+ я просила скрин вкладки Реквизиты(см. мой скрин)
0
Миниатюры
Ошибка в обработке загрузки из Excel  
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 23:27  [ТС] 13
Вот что я понял из вашей просьбы -
0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 23:28  [ТС] 14
Вот
0
Миниатюры
Ошибка в обработке загрузки из Excel  
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
28.09.2017, 23:29  [ТС] 15
То в дереве объектов разверните ветку Табличные части, кроме ветки Реквизиты.


Тут я не понял
Вроде бы вы просили это -
0
Миниатюры
Ошибка в обработке загрузки из Excel  
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,781
28.09.2017, 23:33 16
Лучший ответ Сообщение было отмечено Даниил Башков как решение

Решение

Даниил Башков, а откуда код?) можно ссыль?
У вас совсем не те имена в коде. На форму вынесен реквизит с именем ТабличноеПоле1 типа ТаблицаЗначений. Колонки в этой таблице должны создаваться динамически - на основе открытого файла эксель. Поэтому везде ТабличнаяЧасть и ТабличнаяЧасть1 замените на ТабличноеПоле1.
Рабочий код:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Процедура КнопкаВыполнитьНажатие(Кнопка)
    ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбора.Заголовок = "Выберите файл";
    
    Если ДиалогВыбора.Выбрать() Тогда
        ИмяФайла = ДиалогВыбора.ПолноеИмяФайла;
    КонецЕсли;
    //очищаем таблицу и удаляем колонки
    ТабличнаяЧасть.Очистить();
    //подключаемся к эксель
    Попытка
        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;
    Конецесли;
    //считываем первую строку и генерируем колонки
    
    Сч = 1;
    Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл
        ИмяКолонки = Excel.Cells(1, Сч).Text;
        ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы
        ТабличноеПоле1.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
        НоваяКолонка = ЭлементыФормы.ТабличноеПоле1.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
        НоваяКолонка.Данные = ИмяБезПробелов;
        Сч = Сч + 1;
    КонецЦикла;
    Для НС = 2 по ФайлСтрок Цикл // НС указываем с какой строки начинать обработку
        
        Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
        
        ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
        
        НоваяСтрока = ТабличноеПоле1.Добавить();
        
        Для НомерКолонки = 1 по ТабличноеПоле1.Колонки.Количество() Цикл
            //заполняем строку значениями
            ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;
            ИмяКолонки = ТабличноеПоле1.Колонки[НомерКолонки-1].Имя;
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
        КонецЦикла;
        
    КонецЦикла;
КонецПроцедуры

Не по теме:

п.с. Для лучшей читаемости кода: ctrl+A -> alt+shift+F :)

0
Yulunga
346 / 243 / 66
Регистрация: 22.04.2013
Сообщений: 1,624
Записей в блоге: 1
Завершенные тесты: 1
29.09.2017, 05:31 17
Цитата Сообщение от GreenkA Посмотреть сообщение
а откуда код?) можно ссыль?
вот тут наиболее полная и красивая версия

только там тоже ерунда написана :
1C
1
2
3
4
5
6
7
Попытка         
            Сообщить("Файл Excel прочитан!");
            Excel.Quit();
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;
типа если ошибка - то ексель закрывать не надо, ога. и висят они по 10 штук в памяти.
так что в исключении тоже надо закрыть
0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
29.09.2017, 11:21  [ТС] 18
Спасибо, милые дамы!

Добавлено через 1 минуту
http://programmist1s.ru/zagruzka-iz-excel-v-1s/
Спасибо вам огромное!
0
GreenkA
29.09.2017, 11:24
  #19

Не по теме:

Цитата Сообщение от Даниил Башков Посмотреть сообщение
Спасибо, милые дамы!
:rofl:Yulunga, кучерявая Андрей-Юлунга:good:

0
Даниил Башков
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
29.09.2017, 12:07  [ТС] 20
Прочитал как Юлия
0
29.09.2017, 12:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2017, 12:07

Загрузки номенклатуры из Excel в 1С 7.7
Всем добрый день и с наступающим 1 мая!!!! Есть внешняя обработка для загрузки...

Алгоритм загрузки изображений из excel по ссылке URL в реквизит основное изображение
Добрый день. Есть стандартная обработка "ЗагрузкаДанныхИзТабличногоДокумента" В...

ЗУП 3.1. Ошибка в обработке по расчету выплат: неверные параметры "Перечисление.ВидыУчетаВремени.ПоДням"
Здравствуйте. Для ЗУП2,5быласделана обработка расчета выплат по выслуге лет и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru