При попытке адаптации обработки по загрузки данных из Excel выходит ошибка:
Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ...
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
При этом соm отрабатывает, но файл не читается.
Тот же самый модуль в обычном приложении отрабатывает без проблем.
Это из-за серверного варианта работы? Как данный вопрос можно исправить?
Метот добавления папки C:\Windows\System32\config\systemprofile\Desktop не помог(((
---
Про клиент-сервер, Вам правильно написали выше. От себя замечу, что для вашей задачи эксель собственно и не нужен. Грубый код (что непонятно спрашивайте)

```1c
    Процедура АнализФайла()
    // Читаем файл и преобразуем его в табличный документ
    Попытка
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(Объект.ПутьКФайлу);
    // Отправляем таб. док на разбор
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ТочкаВремени");
    ТЗ.Колонки.Добавить("Сотрудник");
    ТЗ.Колонки.Добавить("verified");
    ТЗ.Колонки.Добавить("ТочкаПрохода");
    ТЗ.Колонки.Добавить("Статус");
    Сч = 1; // Заголовок в файле есть, пойдем сто второй строки.
    Пока НЕ Сч = ТабДок.ВысотаТаблицы цикл
    Сч = (Сч+1);
    НС = ТЗ.Добавить();
    НС.ТочкаВремени = ТабДок.ПолучитьОбласть(Сч,1,Сч,1).ТекущаяОбласть.Текст;
    НС.Сотрудник = ТабДок.ПолучитьОбласть(Сч,2,Сч,2).ТекущаяОбласть.Текст;
    КонецЦикла;
    Исключение
    Сообщить("Неудалось прочитать файл: " + ОписаниеОшибки());
    КонецПопытки;
    КонецПроцедуры
```
---
```1c
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(Объект.ПутьКФайлу);
```

Поясню, ПутьКФайлу - содержит полный путь к файлу НА СЕРВЕРЕ т.к. процедура с этими методами должна быть серверной. Как работать с клиентом и сервером в двух словах не описать. Суть в том, что надо забрать файл с клиента (с ПК пользователя) и поместить его на сервер (туда где "крутится" 1с). Прилагаю два внешних модуля, которые сам писал и использую во всех своих конфигурациях для работы с файловой системой. Один модуль серверный, второй клиент. Какой-какой из названий понятно. Там все грубо, писалось под себя, но думаю разберетесь.
---
Тот же самый модуль в обычном приложении отрабатывает без проблем. тут несколько вариантом, в УФ заполняется эксель на клиенте или на сервер? скорее всего нет доступа к папке, укажите сетевую, должно помочь. опять же если на сервере заполняется файл, стоит ли на самом сервере офис?
---
если ставлю серверную папку, выходит сообщение:
Приложения, позволяющие открыть ссылки данного типа не установлены.

На самом сервере офис есть, файлы открываю, но видимо какая-то проблема с самим офисом?
---
Передать с клиента на сервер этот файл и тогда на сервере откроется.
---
Можно более подробно, не совсем поняла, что значит передать файл на сервер?
На текущий момент на процедура на сервере содержит код:
  //Пытаемся подключиться к Excel
 Попытка
  Excel = новый COMОбъект("Excel.Application");
 Исключение
  Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
  Возврат;
 КонецПопытки;

 //Подключились удачно, открываем файл
 Excel.Workbooks.Open(ИмяФайла);
---
архитектура sql или файловая база?
---
sql
---
ну значит у вас две проблемы
1. Файл должен быть доступен с кластера 1С, в том числе по правам доступа службы под которой запущен агент сервера
2. На сервере должен быть установлен Word и зарегистрирован COM (обычно автоматом регистрируется при установке), но возможны еще проблемы с разрядностью

а вообще если у вас только чтение файла, без записи, лучший вариант сделать как в (5) будет быстрее читать и не требует офиса
---
Про клиент-сервер, Вам правильно написали выше. От себя замечу, что для вашей задачи эксель собственно и не нужен. Грубый код (что непонятно спрашивайте)

```1c
    Процедура АнализФайла()
    // Читаем файл и преобразуем его в табличный документ
    Попытка
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(Объект.ПутьКФайлу);
    // Отправляем таб. док на разбор
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ТочкаВремени");
    ТЗ.Колонки.Добавить("Сотрудник");
    ТЗ.Колонки.Добавить("verified");
    ТЗ.Колонки.Добавить("ТочкаПрохода");
    ТЗ.Колонки.Добавить("Статус");
    Сч = 1; // Заголовок в файле есть, пойдем сто второй строки.
    Пока НЕ Сч = ТабДок.ВысотаТаблицы цикл
    Сч = (Сч+1);
    НС = ТЗ.Добавить();
    НС.ТочкаВремени = ТабДок.ПолучитьОбласть(Сч,1,Сч,1).ТекущаяОбласть.Текст;
    НС.Сотрудник = ТабДок.ПолучитьОбласть(Сч,2,Сч,2).ТекущаяОбласть.Текст;
    КонецЦикла;
    Исключение
    Сообщить("Неудалось прочитать файл: " + ОписаниеОшибки());
    КонецПопытки;
    КонецПроцедуры
```
---
пользователю данные приходят в Ex, соответственно прочитать и записать данные мне нужно из него. Как используя табличный документ открыть данный файл и получить из него данные, программно?
---
```1c
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(Объект.ПутьКФайлу);
```

Поясню, ПутьКФайлу - содержит полный путь к файлу НА СЕРВЕРЕ т.к. процедура с этими методами должна быть серверной. Как работать с клиентом и сервером в двух словах не описать. Суть в том, что надо забрать файл с клиента (с ПК пользователя) и поместить его на сервер (туда где "крутится" 1с). Прилагаю два внешних модуля, которые сам писал и использую во всех своих конфигурациях для работы с файловой системой. Один модуль серверный, второй клиент. Какой-какой из названий понятно. Там все грубо, писалось под себя, но думаю разберетесь.
---
да переписала код на табличный документ, все работает и без игры с передачей с сервера на клиент))) Спасибо!
---
Не за что. Но есть нюанс. Если все работает без переноса между клиентом и сервером, это значит, что клиент и сервер на одной машине. Вы уверены, что всегда так будет?
---
нет, не уверена... сейчас еще посмотрб разные ситацию)
---
смотрите, чтобы было понятно. Клиент - это тот компьютер, с которого запущен сеанс работы с 1с. Сервер - это тот компьютер где запущена платформа. Если совсем наглядно.

1. Файловая база на ПК. Клиент и сервер в одном месте. Не важно в какую процедур (серверную или клиентскую) путь к файлу передается, он будет одним и тем же.

2. Сервер 1с-предприятия, к нему подключается клиент с другого ПК. Получается клиент одно, а сервер другое. Пользователь указал путь к файлу на своем ПК (C:\share\fail.doc) - это локальный путь. В клиентских процедурах он правильный, т.к. они выполняется на клиенте т.е. на ПК пользователя и там этот путь правильный и корректный. Но если вы передадите этот путь в серверную процедуру, то получите ошибку т.к. файл будет искаться не на компьютере пользователя. а на сервере (там где служба сервера работает) и там он найден естественно не будет.

Поэтому универсальных вариантов два:

1. Перемещать файл на сервер.
2. Использовать сетевые пути. доступные и с клиента и с сервера.

Архитектурно правильный первый вариант.
---
в принципе суть я поняла, но пока не совсем догоняю как это программно реализовать, т.е. тот текст я посмотрела, что во вложении был, там получается что мы файл который указал пользователь записываем программно на сервер и далее используем путь к нему?
---
В общих чертах да. проблема в том. что просто скопировать файл с клиента на сервер нельзя. Схема следующая:

1. На стороне клиента файл помещается во временное хранилище.

2. На стороне сервера он от туда извлекается и записывается с каким-то локальным путем на сервере. Этот самый путь используется в серверных процедурах по работе с данным файлом.
---
Спасибо, попробую все же первый вариант с работой файла на сервере, что бы пока не заморачиваться с перезаписью)))
---
Ну как гласит сисадминская мудрость: работает - не лезь. Если всё устраивает в данном варианте. зачем что-то трогать) Успехов, коллега!
---
Спасибо ;)
---
Перемещать файл на серверЭто вообще единственно правильный вариант.
Любой сбой в сети - и цепочка поломалась, а в 1С это вообще критично, с их отсутствием обратной связи и контроля исполнения.
---
Отдельная благодарность за такой бонус :)
---
варианта два:
1 - Программно открывать файл на клиенте, передавать на сервер в виде потока двоичных данных, и обрабатывать на севере
2 - Пользователю копировать файл в сетевой каталог, в том числе доступный с сервера SQL
---
второй вариант соответственно более простой с точки зрения кода
---
Ну и не сочтите за спам, немного процитирую СП:
---
Ком соединение, разрядность ОС, разрядность ПО, компоненты, Доступы к папкам и файлам, монопольный режим и в управляемом приложении открывать/читать через клиент
---
это лучшее сообщение в данный ветке.
---
Прописал и сохранение файлов чтоб с сервера читало, однако сообщение ни куда не ушло. А нужно именно эксель открывать, а не встроенной приблудой 1с, которая глючит, если пользователь файл xslx в xls переименовал. А эксель, вполне такое хавает.

Нашел решение, (https://www.azhur-c.ru/arhiv_errors1c.html?id=133)
нужно создать папки desktop на сервере.
Т.к. Эксель не умеет по нормальному работать в серверном режиме.
---
Мне вот это помогло:
Решение вопроса: Для решения этой пробемы нужно создать следующие каталоги: C:\Windows\SysWOW64\config\systemprofile\Desktop или C:\Windows\System32\config\systemprofile\Desktop и выдать права на запись пользователю "Система" Источник: https://fort.crimea.com/support/7911-proizoshla-isklyuchitelnaya-situaciya-microsoft-excel.html