Обновить

Как стабильно запускать NCALayer в терминальной инфраструктуре: решение для RDS, Citrix и WSP

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели5.5K
Всего голосов 1: ↑1 и ↓0+1
Комментарии12

Комментарии 12

А какой смысл заниматься такими танцами когда 1С прекрасно работает без NCALayer достаточно установить крипто библиотеки на сервера RDS и настроить 1С

Оно не только для 1С нужно, в заключений коротко указано для каких ещё систем требуется. К сожалению сейчас даже кадровику требуется NCLAyer.

Если у компании используются только российские механизмы подписи — да, 1С спокойно работает без NCALayer.

Но в казахстанской инфраструктуре NCALayer всё равно нужен: ЭСФ, Госзакупки, НУЦ РК и часть модулей 1С напрямую с ним работают. В терминальной среде он часто конфликтует по портам, поэтому без такой настройки стабильной работы просто не добиться.

То есть вопрос не в «танцах», а в том, что для ряда сервисов NCALayer требуется по-другому никак.

Хмм. Упорно установщик NCAlayer, ставит его в директорию пользователя. Каким образом удалось его поставить в Program Files? Если не тупо скопировали его туда.
Ваш метод с портом к сожалению не взлетел, вручную указываешь или через повершел сприпты, результат и порт один 13579.

И на моей памяти, не припомню чтобы разработчики NCAlayer были лояльны на не стандартный порт, везде были отписки что идите к 1С Казахстан (в случае плагина в 1С Рейтинг), якобы это их заботы.

Вы правы — директорию установки выбрать невозможно (спасибо НУЦ РК), поэтому я действительно вручную перенёс установленную папку NCALayer в Program Files. Иного штатного способа у инсталлятора нет.

По поводу порта и исполнения скриптов:

рекомендую для начала проверить политику выполнения PowerShell-скриптов. На сервере выполните команду:

Set-ExecutionPolicy Bypass

Если политика была жёсткой, она могла блокировать самописные скрипты, из-за чего порт и не менялся.

Далее попробуйте запустить скрипт, который назначает порт вручную, а после в командной строке от имени администратора выполните:

ECHO %NCALAYERPORT%

Команда должна вывести назначенный порт в пределах диапазона.

Что касается нестандартных портов — да, разработчики NCALayer обычно не идут навстречу. Но на сайте pro1c есть материал, где описан механизм работы NCALayer на разных портах:

https://pro1c.kz/articles/prochee/kak-nastroit-zapusk-ncalayer-na-raznykh-portakh-pri-rabote-s-1s-v-rezhime-rdp/

Спасибо за развернутый ответ.
С PowerShell знаком не первый год, писал на нем так же скрипты для себя.

По NCAlayer, какое бы значение не стояло в переменной окружения, Вашим скриптом или вручную указываешь (в том числе вариантом с pro1c), ему все равно. Проверено как на тестовых виртуалках, так и в проде на 2012 R2, 2016 и 2019. С AD и без.

К сожалению, продолжаем ждать "наших", что спустятся с небес и соизволят сделать эту возможность без костылей)

Для справки. Решил все же добить и нашел причину, при подключении по RDP был указан параметр у mstsc.exe /admin

Без него работает как надо. А то уже голову сломал, что не так)

Приятно видеть, что у вас всё удалось, благодарю за ценную информацию.

Автору спасибо, статья сразу нагуглилась, сэкономил мне часа 3 точно

Спасибо за отзыв. Рад, что статья оказалась полезной и помогла сэкономить время.

Артем, вы проделали огромную работу! Спасибо!

Есть вопрос:
1Ска видимо умеет читать и использовать переменную NCALAYERPORT и обращаться к приложению на правильный порт!

А вы не пробовали «заставить» скрипт Кабинета налогоплательщика https://knp.kgd.gov.kz/ (или других гос.сайтов enbek.kz) обращаться к переменной NCALAYERPORT и соответственно правильному порту ?

Спасибо большое за тёплые слова поддержки!

По поводу КНП: такой вариант действительно можно рассматривать, но тут всё зависит от того, как именно реализован клиентский скрипт самого Кабинета налогоплательщика.

Если в коде КНП порт или адрес подключения указаны жёстко, то напрямую “заставить” его использовать другую переменную не получится без изменения самого скрипта. Браузерный JavaScript не имеет доступа к переменным окружения Windows, поэтому он не может просто прочитать значение из системы так же, как это делает локальное приложение.

Теоретически похожую схему можно реализовать только через дополнительную прослойку: например, локальный прокси, пользовательский скрипт/расширение браузера или доработку самого клиентского кода КНП, чтобы он обращался к нужному адресу и порту.

То есть идея рабочая как направление, но не “из коробки”. Для КНП это уже не вопрос системной переменной, а вопрос того, можно ли изменить или перехватить логику обращения внутри клиентского скрипта портала.

Спасибо за идею, она действительно интересная.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации