- m_i_kuznetsov
- Размышления о разработке программного обеспечения и информационных систем
- То, что действительно важно, но чему нигде не учат
- Использование объекта Microsoft Script Control в среде 1С:Предприятие v7.7
- АйТиБложик
- Добавление поддержки VBScript и JScript — расширяем возможности 1С
- Поиск подходящего COM-объекта
- Свойства объекта
- Методы объекта
- Пример использования
- Использование объекта Microsoft Script Control в среде 1С:Предприятие v7.7
- Объект Microsoft Script Control
- Примеры работы
- Информация msscript.ocx — скачать и исправить
- Исправьте ошибки msscript.ocx
- Информация о файле
- Наиболее распространенные проблемы с файлом msscript.ocx
- msscript.ocx
- Как исправить ошибки msscript.ocx всего за несколько шагов?
- Шаг 1.. Сканирование компьютера на наличие вредоносных программ.
- Шаг 2.. Обновите систему и драйверы.
- Шаг 3.. Используйте средство проверки системных файлов (SFC).
- Шаг 4. Восстановление системы Windows.
m_i_kuznetsov
Размышления о разработке программного обеспечения и информационных систем
То, что действительно важно, но чему нигде не учат
Одно из решений задачи динамической генерации и выполнения кода заключается в использовании некоторого стороннего движка-интерпретатора скриптового языка (см. «Динамическая генерация кода»). Такое решение есть у корпорации Microsoft под названием MS Script Control. Немного почитать о нём можно здесь и здесь.
По сути, MS Script Control является ActiveX-компонентом, который представлен в двух версиях: 32- и 64-разрядной. Обычно обе версии компонента ставятся вместе с ОС Windows. Найти их можно в виде файлов msscript.ocx в каталогах %SYSTEMROOT%\System32 и %SYSTEMROOT%\SysWOW64 соответственно. В некоторых случаях 32-разрядную версию следует искать в подкаталогах %SYSTEMROOT%\winsxs.
Для работы с MS Script Control следует добавить в проект ссылку на COM-компонент MSScriptControl нужной версии. После этого вы получаете доступ к пространству имён MSScriptControl и, в частности, можете создавать экземпляры класса ScriptControlClass.
Больше плести кружева языком не буду. Приведу пример кода. Будем считать, что у нас есть проект оконного приложения с приведённым на рисунке интерфейсом пользователя.
В выпадающем списке cbLanguage указывается два пункта для выбора скриптового языка: VBScript или JScript (заметьте, что MS Script Control работает именно с JScript, а не JavaScript).
В поле «Формула» пользователь может написать некоторое выражение, а в поле «Код» — последовательность операторов. При этом, есттественно, должен соблюдаться синтаксис выбранного языка. После нажатия на кнопку «Рассчитать» в поле результата появится либо результат вычислений, либо сообщение об ошибке. Нажатие на кнопку «Выполнить» приведёт к попытке выполнения указанного пользователем кода.
В завершение сам код для нажатия обеих кнопок. Здесь, думаю, всё понятно без лишних слов.
private void btnSolve_Click(object sender, EventArgs e)
<
ScriptControlClass scc = new ScriptControlClass();
scc.Language = cbLanguage.Text;
try
<
object result = scc.Eval(txtFormula.Text);
txtResult.Text = result.ToString();
>
catch (Exception ex)
<
txtResult.Text = ex.Message;
>
>
private void btnExecute_Click(object sender, EventArgs e)
<
ScriptControlClass scc = new ScriptControlClass();
scc.Language = cbLanguage.Text;
try
<
scc.AddCode(txtCode.Text);
scc.ExecuteStatement(txtFunction.Text);
>
catch (Exception ex)
<
txtResult.Text = ex.Message;
>
>
Все существенные плюсы и минусы решения, использующего MS Script Control, происходят от его природы. С одной стороны, удобно, что нужная библиотека есть всегда под рукой. С другой стороны, использование ActiveX сталкивается с большими проблемами на 64-разрядной платформе или при использовании многопоточности. Применять MS Script Control для написания серверных компонентов однозначно не стоит.
Использование объекта Microsoft Script Control в среде 1С:Предприятие v7.7
Объект Microsoft Script Control
Объект Microsoft Script Control в среде 1С:Предприятие v7.7 может быть создан следующим образом:
После этого вы можете вызывать и использовать методы и свойства этого объекта.
Объект позволит исполнить любой код на 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-файл) вы можете скачать здесь: http://www.script-coding.info/Automation.zip . Скопируйте ALS-файл в каталог программы (например, «C:\Program Files\1Cv77\BIN\»), и в конфигураторе в синтакс-помощнике появится ветка «Некоторые объекты Automation». CHM-файл справки на русском языке по встроенным константам и функциям языка VBScript вы можете скачать здесь: http://www.script-coding.info/wsh_chm.zip . Примеры работы с объектом Microsoft Script Control вы можете также получить, рассмотрев код маленькой конфигурации для 1С:Предприятия v7.7 «Администратор 1С», которую вы можете скачать на этой страничке: http://www.script-coding.info/filez.html .
Функция читает список компьютеров, зарегистрированных в доменах локальной сети, и возвращает таблицу значений с колонками «Домен» и «Компьютер»:
Функция читает список зарегистрированных информационных баз 1С из реестра Windows и возвращает таблицу значений с колонками «Название» и «Путь»:
Процедура делает Log Off (Парам=4), Shutdown (Парам=5) или Reboot (Парам=6) выбранному компьютеру:
АйТиБложик
Маленький IT блог с характером 1С.
Добавление поддержки VBScript и JScript — расширяем возможности 1С
- Получить ссылку
- Твиттер
- Электронная почта
- Другие приложения
Поиск подходящего COM-объекта
Свойства объекта
- AllowUI — булево, при установке Истина будут выводиться элементы пользовательского интерфейса, например MsgBox;
- CodeObject — коллекция, возвращает набор объектов, созданных с помощью метода AddObject;
- Error — объект Error, содержит информацию об ошибке в скрипте, по-умолчанию объект пустой;
- Language — строка, содержит язык скрипта, на котором будет исполняться код: VBScript или JScript;
- Modules — коллекция, содержит набор модулей;
- Procedures — коллекция, содержит набор процедур;
- SitehWnd — ссылка, дескриптор окна программы, которое будет использоваться для отображения графического интерфейса пользователя;
- State — число, описывает, как будут обрабатываться события объектов, добавленные с помощью метода AddObject, по-умолчанию 0;
- Timeout — число, максимальное время исполнения скрипта в миллисекундах, по истечению которого будет сгенерирована ошибка, по-умолчанию 10000;
- UseSafeSubset — булево, при установке Истина скрипт выполняется в безопасном режиме, по-умолчанию Ложь. Используйте это свойство, если скрипт может нанести вред вашему компьютеру.
Методы объекта
- AddCode — добавляет код, процедуру или функцию в объект ScriptControl;
- AddObject — добавляет объект, который доступен в скрипте. Вряд ли в 1С этот метод будет активно использоваться;
- Eval — выполняет программный код и возвращает результат выполнения. Можно выполнять произвольный код, а так же функции, добавленные с помощью метода AddCode;
- ExecuteStatement — выполняет одну инструкцию (процедуру или фнкцию), урезанная версия метода Run, так как нельзя передавать аргументы;
- Reset — реинициализирует обработчик сценариев ScripControl (сбрасывает все значения), как будто вы его только что создали;
- Run — выполняет указанную процедуру или функцию, добавленную с помощью метода AddCode и возвращает результат выполнения;
Пример использования
В принципе, выше перечисленной информации хватит, что бы реализовать универсальную функцию выполнения скриптов на языках VBScript и JScript. Параметры нашей функции будут такими:
- ЯзыкСкрипта — строка, язык, на котором будет исполняться код;
- КодФункции — строка, функция, написанная на скриптовом языке;
- ИмяФункции — строка, имя функции, которую передаем через параметр КодФункции;
- Параметры — массив, значения параметров функции.
Возвращать функция конечно же будет результат выполнения скрипта. Что ж, приступим к реализации:
// Функция выполняет скрипт на языке VBScript или JScript.
//
// Параметры
// ЯзыкСкрипта — Строка — «VBScript» или «JScript»;
// КодФункции — Строка — код функции на языке скрипта;
// ИмяФункции — Строка — имя выполняемой функции;
// ПараметрыФункции — массив — параметры выполняемой функции;
//
// Возвращаемое значение
// Произвольный — результат выполнения функции.
//
Функция ВыполнитьСкрипт(ЯзыкСкрипта, КодФункции, ИмяФункции, ПараметрыФункции = Неопределено)
Script = Новый COMОбъект(«MSScriptControl.ScriptControl.1»);
Script.Language = ЯзыкСкрипта;
СтрокаПараметров = «»;
Если ПараметрыФункции <> Неопределено Тогда
Для Индекс = 0 По ПараметрыФункции.Количество() — 1 Цикл
СтрокаПараметров = СтрокаПараметров + «,ПараметрыФункции[» + Строка(Индекс) + «]»;
КонецЦикла;
КонецЕсли;
СтрокаВызова = «ВозвращаемоеЗначение = Script.Run(«»» + ИмяФункции + «»»» + СтрокаПараметров + «)»;
ВозвращаемоеЗначение = Неопределено;
Попытка
Script.AddCode(КодФункции);
Выполнить(СтрокаВызова);
Исключение
ГдеОшибка = «<" + Script.Error.Line + ", " + Script.Error.Column + ">«;
КакаяОшибка = Script.Error.Source + «: » + Script.Error.Description;
Если Не ПустаяСтрока(Script.Error.Text) Тогда
КакаяОшибка = КакаяОшибка + » (» + Script.Error.Text + «)»;
КонецЕсли;
ВызватьИсключение ГдеОшибка + » » + КакаяОшибка;
КонецПопытки;
Возврат ВозвращаемоеЗначение;
Код функции простой, используется два метода объекта ScriptControl — это AddCode и Run, а так же указывается язык скрипта. Пример вызова функции, которая прибавляет один день к текущей дате:
КодФункции =
«Function Tomorrow(CurDate)
|
| Tomorrow = DateAdd(«»d»», 1, CurDate)
|
|End Function»;
мПараметры = Новый Массив;
мПараметры.Добавить(ТекущаяДата());
РезультатВыплнения = ВыполнитьСкрипт(«vbscript», КодФункции, «Tomorrow», мПараметры);
Использование объекта Microsoft Script Control в среде 1С:Предприятие v7.7
Объект Microsoft Script Control
Объект Microsoft Script Control в среде 1С:Предприятие v7.7 может быть создан следующим образом:
После этого вы можете вызывать и использовать методы и свойства этого объекта.
Объект позволит исполнить любой код на 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 Files\1Cv77\BIN\»), и в конфигураторе в синтакс-помощнике появится ветка «Некоторые объекты Automation». CHM-файл справки на русском языке по встроенным константам и функциям языка VBScript вы можете скачать здесь. Примеры работы с объектом Microsoft Script Control вы можете также получить, рассмотрев код маленькой конфигурации для 1С:Предприятия v7.7 «Администратор 1С», которую вы можете скачать на главной страничке этого сайта.
Примеры работы
Функция читает список компьютеров, зарегистрированных в доменах локальной сети, и возвращает таблицу значений с колонками «Домен» и «Компьютер»:
Функция читает список зарегистрированных информационных баз 1С из реестра Windows и возвращает таблицу значений с колонками «Название» и «Путь»:
Процедура делает Log Off (Парам=4), Shutdown (Парам=5) или Reboot (Парам=6) выбранному компьютеру:
Информация msscript.ocx — скачать и исправить
Иногда система Windows отображает сообщения об ошибках поврежденных или отсутствующих файлов msscript.ocx. Подобные ситуации могут возникнуть, например, во время процесса установки программного обеспечения. Каждая программа требует определенных ресурсов, библиотек и исходных данных для правильной работы. Поэтому поврежденный или несуществующий файл msscript.ocx может повлиять на неудачное выполнение запущенного процесса.
Файл был разработан для использования с программным обеспечением . Здесь вы найдете подробную информацию о файле и инструкции, как действовать в случае ошибок, связанных с msscript.ocx на вашем устройстве. Вы также можете скачать файл msscript.ocx, совместимый с устройствами Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Vista, Windows XP, которые (скорее всего) позволят решить проблему.
Совместим с: Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Vista, Windows XP
Исправьте ошибки msscript.ocx
Информация о файле
Основная информация | |
---|---|
Имя файла | msscript.ocx |
Расширение файла | OCX |
Описание | Microsoft ® Script Control |
Программного обеспечения | |
---|---|
программа | Microsoft ® Script Control |
автор | Microsoft Corporation |
подробности | |
---|---|
MIME тип | application/octet-stream |
Тип файла | Dynamic link library |
система | Win32 |
Авторские права | © Microsoft Corporation. All rights reserved. |
Набор символов | Unicode |
Языковая треска | English (U.S.) |
Наиболее распространенные проблемы с файлом msscript.ocx
Существует несколько типов ошибок, связанных с файлом msscript.ocx. Файл msscript.ocx может находиться в неправильном каталоге файлов на вашем устройстве, может отсутствовать в системе или может быть заражен вредоносным программным обеспечением и, следовательно, работать неправильно. Ниже приведен список наиболее распространенных сообщений об ошибках, связанных с файлом msscript.ocx. Если вы найдете один из перечисленных ниже (или похожих), рассмотрите следующие предложения.
- msscript.ocx поврежден
- msscript.ocx не может быть расположен
- Ошибка выполнения — msscript.ocx
- Ошибка файла msscript.ocx
- Файл msscript.ocx не может быть загружен. Модуль не найден
- невозможно зарегистрировать файл msscript.ocx
- Файл msscript.ocx не может быть загружен
- Файл msscript.ocx не существует
msscript.ocx
Не удалось запустить приложение, так как отсутствует файл msscript.ocx. Переустановите приложение, чтобы решить проблему.
Проблемы, связанные с msscript.ocx, могут решаться различными способами. Некоторые методы предназначены только для опытных пользователей. Если вы не уверены в своих силах, мы советуем обратиться к специалисту. К исправлению ошибок в файле msscript.ocx следует подходить с особой осторожностью, поскольку любые ошибки могут привести к нестабильной или некорректно работающей системе. Если у вас есть необходимые навыки, пожалуйста, продолжайте.
Как исправить ошибки msscript.ocx всего за несколько шагов?
Ошибки файла msscript.ocx могут быть вызваны различными причинами, поэтому полезно попытаться исправить их различными способами.
Шаг 1.. Сканирование компьютера на наличие вредоносных программ.
Файлы Windows обычно подвергаются атаке со стороны вредоносного программного обеспечения, которое не позволяет им работать должным образом. Первым шагом в решении проблем с файлом msscript.ocx или любыми другими системными файлами Windows должно быть сканирование системы на наличие вредоносных программ с использованием антивирусного инструмента.
Если по какой-либо причине в вашей системе еще не установлено антивирусное программное обеспечение, вы должны сделать это немедленно. Незащищенная система не только является источником ошибок в файлах, но, что более важно, делает вашу систему уязвимой для многих опасностей. Если вы не знаете, какой антивирусный инструмент выбрать, обратитесь к этой статье Википедии — сравнение антивирусного программного обеспечения.
Шаг 2.. Обновите систему и драйверы.
Установка соответствующих исправлений и обновлений Microsoft Windows может решить ваши проблемы, связанные с файлом msscript.ocx. Используйте специальный инструмент Windows для выполнения обновления.
- Откройте меню «Пуск» в Windows.
- Введите «Центр обновления Windows» в поле поиска.
- Выберите подходящую программу (название может отличаться в зависимости от версии вашей системы)
- Проверьте, обновлена ли ваша система. Если в списке есть непримененные обновления, немедленно установите их.
- После завершения обновления перезагрузите компьютер, чтобы завершить процесс.
Помимо обновления системы рекомендуется установить последние версии драйверов устройств, так как драйверы могут влиять на правильную работу msscript.ocx или других системных файлов. Для этого перейдите на веб-сайт производителя вашего компьютера или устройства, где вы найдете информацию о последних обновлениях драйверов.
Шаг 3.. Используйте средство проверки системных файлов (SFC).
Проверка системных файлов — это инструмент Microsoft Windows. Как следует из названия, инструмент используется для идентификации и адресации ошибок, связанных с системным файлом, в том числе связанных с файлом msscript.ocx. После обнаружения ошибки, связанной с файлом %fileextension%, программа пытается автоматически заменить файл msscript.ocx на исправно работающую версию. Чтобы использовать инструмент:
- Откройте меню «Пуск» в Windows.
- Введите «cmd» в поле поиска
- Найдите результат «Командная строка» — пока не запускайте его:
- Нажмите правую кнопку мыши и выберите «Запуск от имени администратора»
- Введите «sfc / scannow» в командной строке, чтобы запустить программу, и следуйте инструкциям.
Шаг 4. Восстановление системы Windows.
Другой подход заключается в восстановлении системы до предыдущего состояния до того, как произошла ошибка файла msscript.ocx. Чтобы восстановить вашу систему, следуйте инструкциям ниже
- Откройте меню «Пуск» в Windows.
- Введите «Восстановление системы» в поле поиска.
- Запустите средство восстановления системы — его имя может отличаться в зависимости от версии системы.
- Приложение проведет вас через весь процесс — внимательно прочитайте сообщения
- После завершения процесса перезагрузите компьютер.