Использование объекта Microsoft Script Control в среде 1С:Предприятие v7.7

Объект Microsoft Script Control в среде 1С:Предприятие v7.7 позволит исполнить любой код на VBScript или JScript. Может быть очень полезен, если нужно исполнить код, который не может быть исполнен непосредственно в 1С:Предприятии.

Автор: Людоговский А.И., ООО "Фирма Элли", г. Москва.
Источник: http://script-coding.info/

Объект Microsoft Script Control

Объект Microsoft Script Control в среде 1С:Предприятие v7.7 может быть создан следующим образом:

ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");

После этого вы можете вызывать и использовать методы и свойства этого объекта.

Объект позволит исполнить любой код на VBScript или JScript. Может быть очень полезен, если нужно исполнить код, который не может быть исполнен непосредственно в 1С:Предприятии. Например:

  • Для работы с некоторыми OLE-объектами (например, при работе с технологией WMI - образцы кода см. ниже) нужно использовать функцию "GetObject". Этой функции нет во встроенном языке 1С:Предприятие v7.7, но используя Microsoft Script Control, вы сможете работать с ней.
  • Не все методы и свойства различных OLE-объектов корректно работают непосредственно в 1С:Предприятии v7.7. Иногда не удаётся передать или получить какой-то параметр, т.к. не поддерживается тот или иной тип данных. С помощью Microsoft Script Control эти проблемы решаются.
  • В VBScript и JScript есть функции, которых нет во встроенном языке 1С:Предприятие v7.7 (например, функция, вычисляющая квадратный корень числа). Используя Microsoft Script Control, вы сможете полноценно работать с этими функциями.
  • 1С:Предприятие v7.7 не всегда корректно работает с объектами так называемых "коллекций", которые могут быть возвращены различными свойствами и методами тех или иных OLE-объектов. Используя Microsoft Script Control, вы сможете полноценно работать с любыми коллекциями, например, с помощью цикла "for each", которого нет во встроенном языке 1С:Предприятие v7.7.

Полное описание объекта на английском языке можно скачать вместе с его дистрибутивом с сайта Microsoft. При этом, если у вас не слишком старая версия Windows, ничего устанавливать вам скорее всего вообще не придётся. Описание свойств и методов объекта на русском языке в формате синтакс-помощника 1С:Предприятие v7.7 (als-файл) вы можете скачать здесь. Скопируйте ALS-файл в каталог программы (например, "C:Program Files1Cv77BIN"), и в конфигураторе в синтакс-помощнике появится ветка "Некоторые объекты Automation". CHM-файл справки на русском языке по встроенным константам и функциям языка VBScript вы можете скачать здесь. Примеры работы с объектом Microsoft Script Control вы можете также получить, рассмотрев код маленькой конфигурации для 1С:Предприятия v7.7 "Администратор 1С", которую вы можете скачать на главной страничке этого сайта.

Примеры работы

Функция читает список компьютеров, зарегистрированных в доменах локальной сети, и возвращает таблицу значений с колонками "Домен" и "Компьютер":

Функция глПолучитьКомпьютеры() Экспорт
	ТаблЗнач=СоздатьОбъект("ТаблицаЗначений");
	ТаблЗнач.НоваяКолонка("Домен");
	ТаблЗнач.НоваяКолонка("Компьютер");

	Попытка
		ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
		ScrptCtrl.Language="vbscript";
		ScrptCtrl.AddCode("
		|Function GetComputers()
		|	Set WinNT = GetObject(""WinNT:"")
		|	WinNT.Filter = Array(""domain"")
		|	strInfo=vbNullString
		|	For Each Domain In WinNT
		|		Set ADSI = GetObject(""WinNT://"" & Domain.Name) 
		|		ADSI.Filter = Array(""computer"")
		|		For Each Comp In ADSI
		|			strInfo=strInfo & Domain.Name & vbTab & Comp.Name & vbCrLf
		|		Next
		|	Next
		|	GetComputers = strInfo
		|End Function
		|");
		Текст=СокрЛП(ScrptCtrl.Run("GetComputers"));
	Исключение
		Сообщить(ОписаниеОшибки());
		Возврат ТаблЗнач;
	КонецПопытки;
	
	Для ы=1 по СтрКоличествоСтрок(Текст) Цикл
		СтрКомп=СтрПолучитьСтроку(Текст,ы);
		Разд=Найти(СтрКомп,СимволТабуляции);
		Домен=Лев(СтрКомп,Разд-1);
		Компьютер=Прав(СтрКомп,СтрДлина(СтрКомп)-Разд);
		ТаблЗнач.НоваяСтрока();
		ТаблЗнач.Домен=Домен;
		ТаблЗнач.Компьютер=Компьютер;
	КонецЦикла;
	ТаблЗнач.Сортировать("Домен,Компьютер");
	Возврат ТаблЗнач;
КонецФункции //глПолучитьКомпьютеры

Функция читает список зарегистрированных информационных баз 1С из реестра Windows и возвращает таблицу значений с колонками "Название" и "Путь":

Функция глПолучитьСписокИБ() Экспорт
	ТаблЗнач=СоздатьОбъект("ТаблицаЗначений");
	ТаблЗнач.НоваяКолонка("Название");
	ТаблЗнач.НоваяКолонка("Путь");
	
	Попытка
		ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
		ScrptCtrl.Language="vbscript";
		ScrptCtrl.AddCode("
		|Function Get1CV77Titles()
		|	const HKEY_CURRENT_USER = &H80000001
		|	Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\.
ootdefault:StdRegProv"")
		|	strKeyPath = ""Software1C1Cv77.7Titles""
		|	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) & vbTab & Value & vbCrLf
		|	Next
		|	Get1CV77Titles = strInfo
		|End Function
		|");
		Текст=СокрЛП(ScrptCtrl.Run("Get1CV77Titles"));
	Исключение
		Сообщить(ОписаниеОшибки());
		Возврат ТаблЗнач;
	КонецПопытки;
	
	Для ы=1 по СтрКоличествоСтрок(Текст) Цикл
		СтрБазы=СтрПолучитьСтроку(Текст,ы);
		Разд=Найти(СтрБазы,СимволТабуляции);
		Путь=Лев(СтрБазы,Разд-1);
		Название=Прав(СтрБазы,СтрДлина(СтрБазы)-Разд);
		ТаблЗнач.НоваяСтрока();
		ТаблЗнач.Название=Название;
		ТаблЗнач.Путь=Путь;
	КонецЦикла;
	ТаблЗнач.Сортировать("Название");
	Возврат ТаблЗнач;
КонецФункции //глПолучитьСписокИБ

Процедура делает Log Off (Парам=4), Shutdown (Парам=5) или Reboot (Парам=6) выбранному компьютеру:

Процедура глViolateComputer(ИмяКомпа,Парам) Экспорт
	Попытка
		ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
		ScrptCtrl.Language="vbscript";
		ScrptCtrl.AddCode("
		|Function ViolateComputer()
		|	Set WMI = GetObject(""winmgmts:{(Shutdown,RemoteShutdown)}\"+СокрЛП(ИмяКомпа)+"RootCIMV2"")
		|	For Each OS In WMI.ExecQuery(""SELECT * FROM Win32_OperatingSystem"")
		|		OS.Win32Shutdown("+Парам+")
		|	Next
		|End Function
		|");
		ScrptCtrl.Run("ViolateComputer");
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
КонецПроцедуры //глViolateComputer

Функция вычисляет квадратный корень числа:

Функция КвКорень(Чсл)
	Попытка
		ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
		ScrptCtrl.Language="vbscript";
		ScrptCtrl.AddCode("
		|Function GetSqr(x)
		|	GetSqr = Sqr(x)
		|End Function
		|");
		Рез=ScrptCtrl.Modules("Global").CodeObject.GetSqr(Чсл);
	Исключение
		Сообщить(ОписаниеОшибки());
		Возврат 0;
	КонецПопытки;
	Возврат Рез;
КонецФункции //КвКорень

Начать дискуссию

Какая информация передается в рамках автоматического обмена информацией по финансовым счетам

Казахстанцы массово получают уведомления от налоговиков о незадекларированных зарубежных доходах. Именно информация, полученная в рамках автоматического обмена, стала основанием для рассылки таких уведомлений

Общество

👍 Президент подписал закон, упрощающий принятие решений на общих собраниях членов СНТ и ОНТ

Владимир Путин подписал разработанный при участии Росреестра федеральный закон, которым упрощен процесс принятия решений на общих собраниях членов садоводческих (СНТ) и огороднических товариществ.

Патентная активность российских изобретателей выросла на 7%

Более 15 000 заявок на патентование изобретений и полезных моделей подали отечественные разработчики в Федеральную службу по интеллектуальной собственности (Роспатент) с января по июнь 2024 года.

Курсы повышения
квалификации

18
Официальное удостоверение с занесением в госреестр Рособрнадзора
Личные финансы

А правильно ли вы разговариваете с детьми о деньгах

Все мы, кто родился в СССР — жертвы ограничивающих установок. С самого детства мы многократно слышали негативные фразы про деньги.

А правильно ли вы разговариваете с детьми о деньгах
Экономика России

Опубликованы поручения Президента по итогам Петербургского международного экономического форума-2024

Владимир Путин утвердил перечень поручений по итогам ПМЭФ-2024, который прошел 5–8 июня.

Кредитование

Нацбюро кредитных историй назвало средний размер автокредита

По данным кредиторов, передающих сведения в Национальное бюро кредитных историй (НБКИ), в июне 2024 года средний размер выданных автокредитов составил 1,47 млн рублей.

Опытом делятся эксперты-практики, без воды
Мошенничество

МВД: если поменяли сим-карту, открепите номер от Госуслуг и мобильного приложения

Киберпреступники приобретают старые сим-карты, которые уже были использованы и поступили в повторную продажу.

1
УК РФ

Ответственность за цифровые преступления ужесточат

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

Как разработать детальный финансовый план и бюджет для бизнеса

Разработка детального финансового плана и бюджета — ключевой аспект успешного управления бизнесом. Этот процесс помогает предусмотреть финансовые трудности и эффективно распределить ресурсы, обеспечивая устойчивое развитие компании. В данном руководстве вы найдете пошаговый план для создания финансового плана и бюджета.

Инвестиции

Пополнил брокерский счет на 300 000 в июле. Что купил? Часть 2

Заканчивается июль, а вместе с ним и бюджет, который был выделен на инвестиции. В первой половине месяца я покупал чуть меньше акции, чуть больше облигации, а также немного фондов. Во второй половине месяца действовал примерно по тому же плану.

Пополнил брокерский счет на 300 000 в июле. Что купил? Часть 2

Новые функции и улучшения на «Клерке»: обновления за июль. Выпуск #1

В июле представили обновления: сортировка главной страницы одним кликом, новый инструмент для самозанятых, возможность монетизации для авторов в "Трибуне" и продвижение материалов в блогах компаний. Также улучшен сервис "Клерк.Работа" и введены новые функции для Бизнес Аккаунта и личного кабинета.

Новые функции и улучшения на «Клерке»: обновления за июль. Выпуск #1
2
Обзоры новостей

Налог на бездетность, Ивлеева уплатила долг, НДФЛ при манипуляциях с землей в обзоре

Интересные события в налоговой сфере.

Бухгалтеры не видят актуальных данных ЕНС и не могут сформировать электронные подписи в ЛК. 🔨«Ночной бухгалтер» № 1733

Никогда такого не было... Бухгалтеры жалуются, что в личных кабинетах невозможно посмотреть актуальную информацию по сальдо ЕНС. Данные стоят на 15, 18, 19 июля. Если написать через ЛК налоговикам, сведения обновляются, но не всем. Формировать электронные подписи многие также не могут, не отправить 3-НДФЛ, не обновить электронные подписи.

Иллюстрация: Вера Ревина/Клерк.ру
Инвестиции

Физлицам и компаниям ЕС запретили участвовать в российской схеме обмена активами

Власти Евросоюза призвали инвесторов и компании не участвовать в обмене заблокированных ценных бумаг, поскольку в этом механизме участвует подсанкционный Национальный расчетный депозитарий.

ОСАГО

ОСАГО можно оформить онлайн через Сбер

Водители могут застраховать машину онлайн за несколько минут. Достаточно ввести данные документов и выбрать страховщика на маркетплейсе Сбербанка.

Для россиян тоже установят лимит на количество сим-карт

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

Сотрудников не могут заставить сдавать отпечатки пальцев

Частные компании не имеют права проводить дактилоскопическую регистрацию сотрудников, чтобы наладить пропускной режим на объекте.

Бухгалтеры

НДС на УСН в 2025 году, выбор налогового режима, топ претензий от ФНС, и господдержка бизнеса — какие вебинары пройдут в августе 2024 года

Подготовили для вас анонс предстоящих вебинаров в августе.

НДС на УСН в 2025 году, выбор налогового режима, топ претензий от ФНС, и господдержка бизнеса — какие вебинары пройдут в августе 2024 года
Новости ФНС

ФНС начнет регистрировать личные фонды россиян

Полномочия по регистрации личных фондов для управления бизнесом, имуществом и активами перешли от Минюста к ФНС.

Интересные материалы

Личные финансы

Цены на туры в Турцию выросли до 300 000 рублей за среднюю путевку

Итоги первой половины лета показали, что отдых на море в этом году стал для россиян дороже еще на несколько десятков процентов. Подорожало все — и гостиницы, и перелеты, и пакетные туры. Причем не только за границей, но и в России.