Добрый день.
Возможно, информация не нова, но будет полезна.
Появилась необходимость читать список баз данных из файла ibases.v8i.
Решил реализовать с помощью парсинга текстового документа.
Поиск файла идет из каталога пользователя с последующим добавлением и заполнением строки таблицы формы обработки.
Список баз таким образом будет получен пользовательский, у каждого свой, который отображается при запуске 1С.
Если есть иные варианты, пишите в комментарии, обсуждайте, критика приветствуется.
Если кто-то может дать информацию, как можно к списку баз, подтянуть и откуда подтянуть, пользователей базы для заполнения списка выбора в строке таблицы, пишите.
&НаКлиенте
Процедура ПолучитьСписокБазПользователя(Команда)
ВременныйКаталог = КаталогВременныхФайлов();
ИмяФайла = "ibases.v8i";
ВременныйКаталог = СтрЗаменить(ВременныйКаталог, "LocalTemp", "Roaming1C1CEStart");
ФайлЗапуска1С = Новый Файл(ВременныйКаталог + ИмяФайла);
Если ФайлЗапуска1С.Существует() Тогда
ТекстовыйДокИзФайла = Новый ТекстовыйДокумент;
ТекстовыйДокИзФайла.Прочитать(ФайлЗапуска1С.ПолноеИмя);
//Текст = ТекстовыйДокИзФайла.ПолучитьТекст();
СлБаза = Ложь;
Для НомерСтроки = 1 По ТекстовыйДокИзФайла.КоличествоСтрок() Цикл
СтрокаТекста = ТекстовыйДокИзФайла.ПолучитьСтроку(НомерСтроки);
Если Лев(СтрокаТекста, 1) = "[" Тогда //Это имя в списке
СтруктураБазы = Новый Структура;
СтруктураБазы.Вставить("ИмяБазы", Сред(СтрокаТекста, 2, СтрДлина(СтрокаТекста) - 2));
ИначеЕсли СтрЧислоВхождений(СтрокаТекста, "Connect=File=") > 0 Тогда
Путь = СтрЗаменить(СтрокаТекста, "Connect=File=", "");
Путь = СтрЗаменить(Путь, ";", "");
Путь = СтрЗаменить(Путь, """", "");
СтруктураБазы.Вставить("ПутьКБазе", Путь);
//Проверяем добавляемую строку
Если СписокБазДанных.НайтиСтроки(Новый Структура("ИмяБазы", СтруктураБазы.ИмяБазы)).Количество() = 0 Тогда
СтрокаБазы = СписокБазДанных.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаБазы, СтруктураБазы);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
А если временная папка переопределена?
(1)Тогда уже писать под свою папку, в таком случае. Это же как пример, каталог по умолчанию типового функционала.
Для windows можно так
Опишите переменную СписокБазДанных
(4)таблица значений
(5) таки да, но хотелось бы полное описание колонок.
(6) Таблица значений. Колонки (Имя базы, Путь к базе, Пользователь, Пароль, Количество проводок в базе) Все строковые, кроме количества проводок.
«Появилась необходимость читать список баз данных из файла ibases.v8i.»
Прочитать файл можно, отрыв в блокноте и глазками. Зачем читать программно? Любопытно, где это можно применить?
(8)Применить это можно по необходимости, собственно об этом я и написал.
(9) Назови хотя бы одну необходимость. Собственно об этом я спросил.
(10) Для особо дотошных — потребовалась обработка, которая получала бы количество проводок из бух. баз, что бы можно было настраивать, сохранять список этих самых баз в форме обработки, с указанием имен, путей к базе, логина/пароля юзера. Для дальнейшего получения количества проводок в этих базах. баз 15 штук, все файловые, вот для этого и понадобилось чтение. Нажали кнопку заполнить, список заполнился в форме обработке, и что бы можно было этот список сохранить в файл со всей информацией. Теперь ты понял необходимость? Что бы руками это все не набивать — это как минимум.
Так бы сразу и написал. Спасибо.
(7)
В базе УТ (например) проводок нет. Что будет в колонке «Количество проводок в базе» ?
(13) А я и не писал, что речь идет об УТ,
(13)И вообще, я писал о методе чтения списка баз, а не о самой разработке. + логично, что если я упомянул колонку «количество проводок», значит речь идет о БП.
(14)Вы вообще не писали о каких базах идет речь. А в списке баз могут быть и не только БП.
(16)Так я Вам об этом и говорю, что речь не шла о типах баз в принципе, статью читайте внимательно.