Имя: Пароль:
1C
1С v8
Проблема с dll на сервере 1С
0 kievgorez
 
18.11.13
12:59
Доброго времени суток уважаемым экспертам! Столкнулся с такой проблемой.
Было организовано автоматическое программирование весов в фоновом режиме по расписанию в файловом варианте 1С (УТ для Украины) через библиотеку drvLP.dll. Работало все на ура.
Перешли на клиент-серверный вариант 1С и теперь фоновые задания выполняются на сервере. И тут появилась проблема. Библиотека drvLP.dll не подгружается на сервере. Когда запускаем программирование под клиентом вручную - все работает.

Сервер: Windows Server 2008 R2 Standart 64x
1С 8.2 , платформа 8.2.19.68, сервер 1С запускается под USR1CV82, у которого полные права на папку
Файлы DrvLP.dll и DrvLP.lic лежат в bin, зарегистрированы (когда запускаем вручную - все подхватывает).

Код 1С:
Если ПодключитьВнешнююКомпоненту("DrvLP.dll")=Ложь Тогда
Сообщить("Внешняя компонента драйвера весов 'Штрих-Принт' - DrvLP.dll не найдена!",MessageStatus.Attention);
Возврат;    
КонецЕсли;    
Весы = Новый ("AddIn.DrvLP"); //сюда не доходим

ПодключитьВнешнююКомпоненту всегда дает Ложь, те компонента не подлючается. Ошибок не выдает.

Пробовал указывать в ПодключитьВнешнююКомпоненту расположение длл-ки в разных вариантах- и на диске С, и в сети.. (с полными правами на эти папки) Результат тот же.

Вопрос: Как нужно реализовывать подключение библиотеки в серверном режиме? Как ее заставить работать?
1 mzelensky
 
18.11.13
13:08
(0) для начало проверить есть ли эта библиотека на сервере
2 mzelensky
 
18.11.13
13:10
(1) чтобы это проверить укажите (для теста) не краткое имя, а полный путь к библиотеки:

ПодключитьВнешнююКомпоненту("C:\Papka1\Papka2\DrvLP.dll")
3 kievgorez
 
18.11.13
13:15
Тестирую как раз на сервере. Пытался указывать полный путь к библиотеке с разным местоположением.
Результат=ПодключитьВнешнююКомпоненту("C:\Program Files (x86)\1cv82\8.2.19.68\bin\DrvLP.dll");
и
Результат=ПодключитьВнешнююКомпоненту("C:\Test\DrvLP.dll");
и даже сетевую папку с полными правами на нее..
Результат=ПодключитьВнешнююКомпоненту("\\test\DrvLP.dll");
4 mzelensky
 
18.11.13
13:20
(3) Стоп! Если у тебя Сервер и Клиент это РАЗЫНЕ МАШИНЫ, а ты хочешь загружать библиотеку под сервером, то библиотека должна быть зарегана (и физически должна находиться) на машине СЕРВЕРА!. Никаких сетевых путей.
5 Новиков
 
18.11.13
13:22
Клиент какой - толстый или тонкий?
6 kievgorez
 
18.11.13
13:26
Библиотека находится на машине сервера, и зарегистрирована на ней.
Сетевой путь пробовался только как вариант.
В смысле какой клиент?  Фоновое задание выполняется на сервере...   Когда запускаю вручную под толстым клиентом- вопросов нет.
7 Новиков
 
18.11.13
13:28
(7) а конфа - ут эта - это управляемое приложение? Или обычное?
8 kievgorez
 
18.11.13
13:28
Обычное приложение
9 decdmb
 
18.11.13
13:30
Подпишусь, такой же косяк есть, пока не победил
10 Новиков
 
18.11.13
13:30
запусти клиентское приложение 1С на сервере под USR1CV82 и запусти вручную - работает?
11 mzelensky
 
18.11.13
13:32
(10) + а еще лучше запусти (тестово) службу сервера под Админом (т.е. полные права)
12 Новиков
 
18.11.13
13:33
Скорее всего дело в правах пользователя, под которым запущен сервер 1С. По-крайне мере, все симптомы на это указывают. В случае толстого клиента, особо больше и копать то не куда, если под другим пользователем все работает.
13 kievgorez
 
18.11.13
13:38
10, 11- попробую. Но это только вечером. Все крутится на сервере большой компании и их админы не позволят проводить эксперименты днем. Как только попробую - отпишусь. Пока спасибо)
14 Новиков
 
18.11.13
13:53
(13) так правой кнопкой по ярлыку 1С, запустить от имени ->  USR1CV82, пасс  -> Ок. И запусти в ручную. И никаких остановок сервера 1С не нужно - сразу увидишь в этом ли дело, или нет.
15 Rebelx
 
18.11.13
14:00
(0) случаем сервер 1С не х64?
16 kievgorez
 
18.11.13
14:06
14 - пароля не знаю, админы "злые")  
15 - ага, и сервер и винда - 64х
17 zakidonoff
 
18.11.13
14:24
1С для регламентных заданий должен запускаться под админским профилем. Можно вставить нечто следующее:

Результат = ПодключитьВнешнююКомпоненту("C:\Program Files (x86)\1cv82\8.2.19.68\bin\DrvLP.dll");
Если НЕ Результат Тогда
    ЗапуститьПриложение("cmd.exe /c ""RegSvr32 /s """C:\Program Files (x86)\1cv82\8.2.19.68\bin\DrvLP.dll"""""");
    ПодключитьВнешнююКомпоненту("C:\Program Files (x86)\1cv82\8.2.19.68\bin\DrvLP.dll");
КонецЕсли;

Не знаю, взлетит - нет, по-хорошему нужно батник генерировать.
18 Serginio1
 
18.11.13
14:42
(16) Есть два варианта получить 64 разрядную drvLP.dll

либо прописать как COM+
http://www.steeltrace.ru/details/articleid/22/регистрация-1с-com-компонента-для-работы-с-64-битными-приложениями.aspx
19 Mafoni
 
18.11.13
15:47
Сервер 1с - 64х или 32х ?
Основная теорема систематики: Новые системы плодят новые проблемы.