1с msscriptcontrol scriptcontrol класс не зарегистрирован
В принципе, выше перечисленной информации хватит, что бы реализовать универсальную функцию выполнения скриптов на языках VBScript и JScript. Параметры нашей функции будут такими:
- ЯзыкСкрипта - строка, язык, на котором будет исполняться код;
- КодФункции - строка, функция, написанная на скриптовом языке;
- ИмяФункции - строка, имя функции, которую передаем через параметр КодФункции;
- Параметры - массив, значения параметров функции.
// Функция выполняет скрипт на языке VBScript или JScript.
//
// Параметры
// ЯзыкСкрипта - Строка - "VBScript" или "JScript";
// КодФункции - Строка - код функции на языке скрипта;
// ИмяФункции - Строка - имя выполняемой функции;
// ПараметрыФункции - массив - параметры выполняемой функции;
//
// Возвращаемое значение
// Произвольный - результат выполнения функции.
//
Функция ВыполнитьСкрипт(ЯзыкСкрипта, КодФункции, ИмяФункции, ПараметрыФункции = Неопределено)
Script = Новый COMОбъект("MSScriptControl.ScriptControl.1");
Script.Language = ЯзыкСкрипта;
СтрокаПараметров = "";
Если ПараметрыФункции <> Неопределено Тогда
Для Индекс = 0 По ПараметрыФункции.Количество() - 1 Цикл
СтрокаПараметров = СтрокаПараметров + ",ПараметрыФункции[" + Строка(Индекс) + "]";
КонецЦикла;
КонецЕсли;
СтрокаВызова = "ВозвращаемоеЗначение = Script.Run(""" + ИмяФункции + """" + СтрокаПараметров + ")";
ВозвращаемоеЗначение = Неопределено;
Попытка
Script.AddCode(КодФункции);
Выполнить(СтрокаВызова);
Исключение
ГдеОшибка = "";
КакаяОшибка = 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", мПараметры);
Описание ошибки:
После установки сервера 1С: Предприятия x64-версии. Ошибка при вызове конструктора (COMОбъект): -2147467225(0x80004027): Этот компонент или приложение содержит отключенные компоненты. Для конструктора Новый COMОбъект("MSScriptControl.ScriptControl") в коде механизма версионирования конфигурации 1С: Управление торговлей, ред. 10.3, релиз 10.3.55.1. Релиз платформы 1С: Предприятия - 8.3.13.1809. Версия сервера Windows - Windows Server 2008 R2 Datacenter.
Немного к слову - был удивлен такого рода ошибкой в добавленном в УТ механизме версионирования, который был максимально выдернут из комплексной ред. 1.1 и помещен в Управление торговлей 10.3: при аналогичном переводе конфигурации 1С: Комплексная на сервер x64 на другом сервере (Windows Server 2008 R2 Standart) после перехода ошибка не возникала.
Нажатие на изображении увеличит его
: Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Этот компонент или приложение содержит отключенные компоненты.
Описание решения проблемы состояло в создании Приложения COM+ с определенным набором параметров, связанных с MSScriptControl.ScriptControl. Последовательность действий следующая:
1. Запускаем "Службу компонентов" через командную строку %windir%\system32\comexp.msc или через "Панель управления" - "Администрирование" - "Службы компонентов".
2. В ветке "Корень консоли" - "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Приложения COM+" добавляем новое приложение, выбрав пункт контекстного меню "Создать" - "Приложение".
3. Откроется "Мастер установки приложений COM+". На шаге "Установка или создание нового приложения" выбирается вариант "Создать новое приложение".
Нажатие на изображении увеличит его
4. Шаг "Создание нового приложения". Ввести имя нового приложения. Для удобства понимания можно указать "1C_ScriptControl". Так же выбрать значение "Способа активации" - "серверное приложение".
5. На шаге ""Удостоверение приложения" выбрать учетную запись для запуска приложения - значение "Локальная служба - встроенная учетная запись службы".
6. На шаге "Добавление ролей приложения" оставить по умолчанию.
7. На следующем шаге "Добавление пользователей для ролей" через кнопку "Добавить" для ветки "Users" (пользователи) "Все", выполнив поиск среди пользователей и групп.
8. На следующем шаге на строке "Компоненты" в ветке созданного приложения " 1C_ScriptControl " через контекстное меню "Создать" - "Компонент".
Нажатие на изображении увеличит его
Важное замечание, если база серверная, то и пользователь, под которым будет выполняться компонента, должен быть таким же, что и тот, под который работает служба "Агент сервера 1С: Предприятие" в службах. Например, если служба агента сервера запущена под локальной системой (локальной системной учетной записью), то и компонент должен быть настроен под учетную запись локальной службы. Или если агент сервера работает под пользователем по умолчанию USR1CV8, то и компонента должна работать под "указанным пользователем".
Нажатие на изображении увеличит его
Нажатие на изображении увеличит его
Тогда в в ветке "Роли" созданного приложения " 1C_ScriptControl " нужно корректно настроить пользователей. В данном примере будет добавление прав для группы пользователей. Для этого вызываем контекстное меню и в подменю "Создать" выбираем "Пользователь".
Используя форму "Выбор: пользователи или группы", нажимая на кнопку "Дополнительно. ", выполняя "Поиск", находим группу "Все".
И последовательно нажимая кнопки "ОК" в формах в результате увидим, что группа "Все" будет добавлена в "Пользователи". После этого отказа в доступе не должно быть. Так же можете настроить и по каждому пользователю в отдельности. Но, кажется, для стабильной работы приложения - это лишнее, и группы пользователей достаточно.
1. Заходим в Панель управления → Администрирование → Службы компонентов.
2. Переходим к ветке Компьютеры → Мой компьютер → Приложения COM+.
3. В контекстном меню выбираем Создать → Приложение. Откроется Мастер установки приложений COM+.
3. В контекстном меню выбираем Создать → Приложение. Откроется Мастер установки приложений COM+.
10. В контекстном меню выбираем Создать → Компонент. Откроется Мастер установки компонентов COM+.
13. Выбираем файл <ваш каталог платформы 1С>\bin\comcntr.dll.
15. Переходим к ветке V8хххCOMConnector.
ОС: Windows Server 2012R2. Сервер 1С x64.Клиент 1С v8.3.5.1186
Скачал Windows Script Control
Зарегистрировал: regsvr32 <Путь к установленному Windows Script Control >
Не помогло.
Решение:
Проверяем в 1С — работает.
Когда появляется ошибка 2147221164?
Рассматриваемая ошибка появляется из-за конфликта версий 1С, которые в данный момент устанавливают между собой соединение. Разберем подробнее. Информационные БД 1С производят обмен данных при помощи СОМ-соединения. И, если, например, платформа 1С:Предприятие конфигурации 8.3 пытается установить связь с 1С версии 8.1, то на этом этапе при попытке подключения к СОМ-серверу и выскакивает данная ошибка.
Для начала определим, что у сервера 1С есть несколько версий:
- 32-битная 8.1 (х86).
- 64-битные 8.2 и 8.3 (х64).
Неполадки появляются на самом сервере с БД. Корень проблемы в том, что версии 1С архитектуры х64 не могут напрямую обратиться к 32-битной библиотеке comcntr.dll. В этом случае соединение происходит при помощи приложений СОМ+, способных взаимодействовать с библиотеками х86.
Справляемся с проблемой
Регистрируем библиотеку comcntr.dll
Создаем новое приложение СОМ+
Далее действуем следующим образом.
Введите имя нового приложения 1CV8_ComConnect
Может быть вам полезно: Обнаружено нарушение целостности системы в 1C что делать.
Мы рассмотрели соединение с базой из программы 1С:Предприятие версии 8.3. Если планируется устанавливать коннект с БД 8.1 из версии 1С 8.2, то нужно добавить нового пользователя. Переходим по пути 1CV8_ComConnect → Роли → CreatorOwner → Пользователи и добавляем новую учетную запись User1CV82, под которой будет производиться запуск сервера 1С версии 8.2.
Решить данную проблему можно двумя способами.
Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.
Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.
Перед этим нам необходимо изменить Параметры контроль учетной записи.
Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.
Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.
В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.
Там выбрать Изменить параметры контроля учетных записей.
Затем поставить ползунок в самом нижнем положении.
И перезапустить компьютер.
После перезагрузки необходимо:
У нас откроется Командная строка, где нам необходимо ввести команду:
1.Для платформы x86
2.Для платформы х64
Затем нажать клавишу Enter.
Если все сделали правильно, то увидите вот такое окно.
После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.
Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.
Особенности
Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.
Убедиться в причине ошибки возможно, если посмотреть логи системы.
Устранение:
Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.
Для правки использовалась оснастка Локальные пользователи и группы (lusrmgr.msc) — это инструмент, предназначенный для управления локальными пользователями и группами. Локальный пользователь или группа — это учетная запись, которой могут быть предоставлены разрешения и права на вашем компьютере.
Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.
Так что нельзя однозначно сказать, что же решило проблему.
В большинстве случаев уйти от дополнительной настройки операционной системы возможно, если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.
В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.
Бывает такое: вы прописываете для компонента пользователя и пароль.
Интересные темы:
Описание ОПИСАНИЕ ОТЗЫВЫ ХАРАКТЕРИСТИКИ ОПЛАТА и ДОСТАВКА Интерактивный тренажёр по математике к учебнику Л.Г. Петерсон…
Что такое "1Софт"? "1Софт" - это сеть партнеров фирмы "1С", которые занимаются поставками программного обеспечения…
Книга представляет собой пособие, позволяющее быстро освоить приемы разработки и модификации прикладных решений на платформе…
Установка сравнением и объединением подразумевает анализ разницы для каждого объекта в конфигурации 1С. При этом…
это пароль от доступа к Users на сайте 1С, вы должны были зарегистрировать купленную программу…
Читайте также: