1с не работает createobject
Scripting.FileSystemObject - проблема
Для для получения списка файлов в директории использую: Set objFso =.
Траблы с Scripting.FileSystemObject
Ребят проблема такого характера не могу вернуть данные о наличии 'File.txt' в деректории X т.е.
Scripting.FileSystemObject - проблема
Почему при работе с IIS3 все было впорядке при чтении записи файлов. Сейчас при переходе на IIS4.
Укaжите, пoжaлуйстa, в кaкoм месте ругaется и приведите сooбщение oб oшибке, кoд oшибки и т.д., кaк мoжнo бoльше детaлей. Укaжите тaкже OS и тип веб серверa.
Проблема в параметрых при открытии файла.
Нужно указать все переменные. Их типы и значения, я привёл ниже
Варианты переменной F_IOMODE
ForReading=1 для чтения
ForWriting=2 для записи
ForAppening=8 для дозаписи в файл
Варианты переменной F_CREATE
True - создавать файл, если не существует
False - не создавать
Варианты переменной F_FORMAT
TristateUseDefault -2 Открытие по умолчанию, указанное системой
TristateTrue -1 Открытие в юникоде
TristateFalse 0 Открытие в ASCII.
FSO.OpenTextFile('путь к файлу',F_IOMODE,F_CREATE,F_FORMAT)
P.S MSDN ответ на большинство вопросов
Уточню - у FSO есть возможность создавать файлы и писать в файлы
Но увы FSO не позволяет сразу создав файл через FSO.CreateTextFile
тут же в него писать.
Чтобы записать в него после создания нужно после этого
писать FSO.OpenTextFile('путь к файлу',2,false,-2)
Параметр false обозначает, что нам не нужно создавать файл. Т.к мы
его уже создали.
Но проще в самой функции открытия файла указать true тогда FSO сам
создаст указанный файл и позволит в него писать
Создавать файл и открывать его для записи можно без параметров.
set f=fs.CreateTextFile('c: est est.txt')
Нужно убедиться, что аккаунт под которым работает Web-сервер имеет право записывать файлы в директорию C: est.
сooбщений oб oшибке я не пoлучaю. прoстo тaкoе впечaтление чтo file нaчинaет грузиться и зaвисaет. через notpad сoздaлa file txt, oткрылa дoступ для зaписи и тoт же резултaт.
В модуле менеджера плана обмена написано.
СпрК = ВнешнееСоединение.CreateObject("Справочник.Контрагенты");
На этой строчке вываливается ошибка "Ошибка при вызове метода контекста (CreateObject)".
При этом если база 8.2 в файловом варианте, то все работает, а если в клиент - серверном, то нет.
(1) DevilOTS,
В модуле объекта Контрагенты ничего в нет, что может на сервере не работать, сообщить() и т.п.?
Релиз 8.2 последний?
УПС. не внимательно прочитал.
Есть предположение что косяк в строке подключения.
COMConnector = Новый COMObject("V77S.Application"); // "V77.Application"
COMConnector.Initialize(COMConnector.RMTrade , "/d" + Параметры.КаталогИнформационнойБазы + " /n" + Параметры.ИмяПользователя + " /p" + Параметры.ПарольПользователя, "");
При подключении к 8 используется объект "V82.COMConnector".
Но COMConnector в 7.7 нет, и по ходу V77S.Application на сервере как-то не так отрабатывает.
Хоть и подключается.
(5) andrewks, серверная часть 1с х64.
(6) golevg, 7.7 запускается, пользователь висит в активных пользователях 7.7.
Но при этом например в глобальном модуле есть функция "ФорматС(Сумма)", так вот если я Новый COMОбъект("V77.Application") создаю на сервере то выдает ошибку метод объекта не обнаружен, а если создаю на клиенте, то возвращает результат работы функции.
(7) sbr, EvalExpr если создавать на сервере тоже не работает пишет тоже что и без неё.
Можно еще проверить учетную запись под которой работает сервер 1С.
7.7 запускается под этой учетной записью. Возможно 7.7 все таки не запускается.
В 7.7 в глобальном модуле в процедуре ПриНачалеРаботыСистемы() нужно написать какой нибудь код к примеру что бы увидеть действительно дошел ли запуск до этого момента.
Так же в ПриЗавершенииРаботыСистемы() можно напсиать что-нибудь.
По идее в Мониторе пользователя можно увидеть еще активен ли подключившийся пользователь в данный момент. Возможно в журнале регистрации так же будет какая-то ошибка.
А вот так попробуй:
v7 = Новый COMОбъект("V77.Application");
Открытие = v7.Initialize(v7.RMTrade, "/d" + Путь + " /n" + Пользователь + " /p" + Пароль, "NO_SPLASH_SHOW");
// Дальше на клиенте можно проверить.
// Если Открытие = Ложь Тогда
// Сообщить("Не удалось открыть информационная базу!");
// Возврат;
// КонецЕсли;
Контр = v7.EvalExpr("СоздатьОбъект(""Справочник.Контрагенты"")");
Контр.ВыбратьЭлементы();
Пока Контр.ПолучитьЭлемент()=1 Цикл
Я не клиенте так добираюсь к содержимому любого справочника.
Думаю, я понятно дал направление.
Мы пытались установить COM-DLL на новый сервер. Интерфейс классический ASP. Кажется, проблема связана с DLL Map Connector, но это все, что я могу понять.
Мы не можем заставить страницы, обслуживаемые IIS, выдать что-либо, кроме ошибки 500.
При отслеживании ASP:
DLL находится PCMSRV32.DLL в c:\windows
Приведенный ниже совет относится как к обоим, так Server.CreateObject и к CreateObject использованию в
Разделы веб-сервера относятся к asp-classic но все же стоит прочитать.
Что вызывает эту ошибку?
Определение источника ошибки
Если вы используете компоненты COM внутри веб-приложения ASP, вы увидите такую строку
Обычно ошибка указывает на Set строку, которая упрощает определение причины (к счастью, у вас есть хороший код трассировки, так что он даже лучше) .
Что делать, если вы не знаете, где находится DLL?
Note: Please be careful when accessing the Windows Registry as it is very easier to inadvertently make changes that have serious consequences for the Operating System and in extreme cases will require a system restore or re-install / repair.
Строка внутри CreateObject метода известна как a ProgId и используется в качестве идентификатора ключа в реестре Windows, который можно найти внутри
Note: Windows Registry can be browsed in most versions of Windows using the regedit.exe also known as the Registry Editor. Be very careful when using this tool to browse the Windows Registry.
и по расширению
улей его можно использовать, чтобы найти местоположение, просмотрев подключ
где местоположение будет сохранено в (default) значении.
Locate Scripting.FileSystemObject subkey in HKEY_CLASSES_ROOT
Identify GUID from subkey CLSID
Use GUID to find registered DLL subkey in HKEY_CLASSES_ROOT\CLSID
Check subkey InprocServer32 (default) value for the DLL location
Нет ProgId для PCMServer.PCMServer в реестре?
Если вы не можете найти соответствующий ProgId файл в реестре, это, вероятно, связано с одной из двух причин, о которых мы подробнее расскажем здесь.
Как зарегистрировать COM DLL в Windows
Прежде чем мы продолжим, очень важны как архитектура операционной системы, так и режим, используемый веб-приложением ASP.
Самое новое оборудование - 64-битное, это создает загадку в Windows, поскольку теперь оно должно поддерживать новую 64-битную архитектуру и по-прежнему поддерживать 32-битную архитектуру. Решение Microsoft заключалось в том, чтобы разделить ОС на две части, чтобы у нас были 64-битные элементы и 32-битные элементы. Основные программы ОС разбиты на две папки (только в 64-битной ОС, потому что 32-битная ОС не должна бороться с 64-битной, даже если оборудование способно на это) .
Note: On 32 Bit only systems just use the 64 Bit locations for both System Files and the Windows Registry.
В 64-битной ОС системные программы расположены в
Для 64-битных программ
Для 32-битных программ
Это также относится к реестру Windows.
Так, например, в 64-битной версии Windows следующая команда зарегистрирует файл PCMSRV32.DLL в 32-битном реестре и создаст связанные ключи реестра COM DLL.
Пул приложений IIS
Поскольку все начинает поддерживать 64-битную версию, включая IIS, вам по-прежнему необходимо иметь возможность поддерживать устаревшие приложения, которые поддерживают только 32-битный COM, поэтому IIS, представленный в IIS 6.0 (начиная с Windows Server 2003, Service Pack 1), в настройках пула приложений настраивается. свойство, Enabled32BitAppOnWin64 которое позволяет пулу приложений работать в 32-битном режиме в 64-битных версиях Windows.
Имея это в виду, прежде чем регистрировать COM-DLL, чтобы знать, где вы должны ее регистрировать, вам необходимо узнать, работает ли пул приложений в 32-битном режиме. В IIS 7.0 и выше вы можете просто проверить это в свойствах пула приложений в приложении IIS Manager. Настройка находится в разделе Advanced Settings под General разделом и вызывается Enable 32-Bit Applications (также может быть настроена при applicationHost.config использовании enable32BitAppOnWin64 в разделе) .
Если Enable 32-Bit Applications установлено значение False
Если Enable 32-Bit Applications установлено значение True
регистрация COM-DLL в 32-битном реестре в 64-битной версии Windows, когда пул приложений IIS не находится в 32-битном режиме, вызовет 500.100 ошибку внутреннего сервера ASP.
Server object error 'ASP 0177: 8007007e'
Server.CreateObject Failed
Контрольный список COM DLL
На что Enable 32-Bit Applications задан расширенный параметр пула приложений IIS , поскольку он влияет на то, как вы регистрируете COM-DLL?
Содержит ли реестр Windows файл ProgId для библиотеки DLL в папке, зависящей от архитектуры
что отражает настройку Enable 32-Bit Applications ?
Указывает ли InprocServer32 ключ правильное расположение библиотеки DLL?
В контексте учетной записи, которую я использую для доступа к COM-DLL (ApplicationIdentity, LocalSystem, NetworkService и т. Д.) , Есть ли у меня разрешение на доступ как к физическому файлу DLL, так и к записям реестра?
Мы пытались установить COM-DLL на новый сервер. Интерфейс классический ASP. Кажется, проблема связана с DLL Map Connector, но это все, что я могу понять.
Мы не можем заставить страницы, обслуживаемые IIS, выдать что-либо, кроме ошибки 500.
При отслеживании ASP:
DLL находится PCMSRV32.DLL в c:\windows
Приведенный ниже совет относится как к обоим, так Server.CreateObject и к CreateObject использованию в
Разделы веб-сервера относятся к asp-classic но все же стоит прочитать.
Что вызывает эту ошибку?
Определение источника ошибки
Если вы используете компоненты COM внутри веб-приложения ASP, вы увидите такую строку
Обычно ошибка указывает на Set строку, которая упрощает определение причины (к счастью, у вас есть хороший код трассировки, так что он даже лучше) .
Что делать, если вы не знаете, где находится DLL?
Note: Please be careful when accessing the Windows Registry as it is very easier to inadvertently make changes that have serious consequences for the Operating System and in extreme cases will require a system restore or re-install / repair.
Строка внутри CreateObject метода известна как a ProgId и используется в качестве идентификатора ключа в реестре Windows, который можно найти внутри
Note: Windows Registry can be browsed in most versions of Windows using the regedit.exe also known as the Registry Editor. Be very careful when using this tool to browse the Windows Registry.
и по расширению
улей его можно использовать, чтобы найти местоположение, просмотрев подключ
где местоположение будет сохранено в (default) значении.
Locate Scripting.FileSystemObject subkey in HKEY_CLASSES_ROOT
Identify GUID from subkey CLSID
Use GUID to find registered DLL subkey in HKEY_CLASSES_ROOT\CLSID
Check subkey InprocServer32 (default) value for the DLL location
Нет ProgId для PCMServer.PCMServer в реестре?
Если вы не можете найти соответствующий ProgId файл в реестре, это, вероятно, связано с одной из двух причин, о которых мы подробнее расскажем здесь.
Как зарегистрировать COM DLL в Windows
Прежде чем мы продолжим, очень важны как архитектура операционной системы, так и режим, используемый веб-приложением ASP.
Самое новое оборудование - 64-битное, это создает загадку в Windows, поскольку теперь оно должно поддерживать новую 64-битную архитектуру и по-прежнему поддерживать 32-битную архитектуру. Решение Microsoft заключалось в том, чтобы разделить ОС на две части, чтобы у нас были 64-битные элементы и 32-битные элементы. Основные программы ОС разбиты на две папки (только в 64-битной ОС, потому что 32-битная ОС не должна бороться с 64-битной, даже если оборудование способно на это) .
Note: On 32 Bit only systems just use the 64 Bit locations for both System Files and the Windows Registry.
В 64-битной ОС системные программы расположены в
Для 64-битных программ
Для 32-битных программ
Это также относится к реестру Windows.
Так, например, в 64-битной версии Windows следующая команда зарегистрирует файл PCMSRV32.DLL в 32-битном реестре и создаст связанные ключи реестра COM DLL.
Пул приложений IIS
Поскольку все начинает поддерживать 64-битную версию, включая IIS, вам по-прежнему необходимо иметь возможность поддерживать устаревшие приложения, которые поддерживают только 32-битный COM, поэтому IIS, представленный в IIS 6.0 (начиная с Windows Server 2003, Service Pack 1), в настройках пула приложений настраивается. свойство, Enabled32BitAppOnWin64 которое позволяет пулу приложений работать в 32-битном режиме в 64-битных версиях Windows.
Имея это в виду, прежде чем регистрировать COM-DLL, чтобы знать, где вы должны ее регистрировать, вам необходимо узнать, работает ли пул приложений в 32-битном режиме. В IIS 7.0 и выше вы можете просто проверить это в свойствах пула приложений в приложении IIS Manager. Параметр находится в положении Advanced Settings под General секцией и называется Enable 32-Bit Applications (также может быть сконфигурированы в applicationHost.config использовании enable32BitAppOnWin64 под секцией) .
Если Enable 32-Bit Applications установлено значение False
Если Enable 32-Bit Applications установлено значение True
регистрация COM-DLL в 32-битном реестре в 64-битной версии Windows, когда пул приложений IIS не находится в 32-битном режиме, вызовет 500.100 ошибку внутреннего сервера ASP.
Server object error 'ASP 0177: 8007007e'
Server.CreateObject Failed
Контрольный список COM DLL
На что Enable 32-Bit Applications задан расширенный параметр пула приложений IIS , поскольку он влияет на то, как вы регистрируете COM-DLL?
Содержит ли реестр Windows файл ProgId для библиотеки DLL в папке, зависящей от архитектуры
что отражает настройку Enable 32-Bit Applications ?
Указывает ли InprocServer32 ключ правильное расположение библиотеки DLL?
В контексте учетной записи, которую я использую для доступа к COM-DLL (ApplicationIdentity, LocalSystem, NetworkService и т. Д.) , Есть ли у меня разрешение на доступ как к физическому файлу DLL, так и к записям реестра?
ThriceTwo
Доброго времени суток.
Столкнулись с проблемой создания объектов через CreateObject, они просто не появляются. Все объекты на сервере установлены при помощи стримера, поэтому все слоты для этой функции доступны, но всё равно создаваться не хотят.
Могут ли на это влиять настройки server.cfg, например stream_rate (сейчас стоит 1000)?
P.S. В данном случае требуется создание объектов только этой функцией, а не стримером.
Bonihoop
Далее в public GameModeInit
Далее в конец мода
Vinc
Далее в public GameModeInit
Далее в конец мода
Нахрена форвард создаешь и функцию стоком объявляешь? Тогда уж пабликом создавай раз форвард объявил. Но лучше конечно стоком.
ThriceTwo, куда вставляешь фунцию CreateObject? И скинь код как создаешь.
ThriceTwo
Ну всё же принимать меня за тупого не нужно. Объекты нужно создавать не при начале чтения мода, а уже в процессе игры.
Vinc
Ну всё же принимать меня за тупого не нужно. Объекты нужно создавать не при начале чтения мода, а уже в процессе игры.
Объекты загружаються при включении мода (public OnGameModeInit), но их можно создавать и из игры, к примеру админ. командой. А как ты
SwipoStyle
PETPO
Можно вообще его записать так:
ThriceTwo
Читайте также: