Глобальная переменная для хранения внешней компоненты #448414


#0 by mashunka
Ситуация такая: имеется самописная конфигурация. Используется внешняя компонента, имеющая несколько методов. Для обращения к ней из различных модулей компонента была помещена в глобальную переменную. Т.е. в Модуле приложения была объявлена переменная Компонент. ПриНачалеРаботыСистемы эта переменная была инициализирована. Доступа к ней из-под общих модулей мне удалось добиться с помощью вспомогательной обработки (метод был описан где-то тут на мисте). Все замечательно работало, пока мы не отправили конфигурацию на 1С:совместимо, где ее прогнали через полный синтаксический контроль и оказалось, что глобальная переменная Модуля приложения не видна на сервере и в режиме внешнего соединения. А у меня больше не осталось идей, куда "положить" эту внешнюю компоненту...
#1 by Sadovnikov
" пока мы не отправили конфигурацию на 1С:совместимо" - жесть... Кто там что говорил про качество "совместимых" решений?
#2 by mashunka
даже Рарус грешит ошибками, что уж говорить о скромном франчайзи из Пятигорска :). На самом деле, конфигурация очень маленькая, нам эти механизмы выполнения на сервере в ней и не нужны. Но это преграда для сертификации. Есть конструктивные предложения? Где можно хранить глобальное значение неизвестного типа? Ведь в ПараметрыСеанса оно тоже не влезает...
#3 by OFF
ну если заговорили про рарус, то смотрите как у него сделано
#4 by VFrol
Может посмотреть , как 1С в типовой это делает . Хороший пример - сканеры. Там все через внешние компоненты и на сервере работает.
#5 by Sadovnikov
Впихиваем невпиху емое?
#6 by Rebelx
впиху емое, причем двумя способами :) ты вообще в курсе что такое #Если Клиент тогда ... #КонецЕсли ?
#7 by mashunka
Всем спасибо за советы. Раруса под рукой нет, но есть сельхознастройка, посмотрю там. мне казалось, что в 8.1 если директива не передана, то по-умолчанию выполняется на клиенте, но изучу эту тему подробнее, спасибо.
#8 by Stepa86
есть подозрение, что этим не будут пользоваться из-за невозможности потом скрытия исходного кода у модулей, в которых использованы директивы... =) (хотя это не сложно обойти) если компонента работает только на клиенте, то и вызывай ее только с клиента, а если уж прям так сильно нужно из серверного модуля вызывать метод, то придется воспользоваться директивами
#9 by Rebelx
я практически никогда директивами не пользуюсь - лучше разнести по модулям
#10 by Stepa86
а я и не сомневался, что у тебя все хорошо с проектированием архитектуры решения =)
#11 by fisher
Если работать с компонентой надо только на клиенте, то вынеси всю работу с ней в отдельный общий модуль только с галкой "Клиент". Из модулей объектов к этим функциям не обращайся - только из форм. Тогда контроль должно пройти.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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