helpf.pro
Регистрация
 +1 
Распечатать

1С 8.2 УП : Формирование списка зарегистрированных информационных баз системы 1Cv8

В отличие от 1Cv7 (где список зарегистрированных информационных баз хранится в системном реестре (Щелкните для просмотра примеров)):

в 1C v 8 :
список зарегистрированных информационных баз хранится в текстовом файле v8ib.lst (кодировка UTF-8)
в каталоге \Application Data\1C\1Cv8 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\Application Data\1C\1Cv8\v8ib.lst

в 1C v 8.1 :
список зарегистрированных информационных баз хранится в текстовом файле ibases.v8i (кодировка UTF-8)
в каталоге \Application Data\1C\1Cv81 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\Application Data\1C\1Cv81\ibases.v8i

Если открыть этот файл в NotePad.exe, то видно, что он имеет структуру, схожую со стандартным INI-файлом :
[База Разработки]
Connect=File="F:\1C\1Cv8\DBRaz";
ID=1cd97bfa-4e57-4a23-9ee1-073a0a28e01c
OrderInList=16384
Folder=/
OrderInTree=16384
[Enterprise]
Connect=File="F:\1C\1Cv8\1cv8.db\Enterprise";
ID=647840fa-65e0-44e8-ad40-12476f178b92
OrderInList=20480
Folder=/
OrderInTree=32768

в 1C v 8.2 :
список зарегистрированных информационных баз хранится в текстовом файле ibases.v8i (кодировка UTF-8)
в каталоге \Application Data\1C\1Cv8 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\Application Data\1C\1CEStart\ibases.v8i

Если открыть этот файл в NotePad.exe, то там:
[1C:Документооборот 8 (демо)]
Connect=File="C:\Documents and Settings\E.S.Migachev\Мои документы\1C\DemoDoc8";
ID=b3b46c21-bd2a-481e-b100-e6cbdcba3e3d
OrderInList=16384
Folder=/
OrderInTree=256
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.2


Структура хранения информации по каждой информационной базе :

<Наименование информационной базы>
<ID>
<Connect>
<Folder>
<OrderInList>
<OrderInTree>

Где:
Connect - строка соединения с информационной базой,
ID - внутренний идентификатор информационной базы,
OrderInList - порядок в списке при представлении списком
Folder - наименование ветви в дереве информационных баз,
OrderInTree - порядок в ветви при представлении деревом.

В 1С 8.1 еще добавили External - но он всегда равен 0, для чего он пока не известно.

В 1С 8.2 добавлено:
ClientConnectionSpeed=Normal - скорость соединения
App=Auto - тип соединения - толстый, тонкий клиент.
WA=1
Version=8.2

Вот код получения получения списка баз из файла 1С 8.0 8.1 8.2

Код 1C v 8.х
 
Функция ПолучимСписокБаз1СИзФайла(Версия)
// Функция получения списка баз 1С 8.0 8.1 8.2 E_Migachev
// Возвращает Таблицу Значений содержащую Название, СтрокаСоединения с базами 1С

// Для начала получим программным путем полный путь к папке Application Data
// Способ из https://helpf.pro/faq/view/271.html
App = Новый COMОбъект("Shell.Application");
AppData=App.Namespace(26).Self.Path;
ТЗБаз=Новый ТаблицаЗначений;
ТЗБаз.Колонки.Добавить("Название",,"Название",25);
ТЗБаз.Колонки.Добавить("СтрокаСоединения",,"СтрокаСоединения",30);
Если Версия = "v80" Тогда
СписокБаз=AppData+"\1C\1Cv8\v8ib.lst";
ИначеЕсли Версия = "v81" Тогда
СписокБаз=AppData+"\1C\1Cv81\ibases.v8i";
ИначеЕсли Версия = "v82" Тогда
СписокБаз=AppData+"\1C\1CEStart\ibases.v8i";
КонецЕсли;
Сообщить("Файл со списком баз: "+Строка(СписокБаз));
//Открываем файл в кодировке UTF8
ФайлБаз= Новый ЧтениеТекста;
ФайлБаз.Открыть(СписокБаз, КодировкаТекста.UTF8);
Стр = ФайлБаз.ПрочитатьСтроку();
Пока НЕ Стр = Неопределено Цикл
Если СтрДлина(СокрЛП(Стр)) Тогда
ТекущаяСтрока = СокрЛП(Стр);

Если Лев(ТекущаяСтрока, 1) = "[" Тогда
НоваяСтрока = ТЗБаз.Добавить();
НоваяСтрока.Название = ТекущаяСтрока;
КонецЕсли;

Если Лев(ТекущаяСтрока, 8) = "Connect=" Тогда
Попытка
НоваяСтрока.СтрокаСоединения = Прав(ТекущаяСтрока, СтрДлина(ТекущаяСтрока)-8);
Исключение
// Это группа
НоваяСтрока.СтрокаСоединения = "";
КонецПопытки;
КонецЕсли;
КонецЕсли;
Стр = ФайлБаз.ПрочитатьСтроку();
КонецЦикла;
//Удалим из ТЗ строки с пустой Строкой Соединения, т.к это группы, а они нам не нужны
ПустыеСтроки = ТЗБаз.НайтиСтроки(Новый Структура("СтрокаСоединения",));
Для каждого СтрокаТаблицы Из ПустыеСтроки Цикл
ТЗБаз.Удалить(СтрокаТаблицы)
КонецЦикла;
Возврат ТЗБаз;
КонецФункции

Процедура ПолучимИзФайла(Кнопка)
ТЗБаз = ПолучимСписокБаз1СИзФайла(Кнопка.Имя);
//Выведем список баз из ТЗ в табличное поле
Список=ТЗБаз;
ЭлементыФормы.Список.СоздатьКолонки();
КонецПроцедуры


Пример обработки для 1С 8.1 "Получения списка баз 1С 8.0 8.1 8.2 E_Migachev" Скачивать файлы может только зарегистрированный пользователь!

Обработка для 1С 8.1 "Чтение списка информационных баз 1С 8.1"(формирует дерево баз) Fisca Скачивать файлы может только зарегистрированный пользователь!
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 48454
 +1 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C медленно работает по сети с базой на SQL Server 22
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.