В пустую конфигурацию добавлено расширение (активно, безопасный режим отключен), версия платформы - 8.3.24.

Далее в модуль приложения основной конфигурации добавлена процедура, где вызывается одна из функций расширения (код вызова взят из примера документации к расширению):

```1c
    Процедура ПриНачалеРаботыСистемы()
    Результат = КоннекторHTTP.GetJson("https://api.myip.com");
    Сообщить(Результат);
    КонецПроцедуры
```

В конфигураторе такой алгоритм не проходит проверку с вот такой ошибкой:

{МодульУправляемогоПриложения(3,14)}: Переменная не определена (КоннекторHTTP)
 Результат = <<?>>КоннекторHTTP.GetJson("https://api.myip.com"); (Проверка: Тонкий клиент)

С расширением точно всё в порядке, это общедоступная библиотека, проверенная сообществом.

Почему же возникает ошибка?
---
читаем:
<Global>false</Global>
   <ClientManagedApplication>false</ClientManagedApplication>
 <Server>true</Server>
   <ExternalConnection>true</ExternalConnection>
   <ClientOrdinaryApplication>true</ClientOrdinaryApplication>
 <ServerCall>false</ServerCall>
   <Privileged>false</Privileged>
Это общий модуль с флагом только Сервер
С клиента нет доступа. Сначала необходимо перейти на сервер через общий модуль с флагами "Сервер" и "Вызов сервера" и уже через него вызывать нужный метод.
---
А не надо вызывать серверный модуль на клиенте.
---
А не надо вызывать серверный модуль на клиенте

Так ошибка при проверке в конфигураторе, а не при запуске приложения.
Разве конфигуратор - это клиент?
---
Действительно - чего это такого удумал конфигуратор? Где ж это видано - проверять код на работоспособность???
---
Еще раз перечитал сообщение, обратил внимание на фразу "(Проверка: Тонкий клиент) ".
Как-то я не подумал, что конфигуратор будет работать в режиме тонкого клиента.
Добавил директиву &НаСервере, ошибка ушла.
---
Как-то я не подумал, что конфигуратор будет работать в режиме тонкого клиента. Ржем всем коллективом: я и пиво.
---
Ну да, вам-то смешно. А начинающим программировать в 1С не до смеха...
---
Так может тогда и не начинать?
---
Как вы от конкурентов заранее избавляетесь)))
---
Так если бы то были конкуренты - я бы только помог бы!
А то в основном это набор индивидуумов, по которым судят как о всей профессии в целом, так и о самой 1С. А нам потом еще это все за ними убирать (вместо того, чтобы заниматься интересным делом). Нас уже и так не хватает на эту уборку.

Поэтому, если уж не получается увеличивать количество профессиональных дворников - то надо уменьшать количество маргинальных мусорящих. (Лучше один раз пристрелить жену, чем каждую неделю стрелять её любовников)

// Или как сказал Лужков - "Стоимость квадратного метра в Москве увеличиваться не будет! Будет уменьшаться квадратный метр."
---
Вспомните окончание поговорки:
на словах ты - Лев Толстой, а на деле - ...
---
Ну мало ли что на заборах пишут... Да и лучше быть Львом Толстым, чем паролем от компьютера МарьИванны.
---
точно такого же эффекта можно добиться, просто удалив этот код.
Будет работать одинаково )
---
Тогда такой вопрос: почему в модулях форм и общих команд можно вызывать серверные процедуры напрямую из клиентских, а в модуле приложения нельзя?

```1c
    // Модуль общей команды - так можно

    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    СходитьНаСервер(); // Выполняется успешно
    КонецПроцедуры

    &НаСервере
    Процедура СходитьНаСервер()
    Сообщить("Идем на сервер.");
    КонецПроцедуры
```

```1c
    // Модуль приложения - нельзя, "Процедура или функция с указанным именем не определена (СходитьНаСервер)"

    Процедура ПриНачалеРаботыСистемы()
    СходитьНаСервер();
    КонецПроцедуры

    &НаСервере
    Процедура СходитьНаСервер()
    Сообщить("Сходили на сервер");
    КонецПроцедуры
```
---
Уж если все таки хотите быть программистом 1С -начните сначала, все чему Вас учили раньше забудьте как страшный сон.
---
Уж если все таки хотите быть программистом 1С -начните сначала, все чему Вас учили раньше забудьте как страшный сон.
Ну, не хотелось бы забывать 15+ лет веб-разработки, пригодится еще :) Но я знал, что 1С - это совсем другое, поэтому сделал ровно так, как вы написали - начал сначала.

Очень помогло, что у 1С есть официальные курсы. Это выгодно ее отличает от других технологий, где курсов миллион, а какие взять - непонятно.

Действительно не похоже на все, что я знал раньше, тут соглашусь. Очень большая предметно-ориентированная часть. Но в ней и сила.

Особенно меня впечатлили SQL-запросы на русском языке. В принципе, почему бы и нет? Но с непривычки немного забавляет :)
---
Потому что это модуль приложения, он только клиентский.
Начните с Радченко хотя бы.
---
Потому что это модуль приложения, он только клиентский.
Начните с Радченко хотя бы.
Я начал с того, что пошел на официальный сайт 1С и спросил там в чате у оператора поддержки, с чего нужно начинать изучение 1С программистам. Оператор рекомендовал мне пройти учебные курсы в количестве четырех штук, которых достаточно для уровня 1С:Профессионал. Что я и сделал.

На курсах разбирается клиент-серверная архитектура, рассказывается про директивы &НаКлиенте и &НаСервере на примере процедур модулей форм. Однако не объясняется, что так можно делать не во всех модулях. То, что модуль приложения - сугубо клиентский и из него нельзя вызывать сервер, там не рассказывали.
---
код вызова взят из примера документации к расширению
в примере так и указано использовать в модуле управляемого приложения?
Ошибка связана с тем, что КоннекторHTTP по все видимости серверный общий модуль и с клиента не видим. О чем 1С и сообщает.
---
Слышь, Фамилия, что такое КоннекторHTTP в твоём воображении?
---
Вот что: https://github.com/vbondarevsky/Connector
---
читаем:
<Global>false</Global>
   <ClientManagedApplication>false</ClientManagedApplication>
 <Server>true</Server>
   <ExternalConnection>true</ExternalConnection>
   <ClientOrdinaryApplication>true</ClientOrdinaryApplication>
 <ServerCall>false</ServerCall>
   <Privileged>false</Privileged>
Это общий модуль с флагом только Сервер
С клиента нет доступа. Сначала необходимо перейти на сервер через общий модуль с флагами "Сервер" и "Вызов сервера" и уже через него вызывать нужный метод.
---
Сначала необходимо перейти на сервер через общий модуль с флагами "Сервер" и "Вызов сервера" и уже через него вызывать нужный метод.

Спасибо за наводку. Это надо обдумать.

Однако у меня возник вопрос: почему модуль библиотеки нельзя вызвать, например, из модуля общей команды? Ведь там тоже есть серверный контекст. Однако библиотека из него не видна:

{ОбщаяКоманда.СходитьНаСервер.МодульКоманды(15,14)}: Переменная не определена (КоннекторHTTP)
 Результат = <<?>>КоннекторHTTP.GetJson("https://api.myip.com"); (Проверка: Сервер)

Почему так?

```1c
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    СходитьНаСерверПростоТак(); // Выполняется успешно
    ОтправитьHTTPЗапрос(); // Ошибка
    КонецПроцедуры

    &НаСервере
    Процедура СходитьНаСерверПростоТак()
    Сообщить("Идем на сервер просто так");
    КонецПроцедуры

    &НаСервере
    Процедура ОтправитьHTTPЗапрос()
    Результат = КоннекторHTTP.GetJson("https://api.myip.com");
    Сообщить(Результат);
    // Ошибка:
    // Переменная не определена (КоннекторHTTP)
    // Результат = <<?>>КоннекторHTTP.GetJson("https://api.myip.com"); (Проверка: Сервер)
    КонецПроцедуры
```
---
Нормальный модуль, у меня на ЕРП вполне работает. претензий нет. ;)
---
А не подскажете кое-что по этому расширению?

Как так получается, что в дереве конфигурации расширения общий модуль называется БОНД_Коннектор, а в алгоритмах обращение идет под именем КоннекторHTTP? Открыл модуль, там это название нигде не встречается.

Как это организовано?
---
```1c
    КоннектоHTTP = Вычислить("БОНД_Коннектор");
```
---
КоннектоHTTP = БОНД_Коннектор;
Это где такое?
---
без понятия, я использую его как общий модуль, а не как расширение ;)
ЗЫ вот тут тоже можно почитать