Имя: Пароль:
1C
 
XBase: ошибка открытия файла из сети
0 an4xu
 
20.05.16
06:42
Добрый день.
Платформа (8.3.8.1652)
Управляемые формы

Код:
&НаСервере
Процедура Загрузить()
  БД = Новый XBase();
  БД.ОткрытьФайл(Путь);
  БД.Первая();
  ...
КонецПроцедуры

С недавнего времени при открытии файла, расположенного на другой машине (например \\fileserver\Загрузка\123.dbf) выдает ошибку:

Ошибка при вызове метода контекста (Первая)
    БД.Первая();
по причине:
Перед выполнением операции нужно открыть базу

Код ошибки 70: Ошибка чтения файла;



1) В проводнике по данному пути файл открывается.
2) Антивирусы отключал
3) Фаерволы отключал
4) Если расположить файл локально на сервере 1С Предприятия и указать путь, скажем "Е:\123.dbf" то все работает
5) Если подключить сетевую папку как диск(например X: и путь будет X:\123.dbf), то НЕ работает

Уже не знаю куда копать
1 SiAl-chel
 
20.05.16
07:00
(0) Перед позиционирование на первую строку в цикле со счетчиком, до 10 хотя бы, проверяй, что база открыта. Не помню как в восьмерке, а в семерке было что-то вроде Открыта(). Если не открыта, то пробуй открывать, а если все попытки неудачны, то ругайся на юзера через монитор.
2 an4xu
 
20.05.16
07:18
Вы имеете ввиду так? Попробовал, не помогло =(

  БД.ОткрытьФайл(Путь);
    Если НЕ БД.Открыта() Тогда
      Для инд = 1 По 1000 Цикл
        Если БД.Открыта() Тогда
          Прервать;
        КонецЕсли;
        БД.ОткрытьФайл(Путь);
      КонецЦикла;
    Иначе
      БД.Первая();
      ...
    КонецЕсли;
3 an4xu
 
20.05.16
07:22
Просто раньше то работало, а через некоторое перестало.
А за это время изменились две вещи:
1) обновились с 8.3.6.2152 до 8.3.8.1652
2) накатили 100500 обновлений на сервера

И вот теперь не понятно что повлияло на такое поведение.

Вообще есть у кого возможность проверить на 8.3.8.1652 работает мой код в аналогичной ситуации или нет?
4 4St
 
20.05.16
07:36
(3) Я бы для начала проверил, имеет ли пользователь, под которым запущен сервер 1С, доступ к этому файлу.
>>Если подключить сетевую папку как диск(например X: и путь будет X:\123.dbf), то НЕ работает
Возможно, у этого пользователя не смонтировался диск X:.
Короче, самый железобетонный способ - перед
  БД.ОткрытьФайл(Путь);
вставить что-то вроде
СкопироватьФайл(Путь,ПолучитьИмяВременногоФайла());
И посмотреть результат.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.