Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

КЛАДР - XBase - Linux / dbf не открывается

КЛАДР - XBase - Linux / dbf не открывается
Я
   CaIIIka
 
26.02.20 - 15:32
Здравствуйте! 1С 8.2 УФ Сервер. Кладр на линуксе не грузится. Файловая и виндовый сервер - все ОК. Пакует файлы в архив, создает на сервере папку /tmp/kladr_files0, отправляет архивы туда, распаковывает их там, и архивы удаляет. Затем пытается грузить данные из dbf. Навтыкал сообщений для отладки:

Если НЕ ФайлИндекса.Существует() Тогда
    Сообщить("Попытка создания индексного файла "+ФайлИндексаКлассификатора);
    xB = Новый XBase(ФайлАдресногоКлассификатора);
    xB.Кодировка = КодировкаXBase.OEM;
    
    Если xB.Открыта() Тогда
        Сообщить("Попытка создания индексного файла. Открыли базу: "+ФайлАдресногоКлассификатора);
        // Для загрузки сразу группы адресных сведений удобно
        // пользоваться индексом по всему поле CODE
        xB.индексы.Добавить("IDXCODE", "CODE", Истина);
        xB.СоздатьИндексныйФайл(ФайлИндексаКлассификатора);
        Сообщить("Создан индексный файл."+ФайлИндексаКлассификатора);
        xB.ЗакрытьФайл();
    Иначе
        Сообщить("Ошибка открытия базы для создания индекса. "+ФайлАдресногоКлассификатора);
        Возврат Ложь;
    КонецЕсли;
КонецЕсли;

Этот код возвращает:

Попытка создания индексного файла /tmp/kladr_files0/kladr.cdx
Ошибка открытия базы для создания индекса. /tmp/kladr_files0/kladr.dbf

Т.е. "xB.Открыта()" возвращает "Ложь".

-----------

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

Пошел дальше. Вставил в код костыль, чтобы 1С открывала через XBase ранее созданные файлы по конкретно указанному пути. У ранее созданных файлов полные права на все для всех. Грузим "в лоб". История та же. Код "xB.Открыта()" возвращает "Ложь".

Идеи на текущий момент закончились. Получается XBase впринципе не работает на Linux, по крайней мере на моей сборке...

Вопрос: почему база не открыта и что можно с этим сделать?
   CaIIIka
 
1 - 26.02.20 - 15:35
Пробовал открывать только на чтение:
xB = Новый XBase(ФайлАдресногоКлассификатора,,Истина); 
То же самое.
   CaIIIka
 
2 - 26.02.20 - 15:36
На чем завязана работа 1С-нового объекта в линуксе? Что может не давать ему работать?
   CaIIIka
 
3 - 26.02.20 - 15:40
+2 "1С-нового объекта XBase в линуксе"
   CaIIIka
 
4 - 26.02.20 - 15:48
8.2.19.130 - linux centos
   Garykom
 
5 - 26.02.20 - 15:49
   Garykom
 
6 - 26.02.20 - 15:49
(5) Подумай чем твой код отличается от кода там?
   CaIIIka
 
7 - 26.02.20 - 15:57
(6) Действие на клиенте, файл открывается не через конструктор по-умолчанию, нет проверки "Открыта", которая мне ложь все время возвращает. Возможно, все на винде происходит, где и у меня все работает :)
   CaIIIka
 
8 - 26.02.20 - 16:08
Попробовал через ОткрытьФайл. Результат прежний.
Из (5) в моем случае остается только проверку убрать. Но хорошо ли это...
Либо я чего-то еще не заметил.
   CaIIIka
 
9 - 26.02.20 - 16:17
Проверку убрал, программа вылетает в исключение, и просит для начала открыть базу.
Вопрос актуален.
   Garykom
 
10 - 26.02.20 - 16:33
(9) Для начала возьми готовый код простой и проверь работает ли под linux?

А уже потом усложняй до индексов и прочего.
   Garykom
 
11 - 26.02.20 - 16:34
(10)+ Убедись что файл доступен для 1С и ничем не занят, она может уго прочитать/удалить и т.д.
   CaIIIka
 
12 - 26.02.20 - 16:59
(11) Файл доступен для 1С и ничем не занят. 1С удаляла все файлы и папки прекрасно, пока я код, отвечающий за это, не закомментировал.
Написал простой код чтения 5 первых записей. При любых действиях с xbase без проверки на открытость программа уходит в исключение.

Действия 1С:

Зипует файлы КЛАДРа
Создает папку  в /TMP на линуксовом сервере
Передает ЗИПы в новую папку
Распаковывает
Удаляет архивы
Создает и открывает XBase
Вылетает...

Доступ у новых файлов полнейший.
   Garykom
 
13 - 26.02.20 - 18:12
(12) Я спрашивал без индексов с dbf работает? Новую создает и пишет/читает например?
   acht
 
14 - 26.02.20 - 18:30
(0) Если Linux 64 бита, то расслабся. Поддержку xbase на Linux x64 впилили только в 8.3.3

https://downloads.v8.1c.ru/content/Platform/8_3_3_641/1cv8upd.htm#4288e49a-1835-11e2-b237-e61f135f174b
   CaIIIka
 
15 - 27.02.20 - 08:32
(13) Написал простой код чтения 5 первых записей. Без индексов.
(14) Спасибо тебе огромное за информацию. Избавил от дальнейших мучений. Теперь знаю конкретику, что, когда и почему.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.