где выполняется код? #785179


#0 by vde69
есть некий кусок кода, проблемы в нем возникают при работе с COM (ошибка прав) для понимания я включил туда следующий код который всегда "???" #Если Сервер Тогда     Сообщить("Выполняется на сервере"); #ИначеЕсли  Клиент Тогда     Сообщить("Выполняется на клиенте"); #ИначеЕсли  ВнешнееСоединение Тогда     Сообщить("Выполняется в COM соединении"); какие будут предложения?
#1 by Волшебник
сделай запись в журнал регистрации
#2 by EugeniaK
Какая платформа? Я бы еще попробовала варианты НаСервере ТолстыйКлиентОбычноеПриложение НаКлиенте ТолстыйКлиентУправляемоеПриложение ТонкийКлиент
#3 by Ёпрст
#4 by Ёпрст
#5 by Ёпрст
Ты это, всё пробуй :)
#6 by Лефмихалыч
если COM, то это либо внешнееСоединение, либо Сервер. Что за ошибка-то?
#7 by vde69
код выполняется на сервере через вероятно директивы банально не работают для "Выполнить"
#8 by Лефмихалыч
ты ошибку-то покажешь или как?
#9 by NafBF
я тоже делал по Выполнить(...) и все тоже, видимо при Выполнить(...) всё игнорируется
#10 by GedKo
"Выполнить" отрабатывается в контексте собственного вызова.
#11 by Torquader
А если из "выполнить" вызывается функция на сервере, то контекст-то поменяется.
#12 by vde69
ошибка {}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147024891(0x80070005): Отказано в доступе. код
#13 by Serginio1
Выполняются в БезопасныйРежим
#14 by Вафель
А у пользователя КОМ есть права администратора?
#15 by EugeniaK
Начни с выполнения примера кода без "Выполнить"
#16 by Господин ПЖ
виндовая ошибка с доступом... может антивиь думает что вирус лазит?
#17 by vde69
ошибка возникает из-за того, что выполнение на сервере идет под учеткой службы 1с, а она локальная... а мне нужна доменная учетка... вот теперь чешу репу чего делать... переносить код на клиент - не хочется, гемороя много...
#18 by Вафель
а чтобы сервер под доменом не запустить?
#19 by Лефмихалыч
запускай службу под доменной учеткой или wmic /node:[targetIPaddr] /user:[admin] process call create
#20 by Serginio1
А ты внутри выполнить проверь
#21 by Serginio1
А ком то 64 разрядный? или это exe
#22 by Garykom
Выкинуть COM не предлагать?
#23 by Вафель
А как еще? компоненту писать?
#24 by Garykom
уже 3 года прошло
#25 by Garykom
+ "REST интерфейс позволяет читать данные 1С:Предприятия, изменять их, создавать новые объекты данных и удалять существующие."
#26 by Вафель
Те ты предлагаешь внешнюю прогу писать, которая бы дергала рест от 1с?
#27 by Garykom
А писать внешнюю прогу которая дергает по COM 1С не нуна?
#28 by Вафель
Тут 1с дергает по кому wmc
#29 by Fragster
Инструкции препроцессора Для указания разрешения использования процедур и функций общих модулей и модулей объектов используют инструкции препроцессора. Синтаксис:    где:    <Логическое выражение> = [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора>]…]    <Символ препроцессора> = {НаКлиенте | НаСервере | ТолстыйКлиентОбычноеПриложение | ТолстыйКлиентУправляемоеПриложение | Клиент | Сервер | ВнешнееСоединение }    <Булева операция> = {И | ИЛИ} Используемые термы: Регистр букв (строчные или заглавные) при написании не имеет значения. Описание использования: Группировка и свертка групп строк в модулях на встроенном языке    #Область [<Имя области>]    …    #КонецОбласти [<Имя области>] – это идентификатор, который будет использоваться для отображения заголовка области, когда область свернута. Если <Имя области> отсутствует, не является  идентификатором или состоит из нескольких идентификаторов, будет выдаваться синтаксическая ошибка. При редактировании модуля, в случае, если имя области не указано, при отображении свернутой области будет использована не локализуемая строка вида "[.....]". Эти инструкции препроцессора ни на что не влияют. При формировании клиентской части модулей в управляемом приложении, инструкции вырезаются из формируемого клиентского модуля и, соответственно, в клиентское приложение не передаются. Инструкции препроцессора #Область и #КонецОбласти должны быть парными. Они не могут пересекаться с другими инструкциями препроцессора. Такой код вызовет ошибки компиляции модуля. #Область Обл1 … #Если Клиент Тогда … #КонецОбласти … #КонецЕсли Инструкции препроцессора #Область и #КонецОбласти могут быть вложенными, т.е. обозначать области, вложенные друг в друга: #Область Обл2 … … #КонецОбласти … #КонецОбласти Поскольку единственное назначение инструкций препроцессора #Область и #КонецОбласти состоит в обозначении группируемых или группируемых и сворачиваемых строк в модулях на встроенном языке, не поддерживается пересечение этих инструкций с другими группируемыми конструкциями встроенного языка, например с процедурами/функциями, условными операторами, циклами. Правильно: #Область Обл1 … … КонецПроцедуры … #КонецОбласти Неправильно (группируемые части модуля пересекаются): #Область Обл1 … Процедура Проц1 … #КонецОбласти … КонецПроцедуры В варианте клиент-сервер Если используется клиент–серверный вариант запуска системы "1С:Предприятие", то можно организовывать выполнение различных процедур и функций на сервере приложения или на клиентском месте.    Для выполнения на сервере (инструкции Сервер и НаСервере равнозначны):    #Если НаСервере Тогда    …    #КонецЕсли    Для того, чтобы процедура присутствовала и была вызвана на стороне сервера, фрагмент кода должен выглядеть следующим образом:    #Если Сервер Тогда Важно! В приведенном тексте ВСЯ процедура, а не ее часть находится внутри блока #Если Сервер Тогда … #КонецЕсли. При запуске конфигурации на выполнение производится загрузка и компиляция конфигурации. Экземпляры всех общих модулей создаются как на серверной, так и на клиентской стороне. Если в каком-то из общих модулей содержится приведенный фрагмент кода, то он в соответствии с инструкцией препроцессора #Если Сервер Тогда … #КонецЕсли будет скомпилирован только на стороне сервера, а на стороне клиента данный фрагмент «выпадет» из компилируемого текста и, таким образом, процедура на стороне клиента не будет представлена совсем. Далее, при компиляции на стороне клиента модулей, в которых содержится обращение к данной процедуре, будет произведен ее поиск на стороне клиента. На стороне клиента таковой процедуры нет, следовательно, она не будет найдена. Тогда будет произведен поиск процедуры в общих модулях на стороне сервера, где она будет обнаружена и все вызовы будут переправляться для выполнения на сервер "1С:Предприятия". Если блок #Если Сервер Тогда … #КонецЕсли включает только часть процедуры, то процедура будет присутствовать как на стороне клиента, так и на стороне сервера. Только на клиентской стороне она будет без той части, которая заключена в блок, поэтому результат выполнения процедуры может зависеть от того, где обрабатывается вызов этой процедуры.    Для выполнения на клиентском месте в обычном и управляемом режиме:    #Если НаКлиенте Тогда    …    #КонецЕсли    или    #Если Клиент Тогда    …    #КонецЕсли Инструкция препроцессора НаКлиенте (AtClient) определена для всех клиентских приложений. Для тонкой подстройки модуля под конкретное клиентское приложение дополнительно введены инструкции ТолстыйКлиентОбычноеПриложение (ThickClientOrdinaryApplication), ТолстыйКлиентУправляемоеПриложение (ThickClientManagedApplication), ТонкийКлиент (ThinClient) и ВебКлиент (WebClient), которые определены в соответствующих приложениях.    Для выполнения на клиенте:    #Если ТолстыйКлиентОбычноеПриложение Тогда    …    #КонецЕсли    #Если ТолстыйКлиентУправляемоеПриложение Тогда    …    #КонецЕсли    Для выполнения на тонком клиенте:    #Если ТонкийКлиент Тогда    …    #КонецЕсли    Для выполнения на веб-клиенте:    #Если ВебКлиент Тогда    …    #КонецЕсли В файл–серверном варианте В обычном клиенте в обычном и управляемом режиме доступны НаКлиенте, Клиент, ТолстыйКлиентОбычноеПриложение, ТолстыйКлиентУправляемоеПриложение , НаСервере, Сервер. В файловом варианте инструкции препроцессора #Если Сервер…, #Если Клиент…, #Если ТолстыйКлиентОбычноеПриложение или #Если ТолстыйКлиентУправляемоеПриложение… определены всегда, поэтому экземпляр кода будет присутствовать всегда. В тонком клиенте доступны – ТонкийКлиент, НаКлиенте, Клиент. На серверной части тонкого клиента – Сервер, НаСервере. Во внешнем соединении – ВнешнееСоединение, НаСервере, Сервер. В сессии СОМ-соединения Для включения возможности использования процедур и функций в сессии внешнего соединения применяется инструкция препроцессора ВнешнееСоединение.    #Если ВнешнееСоединение Тогда    …    #КонецЕсли Особенности использования инструкций препроцессора совместно с директивами компиляции см. в главе "Директивы компиляции". В мобильном приложении (клиент) Для включения возможности использования процедур и функций в мобильном приложении на стороне клиента применяется инструкция препроцессора МобильноеПриложениеКлиент. Директива действует независимо от Клиент, то есть код одновременно и Клиент и МобильноеПриложениеКлиент.    #Если МобильноеПриложениеКлиент Тогда    …    #КонецЕсли В мобильном приложении (сервер) Для включения возможности использования процедур и функций в мобильном приложении на стороне сервера применяется инструкция препроцессора МобильноеПриложениеСервер. Директива действует независимо от Сервер, то есть код одновременно и Сервер и МобильноеПриложениеСервер.    #Если МобильноеПриложениеСервер Тогда    …    #КонецЕсли --------------------------------------------------------------------------------
#30 by Garykom
С фига ли? Или ТС обращается по COM к базе 1С и она дергает по COM WMI ? Идиотизм...
#31 by Вафель
тут классическая задача отключить пользователей в 1с, которые отключены в домене
#32 by Garykom
Эээ ничего не понял. Вы телепат или просто ТС это сказал? Где?
#33 by vde69
об этом в коде написано.... собственно я придумал как сделать, правда не уверен, что будет универсально...
#34 by Garykom
ага терь вижу Просто не совсем логично из 1С проверять список заблокированных в домене и отрубать их в 1С. Логичнее скриптик для оси который юзеров проверяет и создает/включает/отключает учетки в 1С.
#35 by Garykom
+ Потому что оси то они разные бывают, к примеру AD DC может быть и на linux'е.
#36 by Torquader
Да, может, только там и по OLE никуда не сходишь и WMI не будет - так что, в любом случае, будет зависимо от системы. Поэтому, проще писать или скрипт или службу, которая получает данные о пользователях домена, а потом вызывает 1С и выполняет синхронизацию с полученными данными.
#37 by vde69
вот собственно код который вроде корректно работает, есть проблема с полем AccountExpirationDate, кроме как через попытку не нашел решения, если кто подскажет будет совсем хорошо
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С