Использование объекта 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С: УНФ, полноценно развивать бизнес и увеличить доход!

Записаться

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


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

ЦБ определил алгоритм оценки долговой нагрузки при увеличении платежей по кредиту

При увеличении среднемесячного платежа по потребительскому займу (кредиту) микрофинансовые организации (МФО) должны ориентироваться на предыдущие значения, рассчитанные в рамках обязательных процедур. Это исключает учет изменений, связанных с просрочками или льготными периодами.

17 банков из топ-20 снизили ставки по вкладам за первую половину марта

В марте банки активно меняли условия по депозитам. В частности, в течение первой половины марта 2025 года 17 банков из топ-20 понизили ставки по вкладам.

Более половины россиян интересуются покупкой инвестмонет

51,7% опрошенных рассматривают возможность инвестирования в монеты из драгметаллов уже в этом году, 36,3% еще не определились, будут ли приобретать инвестмонеты на горизонте года, а 11,9% совсем не рассматривают такой возможности.

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

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

💳 ЦБ разграничил действие самозапрета на кредиты: можно ограничить новые займы, сохранив доступ к старым картам

Самозапрет на оформление новых кредитов не затрагивает операции по старым кредитным картам. Регулятор подтвердил это в официальном документе.

Оплата по QR будет доступна клиентам Сбера в Турции

Сбер проводит тестирование оплаты покупок в Турции через свое мобильное приложение с использованием QR-кодов. Уже начато внедрение данной функции в СберБанк Онлайн. Полноценный запуск для всех клиентов запланирован на конец марта.

Яндекс планирует выпустить биржевые облигации

МКПАО «Яндекс», головная компания группы Яндекса, намерена выпустить биржевые неконвертируемые облигации. Программу облигаций и проспект ценных бумаг утвердил совет директоров Яндекса.

Лилия

годовая отчетность

Добрый день! Мы малое предприятие на упрощенной системе налогообложения, за предыдущие годы сдавали упрощенную бухгалтерскую отчетность ( только 1 и 2 ф.). Появилась...

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

Эксперт:

Сергей Верещагин

Сергей Верещагин
Эксперт

Добрый день!

Скажем так: вы имеете право к балансу и ф. 2 добавить разъяснения, если, опять таки по вашему мнению, в них следует указать информацию...

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

Бегаю в 5 утра, проверяю контрагентов каждый день – что ещё вам нужно для уверенности?

Сервис «Проверка контрагентов» теперь обновляется каждый день. Доступна бухгалтерская отчётность, лицензии и другие важные данные. Бесплатно, удобно и актуально.

Бегаю в 5 утра, проверяю контрагентов каждый день – что ещё вам нужно для уверенности?
43

О первичных учетных документах, обязательных реквизитах и оптимальной схеме документооборота

Уж сколько раз твердили миру…

Инвестиции

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

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

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

Что делать, если ФНС не возвращает проценты?

Рассмотрим возврат процентов на сумму излишне взысканных денежных средств.

Точка безубыточности: где заканчивается боль и начинается кайф

Варианты расчёта точки безубыточности.

Точка безубыточности: где заканчивается боль и начинается кайф

Экспертный анализ: Как мебельщикам защититься от потребительских исков? Разбор решения Павлово-Посадского суда

23 июля 2024 года Павлово-Посадский городской суд Московской области отказал потребителю в иске к Индивидуальному предпринимателю Р. (производителю мебели) о взыскании 562 тыс. руб. неустойки, 50 тыс. руб. морального вреда и других требований.

В новых регионах запустят пилотный проект по охране интеллектуальной собственности

Минэкономразвития и Роспатент запустят пилотный проект по охране интеллектуальной собственности в воссоединенных регионах.

Роспатент: за шесть лет российский бизнес удвоил аренду успешных отечественных брендов

За 12 месяцев 2024 года зарегистрировал более 8,2 тыс. распоряжений правом по договорам коммерческой концессии в отношении товарных знаков. Количество сделок франчайзинга таким образом увеличилось на 18%. Их инициаторами стали отечественные предприниматели, которые тиражируют эффективные бизнес-проекты.

МВД: «сдача аккаунта в аренду – билет в мир киберпреступности». Полиция придет к его формальному владельцу

Сегодня в сети можно встретить многочисленные предложения сдать свой аккаунт в мессенджерах в аренду за вознаграждение. Это очередной способ «легкого» заработка, который может привести к серьезным последствиям, предупреждает киберполиция МВД.

Росреестр опроверг введение нового налога на хозпостройки

Недавно в ряде СМИ появились сообщения о том, что с 1 марта 2025 года в России якобы ввели обязательный налог на отдельные капитальные строения, расположенные на территории дачных участков (дома, бани, гаражи и т.д.).

Ведение бизнеса

Яндекс Еда зафиксировала абсолютный рекорд заказов 8 Марта

В Международный женский день Яндекс Еда впервые выполнила более 1 млн заказов за день. Это самый высокий показатель за всю историю сервиса в России.

Счетная палата установила рекордный экономический эффект от своей деятельности в прошлом году

Счетная палата приступила к подведению итогов своей деятельности в 2024 году. 13 марта годовой отчет о работе ведомства был представлен председателем СП Борисом Ковальчуком на комитете Совета Федерации по бюджету и финансовым рынкам.

⚡ Золото против санкций: почему мир бросает доллар и выкупает весь металл? Когда же он устанет расти?

Пока Китай, Ближний Восток и Латинская Америка загружают резервы золотом, аналитики предрекают $3000 за унцию. Но что произойдет, если крупнейшие покупатели просто исчезнут?

⚡ Золото против санкций: почему мир бросает доллар и выкупает весь металл?  Когда же он устанет расти?

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

Инвестиции

Пополнил брокерский счёт на 200 000 в марте. Что купил? Часть 1

Вот и середина марта, значит четверть плана на год выполнена, ведь в марте снова удалось пополнить портфель на 200 000 рублей. Рынок находится в ожидании позитивных новостей, а покупки ждут, когда я про них расскажу. Время настало. Кроме пополнения также пришли купоны и вычет по ИИС, удалось неплохо пошопиться.

Пополнил брокерский счёт на 200 000 в марте. Что купил? Часть 1