Пример о том,как вывести яндекс карту на форму и далее работать с ней:
Основной HTML код карты хранится в макете:
Код VBS <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Примеры. Геокодирование.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkFAAAAf7jmJwMAHGZHrcLKDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ==" type="text/javascript" ></script>
<script type="text/javascript" >
var router;
var myPoints = new Array ();
var myRouts = new Array ();
var strOpen = "OPEN" ;
var strKontr = "Kontragent" ;
var t = new YMaps.Template(
YMaps.Templates.add("my#template" , t);
var KopdinatShirota = 0 ;
var KopdinatDolgota = 0 ;
var UID_Zakaza = "" ;
/*vstavkaStiley;
var map, geoResult;
YMaps.jQuery(function () {
map = new YMaps.Map(YMaps.jQuery("#YMapsID" )[0 ]);
map.setCenter(new YMaps.GeoPoint(37.62 , 55.75 ), 12 );
});
function showAddress (value, contrag, Styles, UID) {
var geocoder = new YMaps.Geocoder(value, {results: 1 , boundedBy: map.getBounds()});
YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
if (this.length()) {
geoResult = this.get (0 );
var point = new YMaps.GeoPoint(geoResult._point.__lng, geoResult._point.__lat);
var placemark = new YMaps.Placemark(point, {style: Styles});
placemark.name = UID;
placemark.description = contrag;
myPoints.push(placemark);
map.addOverlay(placemark);
return placemark;
}else {
}
});
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error ) {
alert("Произошла ошибка: " + error );
return null ;
})
}
function showAddressCoord (shirota, dolgota, contrag, Styles, UID) {
var point = new YMaps.GeoPoint(dolgota, shirota);
var placemark = new YMaps.Placemark(point, {style: Styles});
placemark.name = UID;
placemark.description = contrag;
myPoints.push(placemark);
map.addOverlay(placemark);
return placemark;
}
function removeAllOverlays (map) {
map.removeAllOverlays();
}
function AddRoute(wayPoint1, wayPoint2) {
if (myRouts.length>0 ) {lastRouter = myRouts[myRouts.length-1 ]; map.removeOverlay(lastRouter)};
var myRouter = new YMaps.Router([wayPoint1, wayPoint2], [], {viewAutoApply: true });
map.addOverlay(myRouter);
YMaps.Events.observe(myRouter, myRouter.Events.Success, function (myRouter) {
myRouter.getWayPoint(0 ).setIconContent(
myRouter.getWayPoint(1 ).setIconContent(
dlMar = myRouter.getDistance()/1000 ;
document.title =
});
myRouts.push(myRouter);
return true ;
}
function mapRazmer(map, SentrSh, SentrDlg, razmer) {
map.setCenter(new YMaps.GeoPoint(SentrSh, SentrDlg), razmer);
}
function changeStyle(numTochki, imStyle){
var restoreDefault = true ;
tochka = myPoints[numTochki];
tochka.setOptions({style: imStyle}, restoreDefault);
point = tochka.getCoordPoint();
map.setCenter(new YMaps.GeoPoint(point.__lng, point.__lat), 12 );
map.redraw();
return tochka.description;
}
</script>
</head>
<body //~~onload~~>
<div id="YMapsID" style="width:100%;height:100%" ></div>
</form>
</body>
</html>
Код вывода карты:
Код 1C v 8.х
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Макет = ПолучитьМакет( "Макет" ) ;
КодХТМЛ = Макет. ПолучитьТекст( ) ;
СтрокаСтиляНачальная = "var BurG = new YMaps.Style();
|BurG.iconStyle = new YMaps.IconStyle();
|BurG.iconStyle.offset = new YMaps.Point(-12, -12);
|BurG.iconStyle.href = "" http://www.burgerking.ru/favicon.ico"" ;
|BurG.iconStyle.size = new YMaps.Point(20, 20);
|BurG.hideIcon = false;
|BurG.balloonContentStyle = new YMaps.BalloonContentStyle("" my#template"" );" ;
СтрокаСтиляИтоговая = "" ;
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ВидыОбъектов.Ссылка,
| ВидыОбъектов.ПутьКИконке,
| ВидыОбъектов.Код
|ИЗ
| Справочник.ВидыОбъектов КАК ВидыОбъектов
|ГДЕ
| ВидыОбъектов.ПометкаУдаления = ЛОЖЬ" ;
Результат = Запрос. Выполнить( ) ;
ВыборкаДетальныеЗаписи = Результат. Выбрать( ) ;
Пока ВыборкаДетальныеЗаписи. Следующий( ) Цикл
времСтрокаСтиля = СтрокаСтиляНачальная;
времСтрокаСтиля = стрЗаменить( времСтрокаСтиля, "BurG" , "s" + Строка( ВыборкаДетальныеЗаписи. код) ) ;
времСтрокаСтиля = стрЗаменить( времСтрокаСтиля, "http://www.burgerking.ru/favicon.ico" , сокрЛП( ВыборкаДетальныеЗаписи. ПутьКИконке) ) ;
СтрокаСтиляИтоговая = СтрокаСтиляИтоговая + времСтрокаСтиля + символы. ПС;
КонецЦикла ;
СтрокаСтиляИтоговая = СтрокаСтиляИтоговая + СтрокаСтиляНачальная + символы. ПС;
КодХТМЛ = стрЗаменить( КодХТМЛ, "/*vstavkaStiley;" , СтрокаСтиляИтоговая) ;
путьККаталогуКартинок = СтрЗаменить( КаталогПрограммы( ) , "\" , "/" ) ;
КодХТМЛ = СтрЗаменить( КодХТМЛ, "C:/" , путьККаталогуКартинок) ;
ЭлементыФормы. Карта. УстановитьТекст( КодХТМЛ) ;
табАдресов = получитьтабАдресов( ) ;
табУникальныхАдресов = табАдресов. скопировать( ) ;
табУникальныхАдресов. свернуть( "Уник" ) ;
тзДанных = табАдресов. скопировать( ) ;
табАдресов. очистить( ) ;
Для Каждого стр из табУникальныхАдресов Цикл
Отбор = Новый Структура( ) ;
Отбор. Вставить( "Уник" , стр. Уник) ;
Строки = тзДанных. НайтиСтроки( Отбор) ;
НовСтр = табАдресов. добавить( ) ;
НовСтр. уник = стр. уник;
Если Строки. Количество( ) > 0 Тогда
для Каждого тздстр из Строки Цикл
НовСтр. Адрес = тздстр. Адрес;
НовСтр. КД = тздстр. КД;
НовСтр. КШ = тздстр. КШ;
НовСтр. ВидОбъекта = тздстр. ВидОбъекта;
НовСтр. Наименование= Строка( НовСтр. Наименование) + Строка( тздстр. Наименование) + "; " ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
ЭлементыФормы. табАдресов. СоздатьКолонки( ) ;
ВыборМасштаба = "50%" ;
ВыборРегиона = "Москва" ;
ЭлементыФормы. Надпись24 . Заголовок = "Точек: " + Строка( табАдресов. количество( ) ) ;
КонецПроцедуры
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
Всего= Строка( табАдресов. Количество( ) ) ; н= 0 ;
Для каждого строкаАдреса Из табАдресов Цикл
н= н+ 1 ; Состояние( "Вывод " + Строка( н) + " из " + Всего) ;
УИД_Дока = Строка( н) ;
имяСтиля = "s" + Строка( строкаАдреса. ВидОбъекта. код) ;
Попытка
Если ЗначениеЗаполнено( строкаАдреса. КД) Тогда
ВызовФункции = "showAddressCoord(" + сокрЛП( строкаАдреса. КШ) + ", " + сокрЛП( строкаАдреса. КД) + ", '" + сокрЛП( строкаАдреса. адрес) + "', " + имяСтиля + ", '" + сокрЛП( строкаАдреса. ВидОбъекта. наименование) + "')" ;
Иначе
ВызовФункции = "showAddress('" + сокрЛП( строкаАдреса. адрес) + "', '" + сокрЛП( строкаАдреса. адрес) + "', " + имяСтиля + ", '" + сокрЛП( строкаАдреса. ВидОбъекта. наименование) + "')" ;
КонецЕсли ;
ЭлементыФормы. Карта. Document. parentWindow. eval( ВызовФункции) ;
исключение
Сообщить( "Точка с адресом " + сокрЛП( строкаАдреса. адрес) + " не может быть отбражена на карте!" ) ;
конецПопытки
КонецЦикла ;
ТочкиНеСозданы = Ложь ;
ЭлементыФормы. Карта. ПолучитьТекст( ) ;
КонецПроцедуры
Процедура Кнопка1Нажатие(Элемент)
если ЭлементыФормы. ВыборРегиона. значение = "Москва" Тогда
СтрокаКоординат = "37.64, 55.76, " ;
ИначеЕсли ЭлементыФормы. ВыборРегиона. значение = "Тверь" Тогда
СтрокаКоординат = "35.90, 56.83, " ;
ИначеЕсли ЭлементыФормы. ВыборРегиона. значение = "Балашиха" Тогда
СтрокаКоординат = "37.97, 55.82, " ;
Иначе
СтрокаКоординат = "37.64, 55.76, " ;
конецесли ;
Если ВыборМасштаба = "" тогда
возврат ;
конецесли ;
числоМасштаба = Число( Лев( ВыборМасштаба, стрдлина( ВыборМасштаба) - 1 ) ) ;
числоМасштаба = числоМасштаба + 5 ;
ВыборМасштаба = строка( числоМасштаба) + "%" ;
ТекущийМасштаб = Строка( Цел( ( числоМасштаба/ 125 ) * ( 20 ) + 4 ) ) ;
если стрДлина( ТекущийМасштаб) = 1 тогда
ТекущийМасштаб = "0" + ТекущийМасштаб;
конецесли ;
ЭлементыФормы. Карта. Document. parentWindow. eval( "mapRazmer(map," + СтрокаКоординат + ТекущийМасштаб + ")" ) ;
КонецПроцедуры
Пример обратного геокодирования - получение координат по адресу:
Код 1C v 8.х Процедура ПолучитьКоординаты() Экспорт
Яндекс = Новый HTTPСоединение( "geocode-maps.yandex.ru" , , , , , Истина ) ;
ВременныйФайл = КаталогВременныхФайлов( ) + "Yandex_geocode_" + СокрЛП( Новый УникальныйИдентификатор) ;
Попытка
Яндекс. Получить( "/1.x/?geocode=" + Адрес + "&results=1" , ВременныйФайл) ;
Исключение
Сообщить( "Ошибка при попытке геокодировать по яндексу адрес: " + Адрес) ;
Сообщить( ОписаниеОшибки( ) ) ;
Возврат ;
КонецПопытки ;
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML. ОткрытьФайл( ВременныйФайл) ;
ПостроительDOM = Новый ПостроительDOM;
ДокументДОМ = ПостроительDOM. Прочитать( ЧтениеXML) ;
СписокText = ДокументДОМ. ПолучитьЭлементыПоИмени( "text" ) ;
СписокPos = ДокументДОМ. ПолучитьЭлементыПоИмени( "pos" ) ;
Если ( СписокText. Количество( ) = 0 ) ИЛИ ( СписокPos. Количество( ) = 0 ) Тогда
Возврат ;
КонецЕсли ;
Для ъ = 0 по СписокText. Количество( ) - 1 Цикл
Координаты = СписокPos[Ъ]. ТекстовоеСодержимое;
Разделитель = Найти( Координаты, " " ) ;
Широта = Число( Сред( Координаты, Разделитель + 1 ) ) ;
Долгота = Число( Лев( Координаты, Разделитель - 1 ) ) ;
Если Широта = 0 ИЛИ Долгота = 0 Тогда
Продолжить;
КонецЕсли ;
КД = Долгота;
КШ = Широта;
КонецЦикла ;
КонецПроцедуры
Обработка вырванная из конфигурации: YandexMap.rar
Можно ее использовать как макет для создания обработки под свои требования.
Пример автоматизации в котором это использовалось.
Часто при разработке какого-либо функционала в 1С мы делаем прикрепление файлов pdf.
Итак, Первым делом идет Выбор файла, далее нужно быстро просмотреть приложенный файл.
Для решения используются следующие варианты:
файл Выбирается по кнопке Выбор файла и помещается в Реквизит с типом Хранилище Значений
Код 1C v 8.х Процедура КнопкаВыбратьСканНажатие(Элемент)
Диалог = Новый ДиалогВыбораФайла( РежимДиалогаВыбораФайла. Открытие) ;
Диалог. Заголовок = "Выберите файл" ;
Диалог. ПолноеИмяФайла = "" ;
Фильтр = "Все файлы (*.*)|*.*" ;
Диалог. Фильтр = Фильтр;
Если Диалог. Выбрать( ) Тогда
Попытка
ПутьКВнешнемуФайлу = Диалог. ПолноеИмяФайла;
СканФайл = Новый ХранилищеЗначения( Новый ДвоичныеДанные( ПутьКВнешнемуФайлу) ) ;
СканНазвание = СтрЗаменить( Диалог. ПолноеИмяФайла, Диалог. Каталог, "" ) ;
Исключение
СканНазвание = "ОШИБКА!" ;
Сообщить( ОписаниеОшибки( ) ) ;
КонецПопытки ;
КонецЕсли ;
КонецПроцедуры
Для открытия используем:
1. Открытие файла в программе Adobe Acrobat Reader
для этого используйте код:
Код 1C v 8.х Процедура ОсновныеДействияФормыПечатьСканВорд(Кнопка)
ИмяМакета = СканФайл;
Если Прав( СканНазвание, 3 ) = "doc" или Прав( СканНазвание, 3 ) = "docx" Тогда
Состояние( "Идет печать в Word" ) ;
УниверсальныеМеханизмы. НапечататьВнешнююФорму( Ссылка, ИмяМакета) ;
Иначе
ИмяКаталога = КаталогВременныхФайлов( ) ;
ИмяФайла = "vrem" + Формат( ТекущаяДата( ) , "ДФ=yyyyMMddhhmmss" ) + СокрЛП( Прав( СканНазвание, 5 ) ) ;
ИмяФайла = РаботаСФайлами. ПолучитьИмяФайла( ИмяКаталога, ИмяФайла) ;
ДвоичныеДанные = ИмяМакета. Получить( ) ;
Если ДвоичныеДанные = Неопределено Тогда
Предупреждение( "Не могу открыть файл, прикрепите новый внешний файл!" ) ;
Иначе
ДвоичныеДанные. Записать( ИмяФайла) ;
ЗапуститьПриложение( ИмяФайла) ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
2. Добавляем на форму элемент ActiveX Adobe PDF Reader
для этого используйте код:
Код 1C v 8.х Процедура ОсновныеДействияФормыПечатьСканВорд(Кнопка)
ИмяМакета = СканФайл;
Если Прав( СканНазвание, 3 ) = "doc" или Прав( СканНазвание, 3 ) = "docx" Тогда
Состояние( "Идет печать в Word" ) ;
УниверсальныеМеханизмы. НапечататьВнешнююФорму( Ссылка, ИмяМакета) ;
Иначе
ИмяКаталога = КаталогВременныхФайлов( ) ;
ИмяФайла = "vrem" + Формат( ТекущаяДата( ) , "ДФ=yyyyMMddhhmmss" ) + СокрЛП( Прав( СканНазвание, 5 ) ) ;
ИмяФайла = РаботаСФайлами. ПолучитьИмяФайла( ИмяКаталога, ИмяФайла) ;
ДвоичныеДанные = ИмяМакета. Получить( ) ;
Если ДвоичныеДанные = Неопределено Тогда
Предупреждение( "Не могу открыть файл, прикрепите новый внешний файл!" ) ;
Иначе
ДвоичныеДанные. Записать( ИмяФайла) ;
ЭлементыФормы. PDFСканДоговор. LoadFile( ИмяФайла) ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
Вот так это выглядит:
Пользователи в 1с ведут описание объектов, которые редактируются в объекте ФорматированныйДокумент. Необходимо обеспечить выгрузку форматированного документа на фтп.
Для решения этой задачи воспользуемся методом форматированного документа ПолучитьHTML(). Этот метод вернет нам сам текст html документа и структуру картинок. После выполнения данного метода нам следует выгрузить картинки на наш сайт. Во время выгрузки картинок определяем тип картинки и на основании этого определяем расширение файла. Поэтому нам надо и подкорректировать сам текст html, так как источник картинки в нем по умолчанию прописывается в виде «image001″ (без расширения). Эта корректировка не критична для нас, страница будет отображаться нормально, но отдельно по ссылке открыть рисунок будет проблематично.
Код функции:
Код 1C v 8.2 УП &НаСервере
Функция ВыгрузитьОбъект(ТекОбъект) Экспорт
РезультатВыгрузки = "" ;
ФорматированныйДокумент = ТекОбъект. Описание. Получить( ) ;
Если ФорматированныйДокумент = Неопределено Тогда
РезультатВыгрузки = " У данного объекта не определено описание. Выгрузка объекта остановлена" ;
Возврат РезультатВыгрузки;
КонецЕсли ;
Сервер = ХранилищеНастроек. ФТПСервер;
Порт = ХранилищеНастроек. ФТПпорт;
ИмяПользователяФТП = ХранилищеНастроек. ФТПИмяПользователя;
ПарольПользователяФТП = ХранилищеНастроек. ФТППароль;
ТекущийКаталогFTP = ХранилищеНастроек. ФТПТекущийКаталог;
ФТП = Новый FTPСоединение( Сервер, , ИмяПользователяФТП, ПарольПользователяФТП) ;
Попытка
ФТП. УстановитьТекущийКаталог( ТекущийКаталогFTP) ;
Исключение
РезультатВыгрузки = "Невозможно подключиться к фтп" ;
Возврат РезультатВыгрузки;
КонецПопытки ;
ИмяКаталогаОбъекта = Формат( ТекОбъект. Ссылка. Код, "ЧЦ=5; ЧВН=; ЧГ=" ) ;
Попытка
ФТП. УстановитьТекущийКаталог( ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта) ;
Исключение
ФТП. СоздатьКаталог( ИмяКаталогаОбъекта) ;
ФТП. УстановитьТекущийКаталог( ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта) ;
РезультатВыгрузки = РезультатВыгрузки + Символы. ПС + " Создан каталог " + ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта;
КонецПопытки ;
ФТП. Удалить( ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта, "*.*" ) ;
ТекстХТМЛ = "" ;
СтруктураКартинок = Новый Структура;
ФорматированныйДокумент. ПолучитьHTML( ТекстХТМЛ, СтруктураКартинок) ;
Для Каждого ТекКартинка Из СтруктураКартинок Цикл
ИмяТемпФайла = ПолучитьИмяВременногоФайла( ) ;
ТекКартинка. Значение. Записать( ИмяТемпФайла) ;
ФорматТекущейКартинки = Строка( ТекКартинка. Значение. Формат( ) ) ;
Если Не ФорматТекущейКартинки = ФорматКартинки. НеизвестныйФормат Тогда
ФорматТекущейКартинкиСтрока = Строка( ФорматТекущейКартинки) ;
ТекстХТМЛ = СтрЗаменить( ТекстХТМЛ, ТекКартинка. Ключ, ТекКартинка. Ключ+ "." + ФорматТекущейКартинкиСтрока) ;
ФТП. Записать( ИмяТемпФайла, ТекКартинка. Ключ+ "." + ФорматТекущейКартинкиСтрока) ;
РезультатВыгрузки = РезультатВыгрузки + Символы. ПС + " Записан файл " + ТекКартинка. Ключ+ "." + ФорматТекущейКартинкиСтрока;
Иначе
ФТП. Записать( ИмяТемпФайла, ТекКартинка. Ключ) ;
РезультатВыгрузки = РезультатВыгрузки + Символы. ПС + " Записан файл " + ТекКартинка. Ключ;
КонецЕсли ;
КонецЦикла ;
ИмяТемпФайла = ПолучитьИмяВременногоФайла( "html" ) ;
ФайлHТМЛ = Новый ТекстовыйДокумент;
ФайлHТМЛ. ДобавитьСтроку( ТекстХТМЛ) ;
ФайлHТМЛ. Записать( ИмяТемпФайла) ;
ФТП. Записать( ИмяТемпФайла, ИмяКаталогаОбъекта + ".html" ) ;
РезультатВыгрузки = РезультатВыгрузки + Символы. ПС + " Записан файл " + ИмяКаталогаОбъекта + ".html" ;
Возврат РезультатВыгрузки;
КонецФункции
Андрей Данилюк
Код для 7 версии, при использовании в 8-ой - заменить E=СоздатьОбъект("Excel.Application");
на
E=Новый COMОбъект("Excel.Application");
Код 1C v 7.x Функция глОткрытьФайл(Маска="" ) Экспорт
Перем ИмяФайла, ИмяКаталога;
Маска_= "Файлы " + Маска+ "|*." + Маска;
Если СокрЛП( Маска) = "" Тогда
Маска_= "Все файлы |*.*"
КонецЕсли ;
Если ФС. ВыбратьФайл( 0 , ИмяФайла, ИмяКаталога, "Открыть файл" , Маска_) = 1 Тогда
Возврат ИмяКаталога+ ИмяФайла;
Иначе
Возврат "" ;
КонецЕсли ;
КонецФункции
Функция ReadExcel(ИмяФайла,Лист=1) Экспорт
Попытка
E= СоздатьОбъект( "Excel.Application" ) ;
Исключение
Предупреждение( "Excel на компьютере не установлен!" ) ;
Возврат ПолучитьПустоеЗначение( ) ;
КонецПопытки ;
E. Workbooks. Open( Сокрлп( ИмяФайла) ) ;
Строк= E. Sheets( Лист) . Cells. SpecialCells( 11 ) . Row;
Столбцов= E. Sheets( Лист) . Cells. SpecialCells( 11 ) . Column;
фТЗ= СоздатьОбъект( "ТаблицаЗначений" ) ;
Для А= 1 По Столбцов Цикл
фТЗ. НоваяКолонка( ) ;
КонецЦикла ;
Для Стр= 1 По Строк Цикл
Состояние( "Обработано " + Строка( Стр) + " строк из " + Строка( Строк) ) ;
фТЗ. НоваяСтрока( Стр) ;
Для Столб= 1 По Столбцов Цикл
фТЗ. УстановитьЗначение( Стр, Столб, СокрЛП( E. Sheets( Лист) . Cells( Стр, Столб) . Value) ) ;
КонецЦикла ;
КонецЦикла ;
E. Workbooks. Close( ) ;
Возврат фТЗ;
КонецФункции
Процедура Сформировать()
ИмяФайла= глОткрытьФайл( "xls" ) ;
Если СокрЛП( ИмяФайла) = "" Тогда Возврат ; КонецЕсли ;
ТЗ. Загрузить( ReadExcel( ИмяФайла, 1 ) ) ;
КонецПроцедуры
Подсказал Abadonna.
Ниже приведено несколько способов получения списка баз 1С 7.7 из реестра:
Код получения списка баз 1С 7.7 из 8.х
Код 1C v 8.х функция сзПолучитьСписокБаз()
попытка
олеСкрипт = новый COMОбъект( "MSScriptControl.ScriptControl" ) ;
олеСкрипт. Language = "VBScript" ;
стрКод =
"function strGetListBase()
| const RootKey = &H80000001
| set Reg = GetObject("" winmgmts:{impersonationLevel=impersonate}!\\."" &_
| "" \root\default:StdRegProv"" )
| PathKey = "" Software\1C\1Cv7\7.7\Titles""
| Reg.EnumValues RootKey, PathKey, Arr
| Answer = "" {"" "" #"" "" ,4772b3b4-f4a3-49c0-a1a5-8cb5961511a3,"" & chr(10)
| Answer = Answer & "" {3,1e512aab-1b41-4ef6-9375-f0137be9dd91,0,0,"" & chr(10)
| Answer = Answer & "" {"" & (UBound(Arr) + 1) & "" ,"" & chr(10)
| for x = LBound(Arr) to UBound(Arr)
| call Reg.GetStringValue(RootKey, PathKey, Arr(x), Value)
| Answer = Answer & "" {1e512aab-1b41-4ef6-9375-f0137be9dd91,"" & chr(10) &_
| "" {"" "" "" & replace(Value, "" "" "" "" , "" "" "" "" "" "" ) & "" "" "" ,0,"" &_
| chr(10) & "" {"" "" S"" "" ,"" "" "" & Arr(x)& "" "" "" },"" &_
| chr(10) & "" {3,0,"" & chr(10) & "" {0},"" "" "" "" ,-1,-1,0,0}"" &_
| chr(10) & "" }"" & chr(10) & "" }""
| if x <> UBound(Arr) then Answer = Answer & "" ,""
| Answer = Answer & chr(10)
| next
| Answer = Answer & "" },"" & chr(10) & "" {"" "" Pattern"" "" }"" & chr(10) &_
| "" }"" & chr(10) & "" }""
| strGetListBase = Answer
|end function" ;
олеСкрипт. AddCode( стрКод) ;
стрОтвет = олеСкрипт. Run( "strGetListBase" ) ;
Ответ = ЗначениеИзСтрокиВнутр( стрОтвет) ;
Ответ. СортироватьПоПредставлению( ) ;
исключение
Ответ = новый СписокЗначений;
Ответ. Добавить( "Базы 1С:Передприятия 7.7 не обнаруженны!" ) ;
конецпопытки ;
возврат Ответ;
конецфункции
Код для 1С 7.7
Код 1C v 7.x
Функция ПолучитьСписокБаз1()
Перем Value, arrValues;
Scr = CreateObject( "MSScriptControl.ScriptControl" ) ;
Scr. Language = "vbscript" ;
Scr. Timeout= - 1 ;
HKEY_CURRENT_USER = 2147483649 ;
strKeyPath = "Software\1C\1Cv7\7.7\Titles" ;
Locator= СоздатьОбъект( "WbemScripting.SWbemLocator" ) ;
ServiceDef= Locator. ConnectServer( "." , "root\default" ) ;
oReg = ServiceDef. Get( "StdRegProv" ) ;
Dict= СоздатьОбъект( "Scripting.Dictionary" ) ;
Scr. AddObject( "Dict" , Dict) ;
Scr. AddObject( "oReg" , oReg) ;
Scr. ExecuteStatement( "dim arrValues,Value:" ) ;
Scr. ExecuteStatement( "oReg.EnumValues " + HKEY_CURRENT_USER+ ","" " + strKeyPath+ """ ,arrValues:" ) ;
Scr. ExecuteStatement( "for i=lbound(arrValues) to ubound(arrValues):Dict.add "" pj"" & i, arrValues(i):next" ) ;
ТЗБаз= СоздатьОбъект( "ТаблицаЗначений" ) ;
ТЗБаз. НоваяКолонка( "Путь" ) ;
ТЗБаз. НоваяКолонка( "Описание" ) ;
Для к= 0 По Dict. count Цикл
Д= Dict. Item( "pj" + к) ;
Scr. ExecuteStatement( "oReg.GetStringValue " + HKEY_CURRENT_USER+ ","" " + strKeyPath+ """ ,"" " + Д+ """ ,Value" ) ;
ТЗБаз. НоваяСтрока( ) ;
ТЗБаз. Путь = Д;
ТЗБаз. Описание = Scr. eval( "Value" ) ;
КонецЦикла ;
Возврат ТЗБаз;
КонецФункции
Процедура ПолучитьСписокБаз2()
Попытка
scrptCtrl= createobject( "MSScriptControl.ScriptControl" ) ;
scrptCtrl. language= "vbscript" ;
scrptCtrl. addcode( "Function Get1CV77Titles()
|const HKEY_CURRENT_USER = &H80000001
|Set oReg=GetObject("" winmgmts:{impersonationLevel=impersonate}!\\."" &_
|"" \root\default:StdRegProv"" )
|strKeyPath = "" Software\1C\1Cv7\7.7\Titles""
|oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues
|strInfo=vbNullString
|For i = LBound(arrValues) To UBound(arrValues)
| call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)
| strInfo=strInfo & arrValues(i) & "" ="" & Value & vbCrLF
|Next
|Get1CV77Titles = strInfo
|End Function" ) ;
Сообщить( scrptCtrl. run( "Get1CV77Titles" ) ) ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
КонецПопытки ;
КонецПроцедуры
< Сообщил Gloom>
Процедура ПолучитьСписокБаз3()
Ключ= "HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles" ;
ИмяКаталога= СокрЛП( КаталогПользователя( ) ) ;
ИмяБазы= СокрЛП( каталогИБ( ) ) ;
Если прав( ИмяКаталога, 1 ) < > "\" Тогда ИмяКаталога= ИмяКаталога+ "\" КонецЕсли ;
Если прав( ИмяБазы, 1 ) < > "\" Тогда ИмяБазы= ИмяБазы+ "\" КонецЕсли ;
ИмяБазыСтр= Симв( 34 ) + СтрЗаменить( ИмяБазы, "\" , "\\" ) + Симв( 34 ) ;
ИмяФайла= "USER.TXT" ;
Команда= "Regedit /ea " + Симв( 34 ) + ИмяКаталога+ ИмяФайла+ Симв( 34 ) + " " + Симв( 34 ) + Ключ+ Симв( 34 ) ;
КомандаСистемы( Команда) ;
Текст= СоздатьОбъект( "Текст" ) ;
Текст. КодоваяСтраница( 0 ) ;
Текст. Открыть( ИмяКаталога+ ИмяФайла) ;
Текст. Показать( ) ;
Стр= "" ; Нашли= 0 ;
Для сч= 1 по Текст. КоличествоСтрок( ) Цикл
Стр= СокрЛП( Текст. ПолучитьСтроку( сч) ) ;
Сообщить( Стр) ;
Если Найти( стр, ИмяБазыСтр) < > 0 Тогда
Нашли= 1 ;
прервать;
КонецЕсли ;
КонецЦикла ;
КонецПроцедуры