Программное чтение файла ibases.v8i

Пример кода, который позволяет читать файл списка баз данных ibases.v8i.

Добрый день. 

Возможно, информация не нова, но будет полезна. 

Появилась необходимость читать список баз данных из файла ibases.v8i. 

Решил реализовать с помощью парсинга текстового документа. 

Поиск файла идет из каталога пользователя с последующим добавлением и заполнением строки таблицы формы обработки.

Список баз таким образом будет получен пользовательский, у каждого свой, который отображается при запуске 1С.

Если есть иные варианты, пишите в комментарии, обсуждайте, критика приветствуется. 

Если кто-то может дать информацию, как можно к списку баз, подтянуть и откуда подтянуть, пользователей базы для заполнения списка выбора в строке таблицы, пишите. 

 

&НаКлиенте
Процедура ПолучитьСписокБазПользователя(Команда)

ВременныйКаталог = КаталогВременныхФайлов();

ИмяФайла = "ibases.v8i";

ВременныйКаталог = СтрЗаменить(ВременныйКаталог, "LocalTemp", "Roaming1C1CEStart");

ФайлЗапуска1С = Новый Файл(ВременныйКаталог + ИмяФайла);

Если ФайлЗапуска1С.Существует() Тогда

ТекстовыйДокИзФайла = Новый ТекстовыйДокумент;
ТекстовыйДокИзФайла.Прочитать(ФайлЗапуска1С.ПолноеИмя);

//Текст = ТекстовыйДокИзФайла.ПолучитьТекст();

СлБаза = Ложь;
Для НомерСтроки = 1 По ТекстовыйДокИзФайла.КоличествоСтрок() Цикл

СтрокаТекста = ТекстовыйДокИзФайла.ПолучитьСтроку(НомерСтроки);

Если Лев(СтрокаТекста, 1) = "[" Тогда //Это имя в списке

СтруктураБазы = Новый Структура;

СтруктураБазы.Вставить("ИмяБазы", Сред(СтрокаТекста, 2, СтрДлина(СтрокаТекста) - 2));

ИначеЕсли СтрЧислоВхождений(СтрокаТекста, "Connect=File=") > 0 Тогда

Путь = СтрЗаменить(СтрокаТекста, "Connect=File=", "");

Путь = СтрЗаменить(Путь, ";", "");
Путь = СтрЗаменить(Путь, """", "");

СтруктураБазы.Вставить("ПутьКБазе", Путь);

//Проверяем добавляемую строку
Если СписокБазДанных.НайтиСтроки(Новый Структура("ИмяБазы", СтруктураБазы.ИмяБазы)).Количество() = 0 Тогда
СтрокаБазы = СписокБазДанных.Добавить();

ЗаполнитьЗначенияСвойств(СтрокаБазы, СтруктураБазы);
КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

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

 

17 Comments

  1. Ziggurat

    А если временная папка переопределена?

    Reply
  2. Andryza

    (1)Тогда уже писать под свою папку, в таком случае. Это же как пример, каталог по умолчанию типового функционала.

    Reply
  3. independ

    Для windows можно так

    WSH = Новый COMОбъект(«WScript.Shell»);
    ВременныйКаталог  = WSH.ExpandEnvironmentStrings(«%APPDATA%»)+»1C1CEStartibases.v8i»;
    
    Reply
  4. CratosX

    Опишите переменную СписокБазДанных

    Reply
  5. Andryza

    (4)таблица значений

    Reply
  6. CratosX

    (5) таки да, но хотелось бы полное описание колонок.

    Reply
  7. Andryza

    (6) Таблица значений. Колонки (Имя базы, Путь к базе, Пользователь, Пароль, Количество проводок в базе) Все строковые, кроме количества проводок.

    Reply
  8. МимохожийОднако

    «Появилась необходимость читать список баз данных из файла ibases.v8i.»

    Прочитать файл можно, отрыв в блокноте и глазками. Зачем читать программно? Любопытно, где это можно применить?

    Reply
  9. Andryza

    (8)Применить это можно по необходимости, собственно об этом я и написал.

    Reply
  10. МимохожийОднако

    (9) Назови хотя бы одну необходимость. Собственно об этом я спросил.

    Reply
  11. Andryza

    (10) Для особо дотошных — потребовалась обработка, которая получала бы количество проводок из бух. баз, что бы можно было настраивать, сохранять список этих самых баз в форме обработки, с указанием имен, путей к базе, логина/пароля юзера. Для дальнейшего получения количества проводок в этих базах. баз 15 штук, все файловые, вот для этого и понадобилось чтение. Нажали кнопку заполнить, список заполнился в форме обработке, и что бы можно было этот список сохранить в файл со всей информацией. Теперь ты понял необходимость? Что бы руками это все не набивать — это как минимум.

    Reply
  12. МимохожийОднако

    Так бы сразу и написал. Спасибо.

    Reply
  13. pentanom

    (7)

    Таблица значений. Колонки (Имя базы, Путь к базе, Пользователь, Пароль, Количество проводок в базе) Все строковые, кроме количества проводок.

    В базе УТ (например) проводок нет. Что будет в колонке «Количество проводок в базе» ?

    Reply
  14. Andryza

    (13) А я и не писал, что речь идет об УТ,

    Reply
  15. Andryza

    (13)И вообще, я писал о методе чтения списка баз, а не о самой разработке. + логично, что если я упомянул колонку «количество проводок», значит речь идет о БП.

    Reply
  16. pentanom

    (14)Вы вообще не писали о каких базах идет речь. А в списке баз могут быть и не только БП.

    Reply
  17. Andryza

    (16)Так я Вам об этом и говорю, что речь не шла о типах баз в принципе, статью читайте внимательно.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *