импорт эксель файла в 1С

1. raisk007 10.06.21 14:38 Сейчас в теме
Перешли из файловой БД в MSSQL
При импорте эксель файла (карточки сотрудника) выходит ошибка
Значение не является значением объектного типа (Close)
Поставщик утверждает что проблема в доступе где расположен файл для импорта.
Пользователям был предоставлен полный доступ к папке но ошибка та же сохранилась
Прикрепленные файлы:
Ошибка_20210608172559.zip
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. user856012 14 10.06.21 15:01 Сейчас в теме
(1)
Перешли из файловой БД в MSSQL
То есть, на клиент-серверный режим. A Excel на сервере установлен?
user1278383; +1 Ответить
8. raisk007 10.06.21 16:36 Сейчас в теме
2. VmvLer 10.06.21 14:50 Сейчас в теме
попробуйте загрузить полноправным пользователем.
если ошибка есть, значит суть неполадки все-таки в правах ОС,
либо в коде 1С (обнулили сом-объект перед клоус)
3. raisk007 10.06.21 14:58 Сейчас в теме
(2)полноправным пользователем это Администратор 1С?
4. raisk007 10.06.21 15:01 Сейчас в теме
(3сами службы запущены под администратором сервера. Пользователю (кадровику) предоставлен доступ на шару full control, 1С клиент и сервер 1С расположены на разных машинах
6. VmvLer 10.06.21 15:02 Сейчас в теме
(3) пользователь 1С с ролью "ПолныеПрава"
7. bmk74 240 10.06.21 16:00 Сейчас в теме
Судя по тому что ошибка в закрытии exel, то тут навряд ли с правами что то, иначе бы у вас ошибку выдало на создание com объекта, или чтение файла, а тут Excel.ActiveWorkbook.Close()..обычно это вызывается уже после чтения и обработки...
Обработку если выложите можно точнее сказать будет
user856012; +1 Ответить
9. user856012 14 10.06.21 18:10 Сейчас в теме
(7)
Excel.ActiveWorkbook.Close()..обычно это вызывается уже после чтения и обработки...
Может быть, там открытие и чтение обернуты в Попытка...Исключение, а Close() - как раз в исключении.
Обработку если выложите можно точнее сказать будет
Вот с этим трудно не согласиться. Хотя бы кусок кода, в котором происходит открытие и чтение файла увидеть.
10. uriy 3 10.06.21 20:48 Сейчас в теме
Попробуйте переменгые среды в виндовс 10 другие прописать а не temp
11. Dr.HiHi 2 10.06.21 21:19 Сейчас в теме
загрузка выполняется непосредствено пользователем или в фоновом задании??

предполагаю, что стоит отдельный sql сервер, где крутится база
процедура загрузки выполняется на сервере, а путь прописан с клиентской машины
в итоге на сервере, по этому пути ничего нету
нужно переписать обработку, чтобы при выполнении файл помещался во временное хранилище и потом на стороне сервера доставался из временного хранилища и загружался
12. raisk007 11.06.21 05:34 Сейчас в теме
Все что есть((((
Прикрепленные файлы:
13. jmw 61 11.06.21 05:55 Сейчас в теме
Зачем вообще использовать OLE?
1С уже давно умеет сама читать Экселевские файлы:

табДок = Новый ТабличныйДокумент;
табДок.Прочитать(имяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);

Или даже сразу в таблицу значений:

табДок = Новый ТабличныйДокумент;
табДок .Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);

ПЗ = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(табДок .Область());
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();

ТаблицаЗначений = ПЗ.Результат.Выгрузить();
Показать
14. jmw 61 11.06.21 05:56 Сейчас в теме
Если „Прочитать“ обернуть в попытку, то ошибка быстро локализуется.
15. jmw 61 11.06.21 05:59 Сейчас в теме
(12) А у вас вообще странные попытки: открытие в одной, но не прерываемся, а идём во вторую попытку и пытаемся её отработать. Где снова не прерываемся, а идём дальше по коду…
Т.е. обработали первую ошибку, но не сделали ни чего, чтобы прервать дальнейший код.
16. jmw 61 11.06.21 06:14 Сейчас в теме
И да!
В (13) забыл показать как работать с многостраничным документом.
Вот так:
табДок = Новый ТабличныйДокумент;
табДок.Прочитать(имяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);

Для Каждого ОбластьТД ИЗ табДок.Области Цикл
	Сообщить(ОбластьТД.Имя);
	
	табЛист = табДок.ПолучитьОбласть(ОбластьТД.Имя);
	
	Сообщить( "Строк: " + табЛист.ПолучитьРазмерОбластиДанныхПоВертикали() );
	Сообщить( "Колонок: " + табЛист.ПолучитьРазмерОбластиДанныхПоГоризонтали() );
	
КонецЦикла;
Показать
Оставьте свое сообщение

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