Книга знаний

1С:Предприятие / v8

v8: Получение списка баз Предприятия 7.7 без VB-скрипто-колдунств

Часто бывает нужно получить список баз 7.7, с которыми работает пользователь. Например, для разнообразных обработок обмена через Олю, да мало ли для чего еще. Поиск по Мисте дает вот такие ссылки: http://www.forum.mista.ru/topic.php?id=282718 http://www.kb.mista.ru/article.php?id=587 , которые не очень помогают, когда нужна простая функция, котрая вернет список баз. Данная статья - пример простой функции для 8.х, которая вернет список баз 7.7 без выполнения скриптов и прочих "сомнительных" колдунств.Автор статьи: Лефмихалыч | Редакторы:
Последняя редакция №3 от 20.06.08 | История
URL: http://kb.mista.ru/article.php?id=676

Ключевые слова: Titles, список баз, EnumValues, Software\1C\1Cv7\7.7\Titles


Справедливости ради стоит отметить, что упомянутые статья и ветка форума, конечно, дают исчерпывающую информацию о том, как перебрать значения ветки реестра, однако, предложенный там метод предполагает тщательную обработку напильником для того, чтобы можно было его использовать в 1С.
Собственно, вся метода зиждется на использовании ПолучитьCOMОбъект() - встроенной функции, которая позволяет не изобретать велосипедов для вызова GetObject.

// Возвращает список информационных баз 7.7
// Возвращает значение
// СписокЗначений - Значение - каталог ИБ, Представление - название базы
Функция Предприятие7ИнформационныеБазы() Экспорт Перем КаталогиСписок; Попытка Базы = Новый СписокЗначений; СистемныйРеестр = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"); HKCU = 2147483649; //0x80000001 Если СистемныйРеестр.EnumValues(HKCU, "Software\1C\1Cv7\7.7\Titles\", КаталогиСписок, Неопределено) Тогда Возврат Неопределено; КонецЕсли; Для каждого Каталог Из КаталогиСписок Цикл Наименование = ""; СистемныйРеестр.GetStringValue(HKCU, "Software\1C\1Cv7\7.7\Titles\", Каталог, Наименование); Базы.Добавить(Каталог, Наименование); КонецЦикла; Исключение Базы = Неопределено; КонецПопытки; Возврат Базы; КонецФункции



а вот и пример использования:
ИнформационныеБазы = Предприятие7ИнформационныеБазы();
Для каждого ИБ из ИнформационныеБазы Цикл
    Сообщить("Имя: "+ИБ.Представление+" :: каталог: "+ИБ.Значение);
КонецЦикла;


Как видно, функция предельно простая. Как и почему она работает, описано в упомянутых в эбстракте ветке и статье, кроме того, кому не понятно, можно зайти сюда http://script-coding.info/WMI_StdRegProv.html

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика