1С 8.3 Получить каталог информационной базы данных
Данные > Примеры кода 1С > 1С 8.3 Файлы, каталоги
Перейти в раздел примеры кода 1С 8.3:
Получить каталог информационной базы данных в 1С 8.3:
&НаКлиенте
Функция ПолучитьКаталогИБ()// аналог предопределенной КаталогИБ() в 1C 7.7
СтрокаИБ = СтрокаСоединенияИнформационнойБазы(); //File="D:\Base".
//Возвращает Строка соединения информационной базы, которую, например,
//можно использовать для запуска 1С:Предприятия средствами встроенного языка
ПутьИБ = Найти(Врег(СтрокаИБ), "FILE=");
Если ПутьИБ = 1 тогда // Файловая информационная база 1С:Предприятия 8 (.1CD)
Возврат Сред(СтрокаИБ,7,СтрДлина(СтрокаИБ)-8)+"\"; // Получим D:\Base
Иначе// Серверная - Используем КаталогВременныхФайлов()
ПозицияПоиска = Найти(Врег(СтрокаИБ), "SRVR=");
Если ПозицияПоиска <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
ПозицияТЧК_ЗПТ = Найти(СтрокаИБ, ";");
ПозСтарт = 6 + 1;
ПозФиниш = ПозицияТЧК_ЗПТ - 2; //
ИмяСервера = Сред(СтрокаИБ, ПозСтарт, ПозФиниш - ПозСтарт + 1);
СтрокаИБ = Сред(СтрокаИБ, ПозицияТЧК_ЗПТ + 1);
ПутьИБ = Найти(Врег(СтрокаИБ), "REF=");// позиция имени сервера
Если ПутьИБ <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
ПозСтарт = 6;
ПозицияТЧК_ЗПТ = Найти(СтрокаИБ, ";");
ПозФиниш = ПозицияТЧК_ЗПТ - 2;
ИмяИБНаСервере = Сред(СтрокаИБ, ПозСтарт, ПозФиниш - ПозСтарт + 1);
ПутьКБД = ИмяСервера + "/ " + ИмяИБНаСервере; //ServerName: Server1C / information_base_name: Buh3
Сообщить("ИБ в серверном режиме: "+ПутьКБД);
Сообщить("Серверная база данных! Используем каталог временных файлов ("+СокрЛП(КаталогВременныхФайлов())+") !");
Возврат КаталогВременныхФайлов();
КонецЕсли;
КонецФункции
Функция ПолучитьКаталогИБ()// аналог предопределенной КаталогИБ() в 1C 7.7
СтрокаИБ = СтрокаСоединенияИнформационнойБазы(); //File="D:\Base".
//Возвращает Строка соединения информационной базы, которую, например,
//можно использовать для запуска 1С:Предприятия средствами встроенного языка
ПутьИБ = Найти(Врег(СтрокаИБ), "FILE=");
Если ПутьИБ = 1 тогда // Файловая информационная база 1С:Предприятия 8 (.1CD)
Возврат Сред(СтрокаИБ,7,СтрДлина(СтрокаИБ)-8)+"\"; // Получим D:\Base
Иначе// Серверная - Используем КаталогВременныхФайлов()
ПозицияПоиска = Найти(Врег(СтрокаИБ), "SRVR=");
Если ПозицияПоиска <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
ПозицияТЧК_ЗПТ = Найти(СтрокаИБ, ";");
ПозСтарт = 6 + 1;
ПозФиниш = ПозицияТЧК_ЗПТ - 2; //
ИмяСервера = Сред(СтрокаИБ, ПозСтарт, ПозФиниш - ПозСтарт + 1);
СтрокаИБ = Сред(СтрокаИБ, ПозицияТЧК_ЗПТ + 1);
ПутьИБ = Найти(Врег(СтрокаИБ), "REF=");// позиция имени сервера
Если ПутьИБ <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
ПозСтарт = 6;
ПозицияТЧК_ЗПТ = Найти(СтрокаИБ, ";");
ПозФиниш = ПозицияТЧК_ЗПТ - 2;
ИмяИБНаСервере = Сред(СтрокаИБ, ПозСтарт, ПозФиниш - ПозСтарт + 1);
ПутьКБД = ИмяСервера + "/ " + ИмяИБНаСервере; //ServerName: Server1C / information_base_name: Buh3
Сообщить("ИБ в серверном режиме: "+ПутьКБД);
Сообщить("Серверная база данных! Используем каталог временных файлов ("+СокрЛП(КаталогВременныхФайлов())+") !");
Возврат КаталогВременныхФайлов();
КонецЕсли;
КонецФункции
2
комментарии
Alexander
22 мар 2021
Долго думал как на серверной ИБ каталог получить. Оказывается вот оно как. Через грабли. Неужели стандартных функций нет?
Vik
02 мар 2021
Спасибо! Крутое решение
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник