Имя: Пароль:
1C
 
Как в Linux создать папку файлового кэша для конкретной базы 1С?
,
0 TormozIT
 
гуру
25.04.21
11:01
Нашел где в Linux 1С хранит файловый кэш базы (например толстый клиент и конфигуратора хранят там метаданные).
~/.1cv8/1C/1Cv8/436a356c-54bd-4d6c-9198-ea9f92a74fa2

Решил рядом создать свой каталог
СоздатьКаталог("~/.1cv8/1C/1Cv8/Srvr__localhost__Ref__testdb__");

Получил
Ошибка при вызове метода
контекста (СоздатьКаталог): Ошибка создания каталога: Ошибка доступа к
файлу '~'. 13(0x0000000D): Permission denied

Как правильно создать там каталог?
1 ДенисЧ
 
25.04.21
11:05
ls -la ~/.1cv8/
ls -la ~/.1cv8/1C/
ls -la ~/.1cv8/1Cv8/

что показывают? Или "линукса нет, но делать надо"?
2 TormozIT
 
гуру
25.04.21
11:11
(1) У меня линукса нет.
3 TormozIT
 
гуру
25.04.21
11:12
(1) Проверить смогу через пользователей спустя какое то время.
4 ДенисЧ
 
25.04.21
11:14
Мда... Метод дистанционного программирования...

Я так начинал... По знакомству, через отца давал свои первые программки, чтобы "девочки"-перфораторщицы их в свободное время набили и запустили в машзал... Где-то через неделю получал распечатку ответов...

Поставить линух в виртбоксе - вообще никак?
5 TormozIT
 
гуру
25.04.21
11:16
(4) Думаешь достаточно поставить только линукс в виртуальной машине? А всякие платформы 1С и серверы БД не нужно?
6 mistеr
 
25.04.21
11:18
(0) По-моему, "~" только в баше работает. Нужно /home/user.
7 ДенисЧ
 
25.04.21
11:18
(5) А в чём проблема-то?
Сервер 1с ставится в виртуалку и, по слухам, ключа до 12 пользователей не просит.
Постгре поставить - тоже минут 10, тебе же тонкий тюнинг не нужен.
Итого хватит обычной виртуалки на ГБ диска.
8 mistеr
 
25.04.21
11:18
Или "./", если ты уже дома.
9 TormozIT
 
гуру
25.04.21
11:22
(6) Полный путь еще узнать надо. Может есть какая то переменная среды с именем пользователя?
10 TormozIT
 
гуру
25.04.21
11:23
(8) Это что? Можешь полный путь написать для (0)?
11 ДенисЧ
 
25.04.21
11:25
(10) Попробуй $USER
12 TormozIT
 
гуру
25.04.21
11:26
(6) Баш - это оболочка для linux со своими фичами для указания путей к файлам?
13 TormozIT
 
гуру
25.04.21
11:42
(1)
perl@astra-1:~$ ls -la ~/.1cv8/
итого 12
drwxr-xr-x  3 perl perl 4096 июл 31  2020 .
drwx------ 33 perl perl 4096 апр 25 10:54 ..
drwxr-xr-x  3 perl perl 4096 июл 31  2020 1C
perl@astra-1:~$ ls -la ~/.1cv8/1C/
итого 12
drwxr-xr-x 3 perl perl 4096 июл 31  2020 .
drwxr-xr-x 3 perl perl 4096 июл 31  2020 ..
drwxr-xr-x 9 perl perl 4096 апр 25 10:39 1cv8
perl@astra-1:~$ ls -la ~/.1cv8/1Cv8/
ls: невозможно получить доступ к '/home/perl/.1cv8/1Cv8/': Нет такого файла или каталога

Похоже проблема регистре буквы "C" в последней имени нижней папки "1Cv8"
14 GANR
 
25.04.21
11:49
(2) Поставь в VirtualBox - реально это просто
15 Djelf
 
25.04.21
11:50
(13) Точно так! В Linux можно создать одновременно и 1Cv8 и 1сV8 и 1сv8, а правильный каталог (тот что создает 1С) ~/.1cv8/1C/1cv8/
16 ДенисЧ
 
25.04.21
11:53
"Похоже проблема регистре буквы "

О, сколько нам открытий чудных
готовит просвещения дух...
17 TormozIT
 
гуру
25.04.21
12:02
(15) Регистр исправил. Но при выполнении моего кода ошибка осталась прежней

Ошибка создания каталога: Ошибка доступа к файлу '~'. 13(0x0000000D): Permission denied

Значит "~" нельзя использовать. Помогите познать нужный _полный_ путь.
Правильно я понял, что теперь надо пробовать
/home/$USER/.1cv8/1Cv8/
?
18 TormozIT
 
гуру
25.04.21
12:03
(17) точнее /home/$USER/.1cv8/1cv8/
19 TormozIT
 
гуру
25.04.21
12:04
(18) и еще точнее точнее /home/$USER/.1cv8/1C/1cv8/
20 Biker
 
25.04.21
12:12
зачем рядом?
КаталогВременныхФайлов()
Там и создавай .
21 mistеr
 
25.04.21
12:12
Полный путь выдаcт команда cd
22 ДенисЧ
 
25.04.21
12:16
(19) Нет. $USER - это башевская. Тебе нужно получить значение переменной USER и подставить её в путь.
23 TormozIT
 
гуру
25.04.21
12:20
(22) Как получить значение этой переменной?
Так echo USER?
Так echo $USER?
Так echo "USER"?
Или как?
24 TormozIT
 
гуру
25.04.21
12:23
(20) Затем что файловый кэш сохраняется между сеансами работы и при изменении пути к папке временных файлов и при ее очистке.
25 ДенисЧ
 
25.04.21
12:24
вариант 2
26 TormozIT
 
гуру
25.04.21
12:26
(25) Т.е. в коде 1С это будет
КомандаСистемы("echo $USER > result.txt")
?
27 Djelf
 
25.04.21
12:29
(17) Проверил, да, увы, 1С не умеет так создавать каталог  ~/.1cv8/1C/1cv8/
Зато это умеет КомандаСистемы("mkdir ~/.1cv8/1C/1cv8/tmpdir");
А Сообщить(РабочийКаталогДанныхПользователя()); выдает
/home/addm/.1cv8/1C/1cv8/9d87b1e5-60f5-4f46-9750-2bbbd6bd234e/b008bd70-850d-4415-8cbc-6cdfd87e8c8e/App/
Можно и отсюда получить нужный каталог.
28 TormozIT
 
гуру
25.04.21
12:38
(27) Спасибо. Способ через mkdir как вариант записал, но у меня в коде несколько мест, где создаются каталоги. Пока не хочется везде править. Поищу способ получения полного пути.
У меня поддержка 8.2 есть. Так что РабочийКаталогДанныхПользователя() не подойдет.
29 TormozIT
 
гуру
25.04.21
12:39
Ну и получать значение переменной $USER в коде 1С в любом случае тоже хочется научиться.
30 TormozIT
 
гуру
25.04.21
12:48
Можно ли взять имя пользователя из КаталогВременныхФайлов()? Всегда ли он будет лежать внутри каталога пользователя?
31 Djelf
 
25.04.21
13:04
(29) В БСП есть обертка над запуском команд с перенаправлением потоков.
Если упростить, то получение имени пользователя выгладит так:

  Команда = "printenv USER";
  ВременныйФайл = КаталогВременныхФайлов()+"/out.tmp";
  КомандаСистемы(Команда+" > "+ВременныйФайл);
  ЧтениеТекста = Новый ЧтениеТекста(ВременныйФайл, КодировкаТекста.Системная);
  Результат = ЧтениеТекста.Прочитать();    
  Сообщить(Результат);
32 TormozIT
 
гуру
25.04.21
16:31
(31) Спасибо. С выполнение кода на клиенте задача решена.
Теперь переходим на сервер. Там уже нет переменной окружения USER. Как найти каталог там?
33 Djelf
 
25.04.21
16:37
(32) Не может не быть! 1С "на сервере" запускается под пользователем usr1cv8, вот он и должен в переменной окружения.
34 TormozIT
 
гуру
25.04.21
16:41
(33) Ну у нас получился такой список командой env:
LANG=ru_RU.UTF-8
OLDPWD=/
INVOCATION_ID=baccfcf6945as8fsu0pdf8s
PWD=/tmp
HOME=/home/usr1cv8
JOURNAL_STREAM=9:34252
KRB5_KTNAME="/opt/1cv8/x86_64/8.3.18.891/usr1cv8.keytab"
SHLVL=2
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
35 ДенисЧ
 
25.04.21
17:21
(34) У тебя есть HOME=/home/usr1cv8
Для твоих целей этого мало?
36 TormozIT
 
гуру
25.04.21
19:52
(35) Переменная HOME будет всегда и в ней всегда будет имя пользователя для службы сервера? Ранее ты о ней не писал.
37 ДенисЧ
 
25.04.21
20:21
(36) В линухе можно переопределить любую переменную среды. Так что это не Госстрах.
Но вряд ли кто в здравом уме станет её переделывать.
38 TormozIT
 
гуру
25.04.21
20:24
Какая папка в linux будет аналогом C:\ProgramData в Windows?
39 TormozIT
 
гуру
25.04.21
20:26
(38) В частности там лежит \1C\1CEStart\1CEStart.cfg общий для всех пользователей.
40 TormozIT
 
гуру
25.04.21
20:36
1cestart.cfg
Файл 1cestart.cfg содержит настройки, которые используют программы запуска (1cestart и 1cv8s), клиентские приложения (1cv8 и 1cv8c) и внешнее соединение.
Расположение файла:
● Для ОС Windows: .
   ● %APPDATA%\1C\1CEStart – для конкретного пользователя. Файл изменяется при выполнении настроек окна запуска (см. здесь).
   ● %ALLUSERSPROFILE%\Application Data\1C\1CEStart (%ALLUSERSPROFILE%\1C\1CEStart для ОС Windows Vista и выше) – для всех пользователей компьютера. Файл изменяется только во время установки системы «1С:Предприятие».
● Для ОС Linux: ~/.1C/1cestart.
● Для OS X: ~/.1C/1cestart.

Получается общие настройки есть только ОС Windows, а в остальных ОС общих настроек нет?
41 TormozIT
 
гуру
26.04.21
09:05
(33) Жду тебя в теме ВК http://devtool1c.ucoz.ru/forum/3-1359-1#7299
42 Biker
 
26.04.21
10:03
(40) /opt/1cv8/conf
43 Biker
 
26.04.21
10:09
+ для списка баз  есть /opt/1cv8/common 1cescmn.cfg
44 Почему 1С
 
26.04.21
10:17
(0) Код вызваться с клиента или с сервера?
На папку для юзверей под которым происходит вызов метода, права есть?
chmod https://losst.ru/komanda-chmod-linux
45 TormozIT
 
гуру
26.04.21
10:55
(44) Код зовется с клиента и сервера.
46 Garykom
 
гуру
26.04.21
10:58
Прикольно заставляют на линукс с винды переходить однако
47 mistеr
 
26.04.21
11:57
(46) Кто заставляет?