Ошибка при открытии файла с помощью excel загрузка не будет произведена 1с

   falselight

27.04.20 — 05:05

Подскажите пожалуйста, в чем может быть ошибка, открытия .xls листа?

    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(Файл);

    Исключение

        Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);

        Сообщить(ОписаниеОшибки());

        Возврат 0;

    КонецПопытки;

Выходит сообщение об ошибке, —

Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!

{ВнешняяОбработка.LOADxls.Форма.Форма.Форма(18)}: Ошибка при вызове конструктора (COMОбъект): -2147220994(0x800401FE): Приложение было запущено, но оно не зарегистрировало фабрику классов

   falselight

1 — 27.04.20 — 05:20

Ошибка, на этой строке.

Excel = Новый COMОбъект(«Excel.Application»);

Запустил другой конфигуратор. Там такой ошибки нет.

   falselight

2 — 27.04.20 — 05:39

Может что известное. Хотел узнать.

Пока работаю под другим конфигуратором.

   Василий Алибабаевич

3 — 27.04.20 — 08:00

(0)

1. Если все расположено на клиентской машине — нужно установить нормальный Excel.

2. Если на сервере — п. 1 и проверить права пользователя ОС на создание COM объектов.

   SleepyHead

4 — 27.04.20 — 08:37

(0) А что, читать через табличный документ уже нельзя?

   falselight

5 — 27.04.20 — 11:01

(3) (4) Дело в том что не работает на одной из версий платформы. На которой я начал делать.

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

В начале же нужно прочитать с Эксель. Вот с него не читалось.

   H A D G E H O G s

6 — 27.04.20 — 11:23

ЛивингСтар, ты ли это?

   SleepyHead

7 — 27.04.20 — 11:27

(5) Ты вообще понял, что написано в (4)?

Читай через табличный документ,а  не ком-объект. И будет тебе счастье.

   ChMikle

8 — 27.04.20 — 14:17

(0) База какая SQL или файловая и где выполняется >>Excel = Новый COMОбъект(«Excel.Application»); в процедуре

&НаКлиенте или &НаСервере ?

   Ram_zes

9 — 27.04.20 — 14:20

(0) считай это дерьмо через табличный документ

   Ram_zes

10 — 27.04.20 — 14:21

(0) и да

Тут рука профи нужна.

zmb@list.ru

Загрузка файла будет 1500 на карту стоить. Предоплата 100%.

   falselight

11 — 27.04.20 — 16:39

(4) Да как то привык так вот эксель открывать при загрузке с него.

А не копировать и вставлять в табличный документ.

   falselight

12 — 27.04.20 — 16:40

(8) На сервере конечно, как обычно.

&НаСервере

Функция СоздатьТЗсXLSЛистов(Файл)

    Таблица = Новый ТаблицаЗначений;

    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(Файл);

    Исключение

        Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);

        Сообщить(ОписаниеОшибки());

        Возврат 0;

    КонецПопытки;

    Попытка

        Excel.Sheets(1).Select();  

    Исключение

        Excel.ActiveWorkbook.Close();     

        Excel = 0;

        Сообщить(«Файл » + Строка(Файл)+» не соответствует необходимому формату! Первый лист не найден!»);

        ОтменитьТранзакцию();

        Возврат 0;

   falselight

13 — 27.04.20 — 16:40

(8) В данный момент файловая.

   falselight

14 — 27.04.20 — 16:42

(10) А как вы сообщение отредактировали свое????

   ChMikle

15 — 27.04.20 — 16:43

(12) Попробуйте создать процедуру  &НаКлиенте и в процедуре открыть файл . Кстати Ексель стоит на компе, где пытаетесь  файл считать.

&НаКлиенте процедура()

  Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(Файл);

    Исключение

        Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);

        Сообщить(ОписаниеОшибки());

        Возврат 0;

    КонецПопытки;

   falselight

16 — 27.04.20 — 17:13

(15) Тут вопрос был, почему под одной платформой не работает.

Идет ошибка что в (0). А под другой работает.

Я этого не мог понять. Может что с платформой.

Попробую ваш совет.

А ещё на сервере такой метод может не сработать, вроде как была как то у меня информация. Там как то иначе нужно.

Может это вот этот ваш совет про это. Я там встретился с тем что на сервере. делают копированием в табличный документ.

   ChMikle

17 — 27.04.20 — 17:52

(16) Вы можете на клиенте в таблицу значений считать данные екселя и отдать ее на сервер выполнять дальнейшие манипуляции.

   Cthulhu

18 — 27.04.20 — 18:07

(17): на клиенте бывает (штатно) таблицазначений? и она норм сериализуется при передаче на сервер???

   Timon1405

19 — 27.04.20 — 18:16

   Cthulhu

20 — 27.04.20 — 18:46

(19): метод «Прочитать» для таб.документов появился совсем недавно (в 15-м что ли релизе?)

ну и там (по ссылке) в принципе в коде не учтено, что книга читается в таб.документ с областями, имена которых совпадают с именами листов книги….

   Cthulhu

21 — 27.04.20 — 18:48

(10): опс. пардон, ялох…

просто на практике недавно нарвался, что «прочитать» нормально работал на 15-м — и при этом напрочь отказывался на 14-м… пардон, про «недавно№ не читайте, по ссылке на 9-м проверено…

   falselight

22 — 28.04.20 — 10:00

В файловой базе загрузка прошла успешно.

Сейчас перенес на сервер. На удаленный рабочий стол, там не работает. Ошибка http://joxi.ru/823qePbHDq86wr

тут нужно делать как в (19) или (15) или (4) советуют?

Ошибка при загрузке http://joxi.ru/KAx3R4VT1LKM62

и http://joxi.ru/823qePbHDq86wr

   falselight

23 — 28.04.20 — 10:02

Ошибка на Колонки, на какие то из этих процедур видимо

&НаСервере

Функция СоздатьТЗсXLSЛистов(Файл)

    Таблица = Новый ТаблицаЗначений;

    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(Файл);

    Исключение

        Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);

        Сообщить(ОписаниеОшибки());

        Возврат 0;

    КонецПопытки;

    Попытка

        Excel.Sheets(1).Select();  

    Исключение

        Excel.ActiveWorkbook.Close();     

        Excel = 0;

        Сообщить(«Файл » + Строка(Файл)+» не соответствует необходимому формату! Первый лист не найден!»);

        ОтменитьТранзакцию();

        Возврат 0;

    КонецПопытки;    

    Версия = Лев(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 по ФайлСтрок Цикл  

        НоваяСтрока                = Таблица.Добавить();        

        //

        НоваяСтрока[«НоваяСтрока»] = НомерСтроки;            

        //

        Для НомерКолонки = 1 по Таблица.Колонки.Количество()-1 Цикл

            ТекущееЗначение         = Excel.Cells(НС, НомерКолонки).Text;

            ИмяКолонки                = Таблица.Колонки[НомерКолонки].Имя;             

            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;            

        КонецЦикла;

        НомерСтроки = НомерСтроки + 1;

    КонецЦикла;  

    //

    Excel.DisplayAlerts = 0;

    Excel.ActiveWorkbook.Close();

    Excel.Quit();

    Excel.DisplayAlerts = 1;

    //

    Возврат Таблица;

КонецФункции

//

&НаСервере

Процедура СоздатьТаблицуНаФорме(ТзДляСоздания)

    //

    Таблица          = РеквизитФормыВЗначение(«Товары»);

    МассивРеквизитов = Новый Массив;

    Для Каждого Колонка Из Таблица.Колонки Цикл

        МассивРеквизитов.Добавить(«Товары.» + Колонка.Имя);      

    КонецЦикла;

    //

    ИзменитьРеквизиты(,МассивРеквизитов);

    //

    ЭлементТаблица = Элементы.Найти(«Товары»);

    Если ЭлементТаблица <> Неопределено Тогда

        Элементы.Удалить(ЭлементТаблица);      

    КонецЕсли;    

    //

    ЭлементТаблица             = Элементы.Добавить(«Товары», Тип(«ТаблицаФормы»), Элементы.Группа7);

    ЭлементТаблица.ПутьКДанным = «Товары»;

    ЭлементТаблица.Отображение = ОтображениеТаблицы.Список;  

    //

    МассивРеквизитов.Очистить();

    Для Каждого Колонка ИЗ ТзДляСоздания.Колонки Цикл

        МассивТипов = Новый Массив;

        МассивТипов.Добавить(Колонка.ТипЗначения);

        НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), «Товары»);

        МассивРеквизитов.Добавить(НоваяКолонка);

    КонецЦикла;

    //

    ИзменитьРеквизиты(МассивРеквизитов);

    ЗначениеВРеквизитФормы(ТзДляСоздания, «Товары»);

    //

    ЭлементТЗ = Элементы.Товары;

    Для Каждого Колонка ИЗ ТзДляСоздания.Колонки Цикл

        НовыйЭлементФормы             = Элементы.Добавить(«Товары» + Колонка.Имя, Тип(«ПолеФормы»), ЭлементТЗ);

        НовыйЭлементФормы.Вид         = ВидПоляФормы.ПолеВвода;

        НовыйЭлементФормы.ПутьКДанным = «Товары.» + Колонка.Имя;

    КонецЦикла;

КонецПроцедуры

//

   ChMikle

24 — 28.04.20 — 10:26

(22) с правами на доступ к екселю (или он вообще не установлен на компе гдк стоит сервер 1С) у пользователя под которым запущен сервер 1С

   falselight

25 — 28.04.20 — 10:47

(24) Эксель стоит. Открывается. Видимо там принцип работы какой то другой. Отличный от того что выполняется в файловой версии на персональном компьютере.

   falselight

26 — 28.04.20 — 10:50

(25) Принцип обработки файла кодом из 1с, я имею ввиду

   ChMikle

27 — 28.04.20 — 10:51

(25) когда в серверной версии вы на сервере запускаете работу с екселем, то создается сом объект на компе где стоит сервер 1С и под правами пользователя , под которыми он запущен.

   ChMikle

28 — 28.04.20 — 10:53

+(27) 1Ссервер м.б. запущен не под тем пользователем, под которым вы заходите для проверки прав доступа к екселю

   falselight

29 — 28.04.20 — 11:01

(28) Да на этом сервере у меня органиченные права. то есть получается этот код не отработает там?

Как можно выйти из положения?

   falselight

30 — 28.04.20 — 11:05

(17) &НаКлиенте не доступна     Таблица = Новый ТаблицаЗначений;

   ChMikle

31 — 28.04.20 — 11:06

(29) администратор системного подключать и проверять права именно на доступ к екселю под пользователем , под которым сервер 1С  запущен

(30) К екселю подключается из под разных платформ ?

   ChMikle

32 — 28.04.20 — 11:15

(30) на форме создайте элемент ТаблицаЗначений , колонки добавьте и потом перебором переписывайте

   falselight

33 — 28.04.20 — 11:25

(31) На сервере под удаленным рабочим столом одна платформа.

(32) И на сервере не работает отладка, не посмотрю как выполняется код. Одно видно что ругается на Колонки сначала (22) .

   falselight

34 — 28.04.20 — 11:40

(32) А как мне эксель то открыть?

   falselight

35 — 28.04.20 — 12:56

Проверил, да, на клиенте может эксель открыть. Почему тогда такая проблема, не совсем пойму, из за чего.

   ikea

36 — 28.04.20 — 13:10

(35) А как файл Excel на сервер с клиента передается? Через временное хранилище?

   МимохожийОднако

37 — 28.04.20 — 13:18

Повторюсь. Не надо СОМ. Используй чтение в табличный документ из файла методами 1С.

   Cthulhu

38 — 28.04.20 — 13:29

если уж так хоццца через com

попробуй включи пользователя, под которым запускается сервер приложений 1С Предприятия 8,  в группу Distributed COM Users — если не поможет, то дополнительно включить его в группу локальных администраторов.

(о результате — отпишись?)

   Cthulhu

39 — 28.04.20 — 13:31

(36): тогда бы ошибка была про файл. который не найден —  не на этапе создания com-объекта, а при открытии файла….

   Cthulhu

40 — 28.04.20 — 13:33

   falselight

41 — 28.04.20 — 13:39

(37) Буду пробовать сейчас этот вариант.

Ещё раз. спасибо за мотивацию.

   falselight

42 — 28.04.20 — 16:00

После того как с табличного документа я заполню &НаСервере таблицу значений,

где мне заполнять табличную часть на форме обработки? &НаКлиенте или на &НаСервере ?

А то утомился, подумал спрошу дельный совет. С табличного документа, я заполнил таблицу значений на сервере. Дальше?

Что бы на форме заполнить.

Что бы это все работало на удаленном рабочем столе, на сервере в базе ms sql server.

   Фрэнки

43 — 28.04.20 — 16:09

(42) Так ты на Сервере заполняй сразу в Объект, который из реквизита формы в значение получен. А затем обратно из значения в реквизит формы

у тебя что нет типовой? там же есть такое уже готовое, что подсмотреть можно.

   falselight

44 — 28.04.20 — 16:15

(43) Буду сейчас пробовать!

   falselight

45 — 28.04.20 — 16:15

(43) То есть сама таблица значений что есть у обработки, и положена на форму обработки для визуального отображения не доступна &НаСервере ?

   H A D G E H O G s

46 — 28.04.20 — 16:17

Ахахаха, жесть жестяночка.

   Cthulhu

47 — 28.04.20 — 16:19

(45): во-первых, реквизит №тз» и объект «тз» — это две большие разницы.

ну и во-вторых — а вы попробуйте эту «тз» передать в параметре на сервер… а потом расскажите…

(46) ага. :)))

   falselight

48 — 28.04.20 — 16:21

Смысл в том, что получив таблицу значений с эксель

хочу вывести это на форму. Вот и узнаю что бы без проб, как сразу правильно делать?

http://joxi.ru/RmznO4eiRZ5wVm

Намек хотя бы.

   Фрэнки

49 — 28.04.20 — 16:27

(48) такая ТЗ, как у тебя на картинке видна = реквизит формы. Поэтому нужно через

ТекущийОбъект = РеквизитФормыВЗначение(«Книги»);

ЗдесьПишемСвойКодЗаполнения(ТекущийОбъект);

ЗначениеВРеквизитФормы(ТекущийОбъект, «Книги»);



тогда увидишь свою заполненную тз на форме

   ChMikle

50 — 28.04.20 — 17:01

(48) делал загрузку с формы, поищу обработку , если найду вышлю

   МимохожийОднако

51 — 28.04.20 — 17:12

(48) достаточно поместить табличное поле на форму, связанную с прочитанной таблицей. Посмотри типовую обработку по загрузке данных из табличного документа.

   ChMikle

52 — 28.04.20 — 17:29

Куда выслать обработку ?

   falselight

53 — 29.04.20 — 04:04

(52) Спасибо. Я сам делаю тут. Все равно по загрузке свои особенности.

Или вы тоже грузили в УТ 11.4

Вес товара с упаковкой (г), г    

Высота предмета, см    

Высота упаковки, см    

Глубина предмета, см    

Глубина упаковки, см    

Ширина предмета, см    

Ширина упаковки, см

   falselight

54 — 29.04.20 — 04:35

(52) Ну, а если есть интересные какие примеры. Можно сюда. MyRezume2020@yandex.ru

  

falselight

55 — 29.04.20 — 04:59

На сервере удалось прочитать, вот таким кодом.

Сейчас уже и дальше можно обрабатывать.

//

&НаКлиенте

Процедура ФайлДляЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = ложь;

    ВыбратьФайл(«ФайлДляЗагрузки»);

КонецПроцедуры

//

&НаКлиенте

Процедура ВыбратьФайл(ФайлДляЗагрузки)

    #Если ВебКлиент Тогда

    Результат = ПодключитьРасширениеРаботыСФайлами();

    Если Не Результат Тогда

        УстановитьРасширениеРаботыСФайлами();

        Если Не ПодключитьРасширениеРаботыСФайлами() Тогда

            ВызватьИсключение «Ошибка. Ваш браузер не поддерживает работу с файлами.»;

        КонецЕсли;

    КонецЕсли;

    #КонецЕсли

    Диалог                         = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

    Диалог.Заголовок             = «Выберите файл»;

    Диалог.ПолноеИмяФайла         = «»;

    Диалог.МножественныйВыбор     = Ложь;

    Диалог.Фильтр               = «Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|»;

    Оповещение                  = Новый ОписаниеОповещения(«ОповещениеПослеВыбораФайлаДляОткрытия», ЭтотОбъект, ФайлДляЗагрузки);    

    Диалог.Показать(Оповещение);

КонецПроцедуры

//

&НаКлиенте

Процедура ОповещениеПослеВыбораФайлаДляОткрытия(ВыбранныеФайлы, ДопПараметры) Экспорт

    Если ТипЗнч(ВыбранныеФайлы) = Тип(«Массив»)    Тогда

        Объект[ДопПараметры] = ВыбранныеФайлы[0];

    КонецЕсли;

КонецПроцедуры

//

&НаКлиенте

Процедура Прочитать(Команда)

    Если Не ЗначениеЗаполнено(Объект.ФайлДляЗагрузки) Тогда

        Сообщить(«Не указан файл. Обработка не выполнена.»);

        Возврат;

    КонецЕсли;    

    ВыбФайл = Новый Файл(Объект.ФайлДляЗагрузки);

    Если Не ВыбФайл.Существует() Тогда

        Сообщить(«Файл не существует!»);

        Возврат;

    КонецЕсли;  

    ТДВыгрузка = Новый ТабличныйДокумент;

    мПрочитатьТабличныйДокументИзExcel(ТДВыгрузка, Объект.ФайлДляЗагрузки, 1);

    ПрочитатьНаСервере(ТДВыгрузка);

КонецПроцедуры

//

&НаКлиенте

Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт

    xlLastCell = 11;

    ВыбФайл    = Новый Файл(ИмяФайла);

    Если НЕ ВыбФайл.Существует() Тогда

        Сообщить(«Файл не существует!»);

        Возврат Ложь;

    КонецЕсли;

    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(ИмяФайла);

        ExcelЛист = Excel.Sheets(НомерЛистаExcel);

    Исключение

        Сообщить(«Ошибка. Возможно неверно указан номер листа книги Excel.»);

        Возврат Ложь;

    КонецПопытки;

    SpecialCells = Excel.Sheets(НомерЛистаExcel).Cells.SpecialCells(11);

    RowCount     = SpecialCells.Row;

    ColumnCount  = SpecialCells.Column;

    Для Column = 1 По ColumnCount Цикл

        ТабличныйДокумент.Область(«C» + Формат(Column, «ЧГ=»)).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth;

    КонецЦикла;

    Для Row = 1 По RowCount Цикл

        Для Column = 1 По ColumnCount Цикл

            Если ТипЗнч(ExcelЛист.Cells(Row,Column).Value) = Тип(«Число») Тогда

                ЗначениеЗамена = СтрЗаменить(ExcelЛист.Cells(Row,Column).Value, » «, «»);

            Иначе

                ЗначениеЗамена = ExcelЛист.Cells(Row,Column).Value

            КонецЕсли;    

            ТабличныйДокумент.Область(«R» + Формат(Row, «ЧГ=») +»C» + Формат(Column, «ЧГ=»)).Текст = ЗначениеЗамена;

        КонецЦикла;

    КонецЦикла;

    Excel.WorkBooks.Close();

    Excel = 0;

    Возврат Истина;

КонецФункции //

//

&НаСервере

Процедура ПрочитатьНаСервере(Макет)

    ТЗсXLS = Новый ТаблицаЗначений;

    ТЗсXLS.Колонки.Добавить(«», Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«OzonID»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Баркод»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Наименование»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Автор»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Год»,                    Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Издательство»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Артикул»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Комплектация»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ВесТовараСУпаковкой», Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ВысотаПредмета»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ВысотаУпаковки»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ГлубинаПредмета»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ГлубинаУпаковки»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ШиринаПредмета»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ШиринаУпаковки»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Количество»,            Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Цена»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«НомерСтроки»,           Новый ОписаниеТипов(«Строка»));

    //

    Для Стр = 2 По Макет.ВысотаТаблицы Цикл

        НоваяСтрока                     = ТЗсXLS.Добавить();        

        НоваяСтрока.OzonID                 = СокрЛП(Макет.Область(Стр, 1).Текст);

        НоваяСтрока.Баркод                 = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Наименование         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Автор                 = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Год                 = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Издательство         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Артикул             = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Комплектация         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ВесТовараСУпаковкой = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ВысотаПредмета         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ВысотаУпаковки         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ГлубинаПредмета     = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ГлубинаУпаковки     = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ШиринаПредмета         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ШиринаУпаковки         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Количество             = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Цена                 = СокрЛП(Макет.Область(Стр, 2).Текст);        

        НоваяСтрока.НомерСтроки         = Стр;

    КонецЦикла;

    //

    ТзКнигиНаФорме = РеквизитФормыВЗначение(«Книги»);

    Для Каждого СтрТЗсXLS Из ТЗсXLS Цикл

        НоваяСтрока                     = ТзКнигиНаФорме.Добавить();        

        НоваяСтрока.НомерСтроки         = СокрЛП(СтрТЗсXLS.НомерСтроки-1);        

        НоваяСтрока.OzonID                 = СокрЛП(СтрТЗсXLS.OzonID);

        НоваяСтрока.Баркод                 = СокрЛП(СтрТЗсXLS.Баркод);

        НоваяСтрока.Наименование         = СокрЛП(СтрТЗсXLS.Наименование);

        НоваяСтрока.Автор                 = СокрЛП(СтрТЗсXLS.Автор);

        НоваяСтрока.Год                 = СокрЛП(СтрТЗсXLS.Год);

        НоваяСтрока.Издательство         = СокрЛП(СтрТЗсXLS.Издательство);

        НоваяСтрока.Артикул             = СокрЛП(СтрТЗсXLS.Артикул);

        НоваяСтрока.Комплектация         = СокрЛП(СтрТЗсXLS.Комплектация);

        НоваяСтрока.ВесТовараСУпаковкой = СокрЛП(СтрТЗсXLS.ВесТовараСУпаковкой);

        НоваяСтрока.ВысотаПредмета         = СокрЛП(СтрТЗсXLS.ВысотаПредмета);

        НоваяСтрока.ВысотаУпаковки         = СокрЛП(СтрТЗсXLS.ВысотаУпаковки);

        НоваяСтрока.ГлубинаПредмета     = СокрЛП(СтрТЗсXLS.ГлубинаПредмета);

        НоваяСтрока.ГлубинаУпаковки     = СокрЛП(СтрТЗсXLS.ГлубинаУпаковки);

        НоваяСтрока.ШиринаПредмета         = СокрЛП(СтрТЗсXLS.ШиринаПредмета);

        НоваяСтрока.ШиринаУпаковки         = СокрЛП(СтрТЗсXLS.ШиринаУпаковки);

        НоваяСтрока.Количество             = СокрЛП(СтрТЗсXLS.Количество);

        НоваяСтрока.Цена                 = СокрЛП(СтрТЗсXLS.Цена);        

    КонецЦикла;

    ЗначениеВРеквизитФормы(ТзКнигиНаФорме, «Книги»);    

КонецПроцедуры

//

0 / 0 / 0

Регистрация: 21.09.2017

Сообщений: 43

1

1C 8.x

28.09.2017, 22:17. Показов 5317. Ответов 20


Студворк — интернет-сервис помощи студентам

Почему не работает Excel.Application? Видит Объект Excel как переменную и говорит что не знает такой переменной… 1c 8.1 Предприятие



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

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



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

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

Вот моя форма

Миниатюры

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



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

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

Это?

Миниатюры

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



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

28.09.2017, 23:21

10

Даниил Башков, что сделать: слева в Конфигураторе — дерево объектов. Выделяете в ветке Обработки — Обработка. Правой кнопкой мыши — Сохранить как внешнюю обработку/отчет. Архивируете. В сообщении выкладываете во вложении.



0



0 / 0 / 0

Регистрация: 21.09.2017

Сообщений: 43

28.09.2017, 23:23

 [ТС]

11

Вот



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

28.09.2017, 23:23

12

нет, не это. Если выложить обработку никак. То в дереве объектов разверните ветку Табличные части, кроме ветки Реквизиты.
+ я просила скрин вкладки Реквизиты(см. мой скрин)

Миниатюры

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



0



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

Вот

Миниатюры

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



0



0 / 0 / 0

Регистрация: 21.09.2017

Сообщений: 43

28.09.2017, 23:29

 [ТС]

15

То в дереве объектов разверните ветку Табличные части, кроме ветки Реквизиты.

Тут я не понял
Вроде бы вы просили это —

Миниатюры

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



0



GreenkA

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

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

1155 / 702 / 203

Регистрация: 22.04.2013

Сообщений: 5,219

Записей в блоге: 1

29.09.2017, 05:31

17

Цитата
Сообщение от GreenkA
Посмотреть сообщение

а откуда код?) можно ссыль?

вот тут наиболее полная и красивая версия

только там тоже ерунда написана :

1C
1
2
3
4
5
6
7
Попытка          
            Сообщить("Файл Excel прочитан!");
            Excel.Quit();
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;

типа если ошибка — то ексель закрывать не надо, ога. и висят они по 10 штук в памяти.
так что в исключении тоже надо закрыть



0



GreenkA

29.09.2017, 11:24

Не по теме:

Цитата
Сообщение от Даниил Башков
Посмотреть сообщение

Спасибо, милые дамы!

:rofl:Yulunga, кучерявая Андрей-Юлунга:good:



0



0 / 0 / 0

Регистрация: 21.09.2017

Сообщений: 43

29.09.2017, 12:07

 [ТС]

20

Прочитал как Юлия



0



COM-объект и Excel

lilyapo сказал(-а): 20.12.2016 13:59

COM-объект и Excel

Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка

Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?

avm3110 сказал(-а): 20.12.2016 15:25

Re: COM-объект и Excel

Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка

Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?

lilyapo сказал(-а): 20.12.2016 15:55

Re: COM-объект и Excel

avm3110 сказал(-а): 20.12.2016 16:31

Re: COM-объект и Excel

А попробуй «завернуть» в Попытку

Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Excel.WorkBooks.Open(ИмяФайла);
Состояние(«Обработка файла Microsoft Excel. «);
Исключение
Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;

lilyapo сказал(-а): 20.12.2016 17:04

Re: COM-объект и Excel

avm3110 сказал(-а): 20.12.2016 17:25

Re: COM-объект и Excel

[QUOTE=lilyapo;469920]Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка

похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?

Попробуй подключиться к открытому «ручками» экселю

Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна

Обучение программированию на 1С

Использование COM-соединения, выгрузка в Excel через COM-объект Excel.Application

Вообще COM-объекты используют для соединения информационной базы 1С с файлом Word, Excel, Outlook или любой другой программой, поддерживающей данный интерфейс обмена данными. В этой статье рассмотрим задачу выгрузки/загрузки данных из/в MS Excel. Чтобы это осуществить воспользуемся COM-соединением и объектом Excel.Application. Для примера возьмём задачу выгрузки/загрузки данных о номенклатуре. Пример рассмотрим ниже.

COM-соединение

Что же такое COM-соединение? Component Object Model (или COM) – это технология (фирмы Microsoft) взаимодействующих компонентов, которые одновременно могут быть использованы в разных приложениях. При этом весь функционал соответствующего компонента наследуется внутрь разрабатываемого приложения. В нашем случае COM-объект Excel.Application используется внутри кода 1С для операций с файлом книги MS Excel.

Объект Excel.Application

У объекта Excel.Application существует ряд методов, которые нам могут пригодиться для реализации нижепоставленной задачи:

  • ОбъектExcel.WorkBooks.Open(ИмяФайла) – Открытие книги MS Excel
  • ОбъектExcel.ActiveWorkbook.Close() – Закрытие текущей книги
  • ОбъектExcel.Quit() – Закрытие COM-объекта
  • ОбъектExcel.Sheets(ИмяЛиста) – Получает лист книги
  • ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец) – Ячейка таблицы на данном листе
  • ЛистExcel.Range(Ячейка1, Ячейка2) – Выделенная область
  • ЯчейкаExcel.Value – Значение ячейки таблицы
  • ЯчейкаExcel.Text – Текст ячейки таблицы

Постановка задачи

Итак, предположим, что в обработке 1С у нас имеется табличная часть, состоящая из следующих колонок:

Необходимо реализовать 2 функционала (сделать на форме 2 основные кнопки):

  1. Выгрузка табличной части в подготовленный файл MS Excel
  2. Загрузка табличной части из файла.

Алгоритм выгрузки/загрузки в MS Excel

Алгоритм выгрузки следующий:

  1. Выгружаем табличную часть в таблицу значений
  2. Создаём новый COM-объект Excel.Application
  3. Выбираем файл, открываем файл книги MS Excel
  4. Переходим на заданный лист книги
  5. Выгружаем данные в файл
  6. Закрываем книгу, выходим из COM-объекта.

Алгоритм загрузки следующий:

  1. Создаём новый COM-объект Excel.Application
  2. Выбираем файл, открываем файл книги MS Excel
  3. Переходим на заданный лист книги
  4. Загружаем данные из файла в таблицу значений
  5. Закрываем книгу, выходим из COM-объекта
  6. Таблицу значений выгружаем в табличную часть.

Операция выгрузки и загрузки данных о номенклатуре происходит в заранее подготовленный шаблон MS Excel.

Пример кода 1С

Код 1С я постарался разделить на отдельные функции, чтобы, скопировав, с ними можно было работать где угодно. На форме обработки 1С были созданы 3 кнопки:

В итоге в реализации алгоритма получились следующие основные процедуры и функции 1С:

  • ПолучитьExcel – Получает COM-объект MS Excel;
  • ЗакрытьExcel – Закрывает использование COM-объекта MS Excel;
  • ПолучитьЛистExcel – Получает лист книги Excel;
  • ДобавитьТабличныйДокументВExcel – Добавляет табличный документ на лист Excel (нужно для выгрузки данных);
  • ПрочитатьОбластьИзExcel – Читает область ячеек с листа Excel (нужно для загрузки данных);
  • ШиринаЛистаExcel – Ширина листа Excel;
  • ВысотаЛистаExcel – Высота листа Excel;
  • ПреобразоватьТДвТЗ – Преобразует табличный документ в таблицу значений;
  • ПреобразоватьТЗвТД – Преобразует таблицу значений в табличный документ;

Для начала приведу вспомогательную функцию для открытия/сохранения файла на диске:

Настройка DCOM для Excel.Application в 1С, за минуту

Настройка DCOM для Excel.Application в 1С, за минуту

Добрый день! Уважаемые читатели и гости, популярного IT блога pyatilistnik.org. Сегодня я продолжу пополнять свою копилку знаний в разделе 1С. Вчера меня один из разработчиков, попросил ему помочь настроить компоненты DCOM для Excel.Application в связке с приложением 1С. Я ранее этого не делал, так что пришлось в этом разбираться. По итогам найденного решения, появилась и эта заметка. Уверен, что на этот материал найдутся желающие.

Что такое DCOM

Distributed Component Object Model (DCOM) — программная архитектура, разработанная компанией Microsoft для распределения приложений между несколькими компьютерами в сети. Программный компонент на одной из машин может использовать DCOM для передачи сообщения (его называют удаленным вызовом процедуры) к компоненту на другой машине. DCOM автоматически устанавливает соединение, передает сообщение и возвращает ответ удаленного компонента. С данным компонентов мы уже знакомились, когда решали ошибку 10016.

Настройка DCOM для Excel.Application

И так у меня есть виртуальная машина под управлением Windows Server 2012 R2, на ней установлены серверные компоненты 1С, есть задача для Excel.Application модуля, настроить DCOM компоненты.

Нам необходимо открыть в панели управления Windows, компонент «Службы компонентов».

Либо можете, через окно выполнить ввести DCOMCNFG, откроется, тоже самое.

В службах компонентов (Component Services) откройте ветку:

Если по каким-то причинам у вас нет пункта Microsoft Excel Application, откройте реестр Windows, найдите ветку: HKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем ее. В ней должен быть ключ REG_SZ со значением .

КОМУ ЛЕНЬ самому создавать, то можете скачать данный ключ реестра у меня. Просто запустите потом и подтвердите, что согласны добавить. Затем откройте командную строку от имени администратора и выполните команду:

У вас откроется mmc оснастка «Службы компонентов», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты. В результате этих манипуляций компонент Microsoft Excel Application у вас должен появиться. Открываем свойства Microsoft Excel Application.

Переходим на вкладку «Безопасность (Secutity)». В пункте «Разрешения на запуск и активацию (Launch and Activation Permissions)», выберите «Настроить (Customize )» и изменить. Вам нужно добавить сюда учетную запись, от имени которой запускается служба 1С и предоставить ей права:

  • Локальный запуск — Local Launch
  • Локальная активация — Local Activation

Далее переходим к пункту «Разрешения на доступ (Access Permissions)» и так же меняем их. Добавьте там ту же учетную запись, от имени которой запускается сервис 1С, и дайте ей права «Локальный доступ (Local Access)». Сохраните настройки.

Закрываем окно служб компонентов, теперь для того, чтобы закончит ьнастройку DCOM для 1С и Microsoft Excel Application, вам необходимо дать права на две папки.

Вам нужно убедиться, что у вас есть две папки:

2147221005(0x800401F3): Недопустимая строка с указанием класса — что делать

При выполнении каких-либо задач с комплексом 1С (фоновый обмен данными между компонентами, запуске нужной конфигурации, проверки выполнения кода etc) может появиться сообщение об ошибке 2147221005(0x800401F3). Последняя обычно сопровождается строкой « Недопустимая строка с указанием класса » и связана с неверным кодом программы, не зарегистрированными в системе компонентами и другими релевантными факторами. Давайте разберёмся, что делать при появлении ошибки 2147221005(0x800401F3) в вашей 1С.

Суть и причины «Недопустимая строка с указанием класса»

Ошибка 2147221005(0x800401F3) относится к регулярно встречающимся ошибкам 1С, и фиксируется у многих пользователей. Единственного и эффективного рецепта её решения не существует, так как она может иметь уникальную основу, и вызывается особенностями программного кода в конкретной системе.

Тем не менее к числу наиболее популярных причин ошибки 2147221005 относятся следующие:

  • Пользователь использует устаревшую конфигурацию 1С . К примеру, фиксировались случаи появления ошибки 2147221005(0x800401F3) при использовании архаичной конфигурации «Управление торговлей» при попытке обмена данными с 1С «Бухгалтерия предприятия»;
  • Наличие некорректного кода программы (к примеру, обращение к устаревшему «V82.COMConnector» вместо модерного «V83.COMConnector»);
  • В системе не зарегистрирована библиотека comcntr.dll , имеющая важное значение для работы 1С;
  • У пользователя, запускающего определённый комплекс 1С, нет достаточных прав для работы с ним (к примеру, запуск выполняется из гостевой учётной записи, вместо учётки администратора);
  • В системе не установлен (не зарегистрирован) Excel , необходимый для работы 1С.

Давайте разберёмся, как исправить ошибку 2147221005 «Недопустимая строка с указанием класса» в вашей системе 1С.

Обновите вашу конфигурацию 1С до актуальной версии

Первым делом убедитесь, что вы используете самую свежую версию конфигурации 1С. При подключении к нужным базам для выполнения обмена она может попытаться использовать устаревшую платформу (к примеру, 8.2), которая фактически отсутствует. Потому обновите вашу версию конфигурации до актуального релиза, а потом попробуйте осуществить требуемое подключение.

Используйте свежую версию 1С

Запускайте 1С с правами админа

Убедитесь, что вы запускаете систему под учётной записью администратора, а не ограниченного в правах «Гостя» или аналога.

Измените код программы

В некоторых случаях код программы может устареть и не соответствовать текущей версии 1С. Эффективным решением ошибки 2147221005 является замена строки кода:

COMConnector = Новый COMObject(«V82.COMConnector»);

COMConnector = Новый COMObject(«V83.COMConnector»);

После указанной замены ошибка «Недопустимая строка с указанием класса» может быть решена.

Зарегистрируйте в системе библиотеку comcntr.dll

Если вы пользуетесь Виндовс 64, то необходимо провести корректную регистрацию в системе библиотеки comcntr.dll . Нажмите на Win+R, введите следующую строку:

C:WindowsSysWOW64regsvr32 «c:Program Files(x86)1cv88.3.12.1469bincomcntr.dll»

Вместо «8.3.12.1469» укажите установленную у вас версию технологической платформы. После этого нажмите на ввод. Указанная регистрация может помочь избавиться от ошибки 2147221005 в 1С.

Проверьте наличие установленного в системе Excel

Наличие установленного в системе Excel является необходимым элементом при обращении к нему системы 1С. Потому рекомендуем убедиться, что Эксель в системе установлен корректно, для чего нажмите Win+R, введите там Excel , и нажмите ввод. Если программа запустилась, тогда всё работает корректно. Если нет, тогда следует установить (переустановить) Excel (комплекс «MS Office») на вашей машине (машинах).

Используйте специализированные форумы 1С

Если не один из указанных советов вам не помог, обратитесь к помощи форумов, которые посещают множество программистов и специалистов 1С. В частности, рекомендуем такие форумы как forum.infostart.ru, cyberforum.ru/1c-standard, is.ideasoft.in.ua где вам могут помочь в решении возникшей дисфункции.

Заключение

В нашем материале мы разобрали, когда появляется ошибка «2147221005(0x800401F3): Недопустимая строка с указанием класса», и как можно её исправить. Данная дисфункция может иметь различные причины, а для её решения рекомендуем задействовать весь комплекс способов, перечисленным нами выше. Их выполнение может помочь устранить ошибку 2147221005 в вашей системе 1С.

ComObject Excel.Application без офисного пакета

Мне нужно прочитать файл Excel из Powershell.
Я использую этот объект:

Он прекрасно работает на машине с установкой Office, но если Office не установлен, я получаю эту ошибку:

Есть ли какая-то среда выполнения для Office, чтобы использовать ее?

3 Ответа

Там нет «runtime» для Excel, которые вы можете использовать без получения надлежащей лицензии для Excel (и установки Excel на машину). Если вы пытаетесь сделать это на сервере OS с несколькими пользователями, вам также нужно рассмотреть возможность специального лицензирования (поскольку одна лицензия Excel не будет охватывать несколько пользователей более чем вероятно).

Вы можете рассмотреть возможность использования OpenXML SDK для Office в качестве способа выполнения некоторых общих действий в файле Excel, как описано здесь . Поскольку это библиотека .NET, вы сможете использовать ее изнутри PowerShell.

Нет времени выполнения, как и доступа.

Там есть зритель, если это вам поможет.

Обзор

С помощью средства просмотра Excel можно открывать, просматривать и печатать книги Excel, даже если у вас не установлен Excel. Вы также можете скопировать данные из Excel Viewer в другую программу. Тем не менее, вы не можете редактировать данные, сохраните книгу или создайте новую книгу.

Вместо COM можно использовать активные X-объекты данных (ADO), например

Похожие вопросы:

Мне нужно закончить заявку в C#. Теперь я хочу получить функцию, которая управляет файлом Excel для получения данных. Я использовал getActiveObject(Excel.Application) , но это ничего не возвращает.

У меня есть набор документов, чтобы запросить, чтобы пользователь открыл версию только для чтения(опция рекомендуется только для чтения). Я хотел бы открыть документ excel без чтения только в.

Я ищу разъяснений относительно влияния New на объекты и сценарий. Я понимаю, что если мне нужно выполнить действия над документом excel и приложение закрыто, то я должен использовать новый.

Я пытался получить доступ к COM объектам всех экземпляров Excel 2010, зарегистрированных в ROT в Visual C# Express 2010. Я нашел код на.

Есть ли способ преобразовать .xls в .csv без установки Excel с помощью Powershell? У меня нет доступа к Excel на конкретной машине, поэтому я получаю ошибку при попытке: New-Object -ComObject.

У меня есть powershell скрипт, который использует -ComObject Word.Application. Я хотел бы использовать это в сервере windows, но у него нет Word. На данный момент , когда я выполняю, у меня есть эта.

У меня есть небольшой скрипт, который позволяет мне объединить несколько .csv к А.файлы XLSX: $path = C:UsersFrancescoMDesktopCSVResults* $csvs = Get-ChildItem $path -Include *.csv $y =.

Я столкнулся с проблемой на Powershell Excel ComObject, где я не могу принять разделитель, отличный от запятой , . Некоторые из внешних .Полученные файлы csv используют другой разделитель, например.

  1. 20.12.2016, 13:59


    #1

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию COM-объект и Excel

    Создаю COM-объект и пытаюсь открыть файл Excel:
    ex=Новый ComОбъект(«Excel.Application»);
    ex.WorkBooks.Open(Файл);
    Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?


  2. 20.12.2016, 15:25


    #2

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    Цитата Сообщение от lilyapo
    Посмотреть сообщение

    Создаю COM-объект и пытаюсь открыть файл Excel:
    ex=Новый ComОбъект(«Excel.Application»);
    ex.WorkBooks.Open(Файл);
    Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?

    Ты открываешь Апликайшон — а как ты это открываешь (интерактивно или же на сервере)? Опять же у тебя какой эксель (32-х разрядный или же 64-х разрядный) и в каком контексте пытаешься открыть (в 32-х разрядном клиенте или же на стороне 64-х разрядного сервера)?


  3. 20.12.2016, 15:55


    #3

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все очень просто.
    Файловая база.
    Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
    Никакого клиент-серверного режима нет.


  4. 20.12.2016, 16:31


    #4

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    А попробуй «завернуть» в Попытку

    Что выдаст?

    Попытка
    Excel = Новый COMОбъект(«Excel.Application»);
    Excel.WorkBooks.Open(ИмяФайла);
    Состояние(«Обработка файла Microsoft Excel…»);
    Исключение
    Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;


  5. 20.12.2016, 17:04


    #5

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все то же самое.
    Ошибка при вызове метода контекста (Open): Неизвестная ошибка
    ОписаниеОшибки()=»»


  6. 20.12.2016, 17:25


    #6

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    [QUOTE=lilyapo;469920]Все то же самое.
    Ошибка при вызове метода контекста (Open): Неизвестная ошибка

    похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?

    Попробуй подключиться к открытому «ручками» экселю

    Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна

    Excel = ПолучитьCOMОбъект(, «Excel.Application»);
    При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.


  7. Пользователь сказал cпасибо:


  8. 20.12.2016, 17:41


    #7

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все получилось!
    Спасибо огромное, фантастика!:dance:


  9. 13.09.2018, 12:20


    #8

    KrisLis вне форума


    Гость форума


    По умолчанию Re: COM-объект и Excel

    Цитата Сообщение от lilyapo
    Посмотреть сообщение

    Все получилось!
    Спасибо огромное, фантастика!:dance:

    Пожалуйста. расскажите, как решили проблему.
    Такая же ситуация на одном из компьютеров. Перепробовали все рекомендации из интернета. Ничего не помогает.


  10. 13.09.2018, 13:10


    #9

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Попробуй подключиться к открытому «ручками» экселю

    Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна

    Excel = ПолучитьCOMОбъект(, «Excel.Application»);
    При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
    Так я справилась с проблемой


10.07.2019

При загрузке из EXCEL в 1С методом MS ADODB.Connection столкнулся с некоторыми проблемами, которые попытался устранить в ниже приведенной статье.
Надеюсь, что статья поможет вам сократить время разработки.
Особая благодарность Андрею М. за публикацию //infostart.ru/public/163640/

В данной статье приведен функционал, с помощью которого в обработке
«Импорт из EXCEL (xls) в 1С»
производится считывание данных из файлов табличного типа *xls.

Есть множество статей на эту тему:

— Метод «MS ADO» (Чтение файлов xls, xlsx средствами Microsoft ADO): //infostart.ru/public/163640/
— Метод «MS EXCEL» (Чтение файлов xls, xlsx с картинками средствами Microsoft Office): //infostart.ru/public/163641/
— Метод «LO CALC» (Чтение файлов xls, xlsx, ods, sxc с картинками средствами LibreOffice): //infostart.ru/public/163642/
— Метод «NativeXLSX» (Чтение файлов xlsx с картинками средствами 1С. ПостроительDOM): //infostart.ru/public/300092/
— Метод «NativeXLSX». Предыдущий вариант (Чтение файлов xlsx средствами 1С. ЧтениеXML)://infostart.ru/public/225624/
— Метод «Excel1C» (Загрузка на платформе 8.3.6 с картинками. Чтение файлов xls, xlsx, ods): //infostart.ru/public/341855/
— Список листов файла: //infostart.ru/public/163724/

Но всегда возникают какие-то проблемы:

При загрузке из EXCEL в 1С методом MS ADODB.Connection столкнулся со следующим:

  • пользователь выделил цветом всю таблицу Excel, что привело к считыванию всего листа книги.  

  • EOF() оказался гораздо дальше чем реально пользователь видел при визуальном осмотре таблицы Excel, т. е. загружались пустые строки

  • необходимо было очищать таблицу от строк  с наименованиями колонок

Это моя первая публикация. Буду рад вашим исправлениям и комментариям. P.S. Код написан только для расширения .xls. 

&НаКлиенте
Процедура ЗагрузитьExcel(Команда)

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.Фильтр = "|*.xls";
Диалог.МножественныйВыбор = Ложь;

Если Диалог.Выбрать() Тогда

Адрес = "";
ПоместитьФайл(Адрес,Диалог.ПолноеИмяФайла,,Ложь);
ЗагрузитьНаСервере(Адрес);

КонецЕсли;

КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗагрузитьНаСервере(Адрес)

ТЗ = ЗагрузитьТаблицуExcelНаСервере(Адрес);
//далее код работы с ТЗ ....

КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗагрузитьТаблицуExcelНаСервере(Адрес)

ФайлИзХранилища =  ПолучитьИзВременногоХранилища(Адрес);
ВременныйФайл = ПолучитьИмяВременногоФайла("xls");
//Сохранение во временнный файл на диске
ФайлИзХранилища.Записать(ВременныйФайл);
//Если опущен, тогда 1-й лист
еБаза=Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "
|Provider=Microsoft.Jet.OLEDB.4.0;
|Data Source="+ВременныйФайл+";
|Extended Properties=""Excel 8.0;IMEX=1;HDR=NO;"";";

Попытка
еБаза.Open(СтрокаПодключения);
Исключение

СтрокаПодключения = "
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source="+ПутьКФайлу+";
|Extended Properties=""Excel 12.0;IMEX=1;HDR="+?(HDR,"Yes","No")+";"";";

Попытка
еБаза.Open(СтрокаПодключения);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

КонецПопытки;

Catalog = Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = еБаза;
лСпис=Новый СписокЗначений;
лИмяЛиста="";

Для iCount = 0 По Catalog.Tables.Count-1 Цикл
Если Catalog.Tables.Item(iCount).Type <> "VIEW" Тогда
лСпис.Добавить(Catalog.Tables.Item(iCount).Name);
КонецЕсли;
КонецЦикла;

Если лСпис.Количество()>0 И лИмяЛиста="" тогда
лИмяЛиста = лСпис[0];
Конецесли;


Catalog=Неопределено;
лСтрВнЗапроса="select * from ["+лИмяЛиста+"]";

RS = Новый  COMОбъект("ADODB.Recordset");

rs.Open(лСтрВнЗапроса,еБаза,0);

лТз=Новый ТаблицаЗначений;

ЕстьОшибкиВИмениКолонки=Ложь;

Для iCount = 0 По rs.Fields.Count-1 Цикл

Если СокрЛП(rs.Fields.Item(iCount).Value) = "" Тогда //прервём на пустой ячейке имени колонки
Прервать;
КонецЕсли;

Попытка
лТз.Колонки.Добавить(rs.Fields.Item(iCount).Value,, rs.Fields.Item(iCount).Name); // Считаем что в первой строке заголовки колонок
Исключение
Сообщить(ОписаниеОшибки()+" «"+(rs.Fields(iCount).Value)+"»");
ЕстьОшибкиВИмениКолонки = Истина;
КонецПопытки;

КонецЦикла;

Если ЕстьОшибкиВИмениКолонки Тогда //прерываем, чтобы исправили
Возврат лТз;
КонецЕсли;

// Перебор данных
Строк=0;
rs.MoveFirst();

//пользователь выделил цветом весь лист Excel, в том числе и пустые ячейки
//добавим переменную для счета количества пустых ячеек,
//как только будет 10 пустых ячеек, считаем, что уже закончились строки в таблице

СчПустых = 0;
ПустыеСтроки = 0;

Пока rs.EOF() = 0 Цикл

СчПустых = 0;
Строк=Строк+1;
//как только будет 10 пустых ячеек, считаем, что уже закончились строки в таблице
Если ПустыеСтроки = 10 Тогда
Прервать;
КонецЕсли;

лТз.Добавить();

Для iCount = 0 По rs.Fields.Count-1 Цикл

Если СчПустых = 3 Тогда //подряд три пустых ячейки, прервём
СчПустых = 0;//уменьшим
ПустыеСтроки = ПустыеСтроки+1;
//Если три первые ячейки строки пустые, то удаляем строку
Если лТз[лтз.Количество()-1][0]=Неопределено И лТз[лтз.Количество()-1][0] = лТз[лтз.Количество()-1][1] И лТз[лтз.Количество()-1][1] = лТз[лтз.Количество()-1][2] Тогда
лТз.Удалить(лТз[лтз.Количество()-1]);
КонецЕсли;
Прервать;
КонецЕсли;

Если Строка(rs.Fields(iCount).Value) = "" Тогда
СчПустых = СчПустых+1;
Продолжить;
КонецЕсли;

Попытка
лТз[лтз.Количество()-1][iCount]=Строка(rs.Fields(iCount).Value);
ПустыеСтроки = 0;
Исключение
Прервать;
КонецПопытки;
КонецЦикла;
rs.MoveNext();
КонецЦикла;
rs=Неопределено;
еБаза.Close();
еБаза=Неопределено;
УдалитьИзВременногоХранилища(Адрес);
//Удалим первую строку с наименованием колонок
Если лТз[0][0] = лТз.Колонки[0].Имя Тогда
лТз.Удалить(лТз[0]);
КонецЕсли;

Возврат лТз;

КонецФункции

Понравилась статья? Поделить с друзьями:
  • Ошибка при открытии файла word ошибка при направлении команды приложению
  • Ошибка при открытии файла word макросы
  • Ошибка при открытии файла word конвертер
  • Ошибка при открытии файла word восклицательный знак
  • Ошибка при открытии файла word 2003