Имя: Пароль:
1C
1С v8
Лицензирование от КАТРАН не работает с сервером 1С версии x64
,
0 dimetra2008
 
07.10.11
04:56
Всем привет.
Наша контора использует отраслевое решение "Управление ремонтами", конфа которой защищена ключом от КАТРАНА.
Эта конфигурация работает на платформе 1С 8.2 в клиент серверном варианте, по следующей схеме:
Сервер1 (терминальный сервер с клиентом 1С 8.2 на котором пользователи живут)
Сервер2 (Сервер 1С Предприятие 8 х32)
Сервер3 (MS SQL Server 2008 R2)
Сервер4 (Здесь стоит сервер СЛК 2.0.2.9 и в него же воткнут КАТРАНовский ключ)
Сервер1-Сервер3 это виртуальные машины от MS HyperV
Сервер4 - физическая машина
Так вот, все это замечательно работает, но только если Сервер3 на котором стоит сервер 1С Предприятие 8 является х32, если вместо х32 сервера 1с начать использовать х64 то катрановский ключ конфа уже не может увидеть. Хотя настройки в конфигурационном файле на сервере 1С прописаны верно (IP адрес сервера СЛК, порт и т.д.)
В чем затык, кто знает?
Очень хочется на сервер 1с х64 перейти.
1 Матвеев Максим
 
07.10.11
06:54
Нужен ключ 64бит! LOL
2 Amiralnar
 
07.10.11
07:01
(0) В техподдержку пробовали обращаться? Особенности работы катрана - это очень специфичная тема.

(1) Пробовали читать тему перед тем, как оставить комментарий? Говорят, помогает.
3 Матвеев Максим
 
07.10.11
07:03
> Пробовали читать тему перед тем, как оставить комментарий? Говорят, помогает.

8-) откуда же вы беретесь такие зануды
4 PLUT
 
07.10.11
07:06
(0) нужен ключ одноэс-сервера ЗЕЛЕНОГО цвета
5 dimetra2008
 
07.10.11
07:21
Обращался напрямую к разработчику конфы... они нифига не смогли сделать, даже удаленный доступ им предоставлял!
А ключик у меня х64
6 Мимохожий Однако
 
07.10.11
07:44
МОжет ключ сломан? Пробовал на какой-нибудь локальной машине?
7 Amiralnar
 
07.10.11
08:13
Так, подожди. Ты битность сменил с сервера 1с или у сервера виндовс?

Потому, что если у виндовс, то катрановский драйвер не подписан, и на 64 битном виндовсе он отключается. Для запуска нужно использовать режим разработчика, или перед загрузкой отключить проверку подписи драйверов.
8 Jofa
 
07.10.11
08:37
(5) Сервер 1С Предприятие 8 х32
9 Jofa
 
07.10.11
08:37
(5)Сервер2 (Сервер 1С Предприятие 8 х32)
10 dimetra2008
 
07.10.11
08:42
У меня есть два виртуальных сервера 2008, один х32, другой х64
на первом стоит сервер 1с х32 на втором сервер х64. с ними я эксперементирую.
физический сервер на котором стоит ключ КАТРАНа является х64 и на нем винда 2008 х64
11 dimetra2008
 
07.10.11
08:45
ключ катрана на физ. машине х64 замечательно работает.
Если я использую для конфы сервер 1с х32 то все работает,
но стоит только для конфы использовать сервер 1с х64 то сразу конфа отказывается видеть этот самый долбаный ключ
12 braslavets
 
07.10.11
08:50
(0) Года четыре назад столкнулся с аналогичной проблемой. Обращался к разработчикам ключей Катран. Ответили - "мы над этим работаем" :) Видимо, плохо получается.
Тогда проблему решили путем отката на 32-бит ось. В дальнейшем удалось "отучить" конфу от ключа.
13 Amiralnar
 
07.10.11
09:15
(11) А кто именно не видит? Конфа или система защиты?
14 Amiralnar
 
07.10.11
09:17
К стати, после (5) > Обращался напрямую к разработчику конфы... они нифига не смогли сделать, даже удаленный доступ им предоставлял! - на этом форуме то чего искать?
15 dimetra2008
 
07.10.11
09:17
Конфа не видит
16 dimetra2008
 
07.10.11
09:20
Эти балбесы-разработчики даже не знали что все эта система для х32 сервера 1с работает т.к. изначально у меня стоял х64 сервер 1с и они не могли ничего сделать, то что эта хрень для сервера 1с х32 работает самостоятельно экспериментальным путем вычислил
17 Amiralnar
 
07.10.11
09:23
Пробовал трассировть подключение к ключу? Может, если проблема в 1С, можно будет подправить?
18 Amiralnar
 
07.10.11
09:30
Конфа должна обращаться к системе защиты через ВК.
Возможны два варианта: 1 - ВК не возвращает ничего. Это плохо.  2 - ВК возвращает не так, как ждет конфа. Это поправимо.
19 dimetra2008
 
07.10.11
09:35
>Пробовал трассировть подключение к ключу? Может, если проблема в 1С, можно будет подправить?

Не пробывал, не знаю как это делается
20 Goggy
 
07.10.11
09:42
(1) моск купи дядя.
(0) Всё работает на х64 прекрасно. Там 2 компоненты в папке бин должны лежать с одинаквым название и одна с дописаным "х64". При запуске конфы протрассируй модуль приложения, там ф-ция отвечающая за подключение компоненты.
(19)Ну тогда один вариант, обратиться к специалисту.
21 dimetra2008
 
07.10.11
09:49
Точно
в папке: C:\Program Files (x86)\1C\Licence 2.0\Bin
лежит два файла
LicenceAddIn64.dll
LicenceAddIn.dll
В конфе создается объект: МенеджерЛицензий = Новый("AddIn.Licence.LicenceExtension20");
22 dimetra2008
 
07.10.11
09:50
я так полагаю нуно написать типа:
МенеджерЛицензий = Новый("AddIn64.Licence.LicenceExtension20");
?
23 DmitrO
 
07.10.11
10:00
(22)нет. так писать вообще нельзя.
Проблема вероятно в следующем.
Вероятно загрузка компоненты (и работа с ней) идет на сервере, в серверном модуле.
Дело в том, что 32разрядные dll ни при каких условиях не могут быть загружены в 64разрядный процесс. И наоборот тоже. Это ограничения ОС, и это логично.
Надо просто загружать соответствующий разрядности вариант компоненты.
Показывай код загрузки.
24 Goggy
 
07.10.11
10:05
Мне кажется просто разработчик мог не учесть варианта выбора компоненты для х64, либо просто путь по дефолту стоит "програм файлс", а верный указать надо через "програм файлз(х64)".
25 DmitrO
 
07.10.11
10:06
вероятно при загрузке вариант компоненты который грузить определяется. но определяется он по разрядности ОС, а надо проверять по разрядности сервера 1С.
26 Goggy
 
07.10.11
10:08
(24) неправильно написал "програм файлх(х86)" :)
27 Goggy
 
07.10.11
10:09
(23) прекрасно подгружает обе ДЛЛки сам пробовал на разных ОС.
28 Goggy
 
07.10.11
10:10
(22) кинь всю ф-цию в которой подключаются компоненты.
29 dimetra2008
 
07.10.11
10:14
Функция ЗапускМенеджераЛицензий() Экспорт

       ВнешняяКомпонентаПодключена = ПодключитьВнешнююКомпоненту("ОбщийМакет.торо_КомпонентаСЛК_2_0",
           "Licence", ТипВнешнейКомпоненты.Native);
       
       Если Не ВнешняяКомпонентаПодключена Тогда
           
           Попытка
               
               УстановитьВнешнююКомпоненту("ОбщийМакет.торо_КомпонентаСЛК_2_0");
               ВнешняяКомпонентаПодключена = ПодключитьВнешнююКомпоненту("ОбщийМакет.торо_КомпонентаСЛК_2_0",
                   "Licence", ТипВнешнейКомпоненты.Native);
                           
           Исключение
               
               Сообщить("Ошибка подключения компоненты СЛК!" + ОписаниеОшибки());
               Возврат Ложь;
               
           КонецПопытки;
       
       КонецЕсли;
       
       Если ВнешняяКомпонентаПодключена Тогда
           
           Попытка
               МенеджерЛицензий = Новый("AddIn.Licence.LicenceExtension20");
           Исключение
               Сообщить(ОписаниеОшибки());
               Возврат Ложь;
           КонецПопытки;
           
           // Запуск по серии ключей
           Возврат МенеджерЛицензий.Запуск("B0A2");
           
       Иначе
           
           Возврат Ложь;
           
       КонецЕсли;
       
   КонецФункции
30 DmitrO
 
07.10.11
10:15
(25)+ вероятно потому, что в объекте Системная информация есть только ВерсияОС и нет ничего чтобы как-то узнать разрядность текущего процесса. В результате определяется что версия ОС у нас Windows_x86_64 , и идет попытка загрузить компоненту для x64, а процсесс сервера 32разрядный. В результате компонента не загрузится
31 Goggy
 
07.10.11
10:16
(30) не путай, всё гуд подгружается при такой проверке и на 32 разрядный процесс.
32 Goggy
 
07.10.11
10:18
(29) короче находиш "ОбщийМакет.торо_КомпонентаСЛК_2_0" в дереве конфы, открываеш и загружаеш туда файл "LicenceAddIn64.dll" и пробуй запускать.

З.Ы. на всякий случай выгрузи с этого макета копию файла загруженного.
33 Goggy
 
07.10.11
10:21
Какая фирма разработчик то этой г0Bноконфы(тм)? :)
34 dimetra2008
 
07.10.11
10:21
>короче находиш "ОбщийМакет.торо_КомпонентаСЛК_2_0" в дереве конфы, открываеш и загружаеш туда файл "LicenceAddIn64.dll" и пробуй запускать.

З.Ы. на всякий случай выгрузи с этого макета копию файла загруженного.
Сенкс, попробую, отпишусь
35 dimetra2008
 
07.10.11
10:22
>Какая фирма разработчик то этой г0Bноконфы(тм)? :)
Деснол-софт, они нам ее внедряли
36 Goggy
 
07.10.11
10:26
(35) А, ну тогда сойдёт. у них вакансия старшего программиста 1С 22т.р. На эту сумму и написана конфа...
37 dimetra2008
 
07.10.11
10:32
>А, ну тогда сойдёт. у них вакансия старшего программиста 1С 22т.р. На эту сумму и написана конфа...
Га-га-га
я думал таких зп уже нет
38 DmitrO
 
07.10.11
10:34
(29)при такой загрузке (ПодключитьВнешнююКомпоненту из макета) можно в макете разместить zip-архив с разными вариантами компонент и манифестом, тогда будет универсально и работать на сервере любой разрядности.
39 Goggy
 
07.10.11
10:53
(38) Во, а вот это интересно можешь подробней расписать или тыкнуть де почитать можно? В документации по СЛК такого нету.
Выбор компоненты идёт с помощью манифеста? Что должен содержать файлег?
40 Goggy
 
07.10.11
11:25
о, H A D G E H O G s, приди и выдай мудрость СЛКшную по поводу (39) плз :)
41 H A D G E H O G s
 
07.10.11
11:39
Какую мудрость?
Открыть макет этот в конфигураторе, сохранить с расширением zip и посмотреть архив.
Он должен содержать нечто подобное
   
LicenceAddIn64_2_0_3_46.dll
LicenceAddIn_2_0_3_46.dll
Licence_FFWindows_x86.xpi
Licence_IEWindows_x86.cab
MANIFEST.XML

Если это так - правьте hands.dll, иначе - правьте макет.
42 Goggy
 
07.10.11
11:47
(41) Как СЛК определяет какую компоненту пользовать из этого архива? Есть документация по этому поводу?
43 H A D G E H O G s
 
07.10.11
11:50
(42) Как бы вот так

   СисИнфо = Новый СистемнаяИнформация;
   Если СисИнфо.ТипПлатформы = ТипПлатформы.Windows_x86 Тогда
       Компонента = "LicenceAddIn.dll";
   ИначеЕсли СисИнфо.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
       Компонента = "LicenceAddIn64.dll";
   Иначе
       Возврат Ложь; // Пока только Windows
   КонецЕсли;
   
   Возврат ПодключитьВнешнююКомпоненту(КаталогКомпоненты + Компонента, "Licence", ТипВнешнейКомпоненты.Native);
44 H A D G E H O G s
 
07.10.11
11:50
А, не погодь, это если по имени файла.
45 Goggy
 
07.10.11
11:50
(43) я имел в виду из макета :)
46 H A D G E H O G s
 
07.10.11
11:51
Возврат ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСЛК", "Licence");
47 H A D G E H O G s
 
07.10.11
11:51
(45) 1С ка должна определить, что подключить. Сама. Исходя от того, где код выполняется.
48 Goggy
 
07.10.11
11:52
(46) и как она тут определит какую компоненту надо подключить?
49 Goggy
 
07.10.11
11:53
(47) прикольно, незнал. А зачем там дополнительные файлы ?

Licence_FFWindows_x86.xpi
Licence_IEWindows_x86.cab
MANIFEST.XML
50 H A D G E H O G s
 
07.10.11
11:55
(49) Плагины для огнелиса и IE
51 H A D G E H O G s
 
07.10.11
11:55
И описание того, куда что подключается в манифесте.
52 Goggy
 
07.10.11
11:57
Ну супер. На след неделе поковыряюсь с таким вариантом, на УФ удобно так будет.
53 Goggy
 
07.10.11
12:00
Пасиб
54 Begin
 
07.10.11
12:17
(0) а какой релиз конфы используете?
55 dimetra2008
 
10.10.11
09:50
Коллеги, извините что ввел вас заблуждение, на самом деле ситуация несколько иная, а именно:
Конфа находит ключ в любом случае и при использовании х32 сервера 1с и при использовании х64 сервера 1с, но когда используешь х64 1с сервер то перестает работать защищенный функционал конфы, вываливатся с ошибкой:
server_addr=tcp://DV1C03:1561=Ошибка сетевого доступа к серверу (Windows sockets - 10054(0x00002746). Удаленный хост принудительно разорвал существующее подключение.) line=1078 file=Src\DataExchangeTcpClientlmpl.cpp
Когда используешь х32 1с сервер то все работает без сбоев.
56 Amiralnar
 
10.10.11
16:23
Падает сервер 1С. Включайте ТЖ на исключения, и посмотрите, может там что будет понятно.
57 dimetra2008
 
11.10.11
02:21
Что такое ТЖ и как оно включается?