Добрый день всем! Помогите решить проблему, описанную ниже.

В локальной сети есть портал на сервере с общими офисными файлами (Word и Excel), поднятый на MS SharePoint.

Необходимо из 1C программно открыть нужный Excel файл, заполнить его некоторыми данными из 1С и записать.

Права на редактирование файла контролируются MS SharePoint. Если с клиента Excel открыть любой файл, сверху появится сообщение "Мы открыли эту книгу с сервера в режиме только для чтения". Рядом находится кнопка "Редактировать книгу". При нажатии на эту кнопку проверяется право доступа к каталогу. Если прав нет, то выходит сообщение из разряда "Отказано в доступе". Если права есть, книга переходит в режим редактирования.

Файл лежит по следующему пути: (Локальная сеть) http://portal/Shared Documents/ФайлExcel.xlsx

Если я копирую этот файл в буфер и вставляю его на рабочий стол, файл как программным путём, так и с помощью клиента Excel редактируется без проблем, сообщение "Мы открыли эту книгу с сервера в режиме только для чтения" не появляется.

Если я через COM-объект открываю этот файл по пути http://portal/Shared Documents/ФайлExcel.xlsx, свойство COM-объекта ReadOnly выставлено, как "Истина".

Открытие книги с третьим параметром ReadOnly=false (Книга = Excel.WorkBooks.Open(ПутьКФайлу,ReadOnly=False) не переводит свойство ReadOnly в ложь.

Если воспользоваться методом Книга.ChangeFileAccess(2), где 2 - ReadWrite, а 4 - ReadOnly, COM-объект теряется и принимает значение "Неопределено". В описании синтаксиса метода на сайте Microsoft написано: "Если вы измените файл с "только для чтения" на "чтение и запись", Microsoft Excel должен загрузить новую копию файла, чтобы убедиться, что при открытии файла в режиме "только для чтения" не было внесено никаких изменений." Думаю именно поэтому Книга переводит значение в "Неопределено" и связь с объектом нужной книги теряется.

Какие есть пути программной перезаписи нужного файла в каталоге портала? Прошу помочь. Спасибо!

Код на получение книги программным путем:

```1c
    ПутьКФайлу = "\\portal\Shared Documents\ExcelFile.xlsx";
    Excel = СоздатьCOMОбъектExcel();
    Книга = Excel.WorkBooks.Open(ПутьКФайлу,,ReadOnly=False);
```
---
Решение найдено!

В MS Excel до 2010 года при создании COM-объекта файла, проверка прав на редактирование осуществляется мгновенно, т.е. после получения COM-объекта мы уже имеем свойств ReadOnly или True или False.

В MS Excel после 2010 года при создании COM-объекта файла значение ReadOnly постоянно установлено в значении True вне зависимости от того есть права на редактирование или нет. Чтобы проверить права на редактирование необходимо использовать следующий метод книги: Книга.LockServerFile().

После использования данного метода свойство ReadOnly встанет в True или False в зависимости от прав пользователя, настроенных в SharePoint.

Еще раз повторюсь, метод LockServerFile() не нужен, если вы получаете COM-объект экселя редации до 2010 года.
---
почему в одном случае путь к файлу по протоколу http, а в другом - по smb?

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

В локальной сети есть портал на сервере с общими офисными файлами (Word и Excel), поднятый на MS SharePoint.

Необходимо из 1C программно открыть нужный Excel файл, заполнить его некоторыми данными из 1С и записать.

Права на редактирование файла контролируются MS SharePoint. Если с клиента Excel открыть любой файл, сверху появится сообщение "Мы открыли эту книгу с сервера в режиме только для чтения". Рядом находится кнопка "Редактировать книгу". При нажатии на эту кнопку проверяется право доступа к каталогу. Если прав нет, то выходит сообщение из разряда "Отказано в доступе". Если права есть, книга переходит в режим редактирования.

Файл лежит по следующему пути: (Локальная сеть) http://portal/Shared Documents/ФайлExcel.xlsx

Если я копирую этот файл в буфер и вставляю его на рабочий стол, файл как программным путём, так и с помощью клиента Excel редактируется без проблем, сообщение "Мы открыли эту книгу с сервера в режиме только для чтения" не появляется.

Если я через COM-объект открываю этот файл по пути http://portal/Shared Documents/ФайлExcel.xlsx, свойство COM-объекта ReadOnly выставлено, как "Истина".

Открытие книги с третьим параметром ReadOnly=false (Книга = Excel.WorkBooks.Open(ПутьКФайлу,ReadOnly=False) не переводит свойство ReadOnly в ложь.

Если воспользоваться методом Книга.ChangeFileAccess(2), где 2 - ReadWrite, а 4 - ReadOnly, COM-объект теряется и принимает значение "Неопределено". В описании синтаксиса метода на сайте Microsoft написано: "Если вы измените файл с "только для чтения" на "чтение и запись", Microsoft Excel должен загрузить новую копию файла, чтобы убедиться, что при открытии файла в режиме "только для чтения" не было внесено никаких изменений." Думаю именно поэтому Книга переводит значение в "Неопределено" и связь с объектом нужной книги теряется.

Какие есть пути программной перезаписи нужного файла в каталоге портала? Прошу помочь. Спасибо!

Код на получение книги программным путем:

```1c
    ПутьКФайлу = "\\portal\Shared Documents\ExcelFile.xlsx";
    Excel = СоздатьCOMОбъектExcel();
    Книга = Excel.WorkBooks.Open(ПутьКФайлу,,ReadOnly=False);
```
---
Решение найдено!

В MS Excel до 2010 года при создании COM-объекта файла, проверка прав на редактирование осуществляется мгновенно, т.е. после получения COM-объекта мы уже имеем свойств ReadOnly или True или False.

В MS Excel после 2010 года при создании COM-объекта файла значение ReadOnly постоянно установлено в значении True вне зависимости от того есть права на редактирование или нет. Чтобы проверить права на редактирование необходимо использовать следующий метод книги: Книга.LockServerFile().

После использования данного метода свойство ReadOnly встанет в True или False в зависимости от прав пользователя, настроенных в SharePoint.

Еще раз повторюсь, метод LockServerFile() не нужен, если вы получаете COM-объект экселя редации до 2010 года.
---
Добрый день! Не получается использовать этот метод. Можете пример показать?