Одинаковая функция ИмяКомпьютера выполняется в двух разных контекстах. Номер сеанса и номер соединения тоже не следует считать одним идентификатором.
Где и как запускать
Полный модуль собственной управляемой формы. Клиентский обработчик и отдельная серверная функция без контекста.
Подготовка
Работайте только в отдельной собственной конфигурации УчебнаяКонфигурацияСинтаксиса. Диагностику рабочих серверов и копирование реальных идентификаторов в общий учебник эти уроки не предусматривают.
Для первого урока вставьте полный модуль в свою управляемую форму и создайте команду ПроверитьСреду с одноимённым обработчиком. Для остальных создайте серверный общий модуль УчебнаяДиагностика, вставьте полный модуль урока и вызовите ВыполнитьПример из серверного обработчика команды.
Серверный модуль не должен быть привилегированным. Код не включает привилегии, не меняет безопасный режим, права, конфигурацию, настройки пользователей или соединения.
Вывод содержит только сведения текущего собственного учебного сеанса. Не публикуйте имена рабочих компьютеров, пользователей и идентификаторы конфигураций.
Фактические значения зависят от файловой или клиент-серверной базы, текущего режима и прав. Код проверяет типы и явно подписывает наблюдения, не обещает фиксированные номера или имена.
Проверки BSL-модулей в реальном запущенном клиенте 1С не проводились автоматически. Статическая сверка со справкой не подтверждает состояние вашей базы.
&НаКлиенте
Процедура ПроверитьСреду(Команда)
Снимок = ПрочитатьСвойСерверныйСнимок();
КлиентскийКомпьютер = ИмяКомпьютера();
Сообщить(ТипЗнч(КлиентскийКомпьютер) = Тип("Строка"));
Сообщить(ТипЗнч(Снимок.КомпьютерСервера) = Тип("Строка"));
Сообщить(ТипЗнч(Снимок.НомерСеанса) = Тип("Число"));
Сообщить(ТипЗнч(Снимок.НомерСоединения) = Тип("Число"));
Сообщить(ТипЗнч(Снимок.ПолноеИмя) = Тип("Строка"));
Сообщить("Клиентский компьютер своей базы: " + КлиентскийКомпьютер);
Сообщить("Серверный компьютер своей базы: " + Снимок.КомпьютерСервера);
Сообщить("Номер своего сеанса: " + Строка(Снимок.НомерСеанса));
Сообщить("Номер своего соединения: " + Строка(Снимок.НомерСоединения));
Сообщить("Полное имя учебного пользователя заполнено: " + Строка(СтрДлина(Снимок.ПолноеИмя) > 0));
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПрочитатьСвойСерверныйСнимок()
Возврат Новый Структура("КомпьютерСервера,НомерСеанса,НомерСоединения,ПолноеИмя",
ИмяКомпьютера(), НомерСеансаИнформационнойБазы(), НомерСоединенияИнформационнойБазы(), ПолноеИмяПользователя());
КонецФункцииРазбор по шагам
Сначала вызвать серверную функцию с ограничением на свою учебную конфигурацию и получить простой снимок значений.
На сервере прочитать имя серверного компьютера, текущие номера сеанса и соединения и полное имя учебного пользователя.
После возврата на клиент вызвать ИмяКомпьютера ещё раз: теперь это имя клиентской машины.
Проверить типы, вывести подписанные собственные имена и номера. Полное имя пользователя не печатать, вывести лишь факт заполненности.
Сравнить файловый локальный запуск и свою клиент-серверную учебную базу, если она есть. Не считать совпадение имён доказательством одного контекста.
Как проверить результат
Пять проверок типов Истина; затем фактические подписанные значения, без заранее обещанных имён или номеров.
В файловой или локально размещённой учебной среде имена могут совпасть; на удалённом сервере обычно разные.
Ожидаемый результат
Подробный реальный пример диагностики контекста с безопасным снимком и корректным серверным размещением функций.
На что обратить внимание
ИмяКомпьютера на сервере не возвращает автоматически имя компьютера пользователя.
Не передавайте номер сеанса методу, ожидающему номер соединения.
Номера не являются постоянными идентификаторами пользователя и могут меняться между запусками.
ПолноеИмяПользователя читает данные пользователя текущего сеанса, не учётную запись Windows.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.