Использование объекта 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;
	КонецПопытки;
	Возврат Рез;
КонецФункции //КвКорень

50%

Старт обучения 15 марта 2025

Управленческий учет и финансы в 1С: УНФ

Курс для тех, кто хочет автоматизировать управленческий учет с программой 1С: УНФ, полноценно развивать бизнес и увеличить доход!

Записаться

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


Похожие материалы

Новые модели в реестре ККТ

В реестр контрольно-кассовой техники добавлены две новые модели кассовых аппаратов.

Пройти проверку по ЕГРЮЛ станет проще

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

Российский IT-дайджест: 10–16 марта 2025

Запускаем еженедельный обзор новостей российских ИТ-компаний, чтобы следить за главным на отечественном рынке технологий.

2

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

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

«Авито Услуги»: Налоговые консультанты — в тренде

По данным «Авито Услуги», спрос на налоговых консультантов для бизнеса в России с начала года вырос почти на треть.

👌 Минфин рассказал, почему повышение госпошлин это полезно

Реформа государственной пошлины, запущенная в 2024 году, сместила акцент с «выгодности» судебных разбирательств на компенсацию бюджетных расходов.

Для уменьшения ПСН на взносы ИП может подавать сколько угодно уведомлений

ИП может уменьшить патент на фиксированный взнос и на взнос 1% за текущий год, а также на эти взносы за предыдущий год, не принятые к уменьшению ранее. Причем теперь независимо от их уплаты.

Наталья

Декларация по налогу на имущество(УСН)

Добрый день, квартира в Москве в ООО на УСН, состоит на кадастровом учете, в реестре не нашли. ИФНС требует сдать декларацию по налогу на имущество. Законно...

Читать полностью

Эксперты:

Надежда Камышева и еще 1

Надежда Камышева
Эксперт

Если у вашей организации есть в собственности жилые помещения, то они облагаются налогом от кадастровой стоимости, а значит организация на УСН...

Читать полностью

😥 В ближайшие семь лет 4-дневную рабочую неделю не введут

Об этом заявила член комитета Госдумы по труду, социальной политике и делам ветеранов Светлана Бессараб.

Госзакупки

Минфин разработал законопроект о регулировании малых закупок

Документ направлен на унификацию проведения малых закупок и устанавливает единый порядок их проведения.

Быстрее и проще разблокировать счет через специальный сервис ФНС

Граждане и бизнес могут восстановить доступ к заблокированным счетам только после полного погашения налоговой задолженности. Для этого необходимо воспользоваться электронными сервисами ФНС.

Научим вести кадровый учет и считать зарплату по правилам 2025 г. в 1С:ЗУП

Мы записали новый прикладной курс повышения квалификации «Зарплата, кадры и воинский учет в 1С: ЗУП». Вы научитесь настраивать ПО и выполнять все операции по кадровому и воинскому учету, расчету налогов и подготовке отчетности в последней версии 1С:ЗУП. После обучения вы сможете использовать новые функции программы и с легкостью решать в ней любые задачи.

Научим вести кадровый учет и считать зарплату по правилам 2025 г. в 1С:ЗУП

👨‍🦯Налоговики объяснили, что делать с НДФЛ, больничным и районным коэффициентом, а Егоров сегодня засветился на костылях. «Ночной бухгалтер» № 1893

Бухгалтеры бурно обсуждают новость дня — глава налоговой службы появился на съезде РСПП на костылях и с иронией прокомментировал это событие.

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

🏢 Готовится закон против подделки протоколов собраний собственников квартир

В Госдуме идет работа над законопроектом, который направлен на борьбу с подделкой протоколов собраний собственников помещений многоквартирных домов (МКД).

Установлен срок подачи заявления на индексацию присужденных сумм

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

НДС

Налоговики предостерегли от незаконных схем снижения НДС и покупки «бумажного НДС»

С приближением сроков подачи налоговых деклараций по НДС ведомство делает акцент на достоверности представляемых данных.

Общество

10 лучших городов для жизни в мире

В прошлом году рейтинг лучших стран мира возглавила Швейцария, а Вена и Валенсия признаны наиболее комфортными городами для жизни. По критерию баланса между работой и отдыхом первенство держат города Финляндии, Швеции, Чехии и Дании. Столица и курортные локации Испании признаны лучшим направлением для цифровых кочевников, а Сингапур — для развития бизнеса.

10 лучших городов для жизни в мире
ФСБУ Запасы

НКО не обязаны всегда применять стандарт учета запасов

Некоммерческие организации могут не применять ФСБУ 5/2019 «Запасы», если ресурсы используются для управленческих нужд.

Как вести учет туристического налога в 2025 году на примере из 1С

С 01.01.2025 в НК появилась новая глава 33.1 «Туристический налог». Разберем в статье, кто его платит, в каком размере и в какие сроки, отчетность по налогу (форма и сроки предоставления), какими проводками отражается в 1С.

Как вести учет туристического налога в 2025 году на примере из 1С

Президент поручил правительству подготовить правила возвращения иностранных компаний в РФ

Некоторые иностранные компании собираются вернуться в РФ.

Путин: 28 595 санкций было введено против России

18 марта Владимир Путин принял участие в работе ежегодного съезда Российского союза промышленников и предпринимателей (РСПП).

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

В банковских приложениях появится функционал для блокировки переводов мошенникам

С октября 2025 года клиенты крупных банков смогут оперативно сообщать о мошеннических переводах через мобильные приложения. Новый функционал позволит не только заблокировать подозрительную операцию, но и автоматически получить электронную справку для обращения в полицию.