Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка работы с EPF, если в клиент-сервере есть доступ к EPF? #628

Closed
GenVP opened this issue Jan 15, 2020 · 5 comments
Labels
bug Something isn't working

Comments

@GenVP
Copy link
Contributor

GenVP commented Jan 15, 2020

Дано
VA 1.2.029
Клиент и сервер 1С на одной машине. У пользователя сервера 1С нет доступа к файлам тестов.
После генерации обработок фич и выполнение тестов выдается ошибка о невозможности подключения обработок фич.

Проверил в отладчике - падает в форме VA в "ПолучитьОбработкуИзФайлаЧерезМетодСоздать" из-за ошибки доступа к файлу обработки фичи на чтение при попытке создания обработки из файла на сервере.
Это из-за того, что проверка контекста подключения выполняется через Файл.Существует(). А в этом случае будет истина даже, если у пользователя сервера 1С нет доступа на чтение.

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

Возврат Обработка; 

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

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jan 15, 2020

@GenVP
Это интересная ситуация.
Когда сервер на том же компе - специально включена оптимизация, чтобы быстрее подключить обработки.
Получается сервер файл видит, но не может прочитать.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jan 15, 2020

@GenVP
А почему не обернуть в попытку строку

Обработка = ВнешниеОбработки.Создать(ДополнительныеПараметры.ИмяФайла, Ложь);

?

@GenVP
Copy link
Contributor Author

GenVP commented Jan 15, 2020

@Pr-Mex
Да, по-молчанию 1С создает пользователя сервера 1С без доступа на чтение к папкам. Но видеть он их может. В принципе, такая ошибка также может возникнуть, если файл обработки будет в сетевой папке к которой нет доступа на чтение под пользователем сервера, но есть под пользователем клиента.

Не стал заключать в попытку внешнюю обработку, так как в этом случае будет попытка создания файла на сервере и выход без ошибке при неудаче. Он может, например, быть заблокирован. Я же хотел исключить только ошибку доступа на чтение. Но, как говорится, можно и так ) Будет не зависеть от платформы.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Jan 15, 2020

@GenVP
Если файл заблокирован, то нам наверное всё равно, т.к. всё равно не можем его прочитать напрямую и надо подключать epf длинным путём.

@Pr-Mex
Copy link
Owner

Pr-Mex commented Mar 8, 2020

Решено.

@Pr-Mex Pr-Mex closed this as completed Mar 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants