всем привет, может быть встречались и знаете в чём причина если 1С 8.2, конфигурация УТ, база которой крутиться на postgres, который соответственно развернуть под ОС Debian 7 проблема в следующем - не открывается объект DBF, если к нему обращаться с директивой компиляции наСервере, а вот если с директивой компиляции наКлиенте, то всё ок. В чем может быть причина и как обойти такую штуку.
---
veluga,
не важно, где лежит он в сетевой шаре.
временное хранилище все равно потом уничтожается и не висит нигде.
а сетевая шара будет открываться дольше, да и опять же с правами доступа могут
быть свои заморочки. А так - во временное хранилище передал, потом сервер файл себе извлек
в темповые файлы, обработал. далее уже делайте, что хотите
Да и интернеты дают мне повод думать, что это лучший выход

это вообще типично Ваш случай
v8: 8.2. Как передать файл DBF на сервер для обработки?

это примеры
v8: 8.2 Передать файл с клиента на сервер
Получение XML файла с клиента на сервере
Открытие, перемещение и загрузка файла

Самое важное - это работает
---
pipo522, функция открытьфайл не работает чтоли?
---
tolyan_ekb, обработка на сервере с директивой компиляции не может открыть DBF, вылетает с ошибкой при обращении к ней
---
pipo522,
Сервер просто не видит твой локальный файл
при серверной работе с файлами, используй временное хранилище:

```1c
    &НаКлиенте
    Процедура ВыбратьФайлСДискаИЗагрузить()
    АдресаВременногоХранилища = Новый Массив;
    Для Каждого ВыбранныйФайл Из МассивФайлов Цикл
    Попытка
    АдресВременногоХранилища = ";
    ПоместитьФайл(АдресВременногоХранилища, ВыбранныйФайл,, Ложь, ЭтаФорма.УникальныйИдентификатор);
    АдресаВременногоХранилища.Добавить(АдресВременногоХранилища);
    Исключение
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Ошибка загрузки файла(ов): " + ОписаниеОшибки(),,,, Отказ);
    Отказ = Истина;
    КонецПопытки;
    КонецЦикла;

    КонецПроцедуры
```

 а этот код выполняешь на сервере для получения файла, естественно, передаешь на сервер
адрес временного хранилища. сам намучился с этой ситуацией))

```1c
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
    ИмяФайла = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные.Записать(ИмяФайла);

    УдалитьИзВременногоХранилища(АдресВременногоХранилища);
```

Внимательно прочти описание методов ПоместитьФайл() и ПолучитьИзВременногоХранилища()
---
приведите что ли код и описание ошибки
---
Вы же обработку запускаете в режиме клиента Правильно?
---
да, обработку запуская в режиме клиента
ошибка - перед выполнением операции необходимо открыть базу данных - на строке (дбф.Следующий)

именно - не работает функция Открыть с директивой компиляции на сервере, с директивой компиляции на клиенте всё ок! С файловой базой таких проблем не возникало
---
вознаграждение забыл
---
Ошибка следующая:

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

Тот же самый код с директивой компиляции на клиенте выполняется без проблем
---
veluga, то что я и справшивал в (2). Отладчиком пройдитесь. Файл не открыт скорее всего.
---
tolyan_ekb, в том то и трабл - что отладчик даже по точке останова не останавливается, которая в самой начале процедуры, ещё даже до обращения к дбф, а сразу вываливается с ошибкой что файл не открыт.
С директивой компеляции на сервере файл почему то не открывается (лежит от в сетевой шаре) - в этом то и вопрос - почему? и что сделать что бы открылся?
---
veluga, отладчик не останавливается потому что скорее всего процедура на сервере крутиться и нужно запускать сервер с ключом -debug тогда и отладчиком сможешь пройтись и посмотреть открыт файл или нет, еще такой трабл случается когда файл который пытаешься открыть, уже открыт в какой то другой программе
---
да это понятно sergnik, можно даже и проще - написать функцию на клиенте, которая будет вызываться из процедуры на сервере и смотреть значение текущей строки дбф.
но это всё неправильно и много переписывать - правильно настроить сервер так, что бы работало даже при обращении с него
---
veluga,
не важно, где лежит он в сетевой шаре.
временное хранилище все равно потом уничтожается и не висит нигде.
а сетевая шара будет открываться дольше, да и опять же с правами доступа могут
быть свои заморочки. А так - во временное хранилище передал, потом сервер файл себе извлек
в темповые файлы, обработал. далее уже делайте, что хотите
Да и интернеты дают мне повод думать, что это лучший выход

это вообще типично Ваш случай
v8: 8.2. Как передать файл DBF на сервер для обработки?

это примеры
v8: 8.2 Передать файл с клиента на сервер
Получение XML файла с клиента на сервере
Открытие, перемещение и загрузка файла

Самое важное - это работает
---
sergnik, Спасибо всё получилось
---
sergnik,

мдя, всё отлично, но вот только выяснилось что с 64 битным линуксом метод 1С работы с DBF не дружит(((