Предоставляет доступ к информации о доменах и пользователях операционной системы.
Синтаксис
ПользователиОС()Полное описание, параметры и ограничения
Глобальный контекст.ПользователиОС (Global context.OSUsers)
Глобальный контекст (Global context)
ПользователиОС (OSUsers)
Доступен, начиная с версии 8.2.
Синтаксис:
ПользователиОС()
Возвращаемое значение:
Тип: ТаблицаЗначений, Массив.
Информация возвращается в виде таблицы значений, в колонках которой содержится следующая информация:
ИмяДомена (DomainName) - имя домена (тип Строка);
ИмяСервера (ServerName) - имя компьютера, являющегося контроллером домена (тип Строка);
Пользователи (Users) - массив строк с именами пользователей домена;
Локальный (Local) - признак того, что этому домену принадлежат локальные пользователи данного компьютера.
Описание:
Предоставляет доступ к информации о доменах и пользователях операционной системы.
Доступность:
Тонкий клиент, толстый клиент.
Примечание:
При использовании в тонком клиенте, информация возвращается в виде массива структур со свойствами (аналогичными колонкам возвращаемой таблицы значений).
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Сравнить реальные схемы пользователейОС без публикации имен
На отдельно вручную изолированной НЕдоменнойVM проверяем родной четырехколоночный результат двух API в толстом клиенте и считаем только локальные строки/элементы. Старый API объяснен как deprecated, новый — рекомендованная миграция.
Где и как запускать
Полный модуль отдельной собственной управляемой общей формы, толстый клиент Windowsx64. Отдельная физически offline НЕдоменнаяVM и другая новая пустаяИБ, не форма урокаJSON.
Подготовка
Этот урок запускается ОТДЕЛЬНО от JSON-пакета: новая собственнаяWindowsx64VM, НЕ член домена/Entra/корпоративной сети и не контроллер домена. Перед запуском человек физически отключает все сетевые адаптерыVM в гипервизоре; не используйте рабочий ПК.
ПользователиОС и ПользователиWindows сами обращаются к даннымОС/доменов, аргумента только-локальные у них нет. Предварительная изоляция обязательна; ни флажок формы, ни поле Локальный не доказывают физическое отсутствие сети.
В этой offlineVM создайте новую пустую файловуюИБ. Имя конфигурации: УчебнаяЛокальнаяПроверкаПользователейОС85. Платформа8.5.1.1343, толстый клиент, управляемое приложение. Не переносите рабочие пользователи/конфигурации/расширения.
Предметных объектов/регистров/общих модулей/параметров сеанса/подписок/заданий/расширений должно быть0. Создайте только одну общую управляемую форму УчебнаяФормаОС85.
Форма: реквизит ИтогОС85, Строка неограниченной длины, многострочное поле ТолькоПросмотр=Да; реквизит ПодтвержденСвойИзолированныйСтенд85, Булево, начальное Ложь, флажок на форме.
Команда СравнитьСвоюЛокальнуюСхему85, действие одноименной процедуры, одна кнопка. Вставьте целиком второй основной модуль формы, включая серверную проверку пустой схемы.
Обновите только новую учебную конфигурацию, откройте эту единственную общую форму вручную. Флажок установите только после физической проверки собственной offline НЕдоменнойVM; код не выполняет сетевую диагностику и не отключаетWindowsсеть.
Толстый клиент возвращает настоящую ТаблицаЗначений с4колонками. В тонком клиенте native возвращает Массив структур; урок его не подменяет и сознательно отказывает другому контексту.
Строки ИмяДомена/ИмяСервера читаются лишь для проверки типа. Массив Пользователи проверяется по типу каждого элемента и подсчитывается; имена не выводятся даже при отказе. Нет отправки/журнала/файлов/хеширования.
Любая реальная строка Локальный=Ложь прекращает весь подсчет без публикации частичных имен. Это дополнительный контроль полученных данных, не доказательство правильной исходной физической изоляции.
Пустая настоящая таблица или пустые массивы допустимы: в результате0, не выдуманные системные аккаунты. Считаются элементы, не уникальные пользователи; порядок/число/равенство результатов разных вызовов не гарантированы.
ПользователиWindows уже не рекомендуется с8.2; его один контролируемый вызов показывает реальный старый контракт и миграцию на ПользователиОС, а не рекомендует новый код на deprecatedAPI.
ActualOScalls/1C/UI/network/DB/files0. Здесь только авторский будущий ручной маршрут и статические проверки; сеть/аккаунты/VM/ИБ не создавались и не менялись. Новых резервных копий/архивов0.
&НаКлиенте
Процедура СравнитьСвоюЛокальнуюСхему85(Команда)
ПроверитьСвоюИзолированнуюVM85();
Если Не ПодтвержденСвойИзолированныйСтенд85 Тогда
ВызватьИсключение "Сначала вручную подтвердите физически отключенную НЕдоменную собственнуюVM. API этого не доказывает";
КонецЕсли;
ПроверитьСвоюПустуюБазуОС85();
ИтогОС85 = "Локальный собственный подсчет начат; реальные имена не показываем";
Попытка
Современная = РассчитатьТолькоСвоюЛокальнуюСводку85(ПользователиОС());
Устаревшая = РассчитатьТолькоСвоюЛокальнуюСводку85(ПользователиWindows());
ИтогОС85 = "Рекомендуемый ПользователиОС: локальных строк=" + Строка(Современная.Строк)
+ ", элементов имен=" + Строка(Современная.Элементов) + ", пустых массивов=" + Строка(Современная.Пустых)
+ Символы.ПС + "Устаревший ПользователиWindows: локальных строк=" + Строка(Устаревшая.Строк)
+ ", элементов имен=" + Строка(Устаревшая.Элементов) + ", пустых массивов=" + Строка(Устаревшая.Пустых)
+ Символы.ПС + "Проверены реальные схемы обоихAPI, не равенство/порядок/уникальность списков. Имена не выводились.";
Исключение
ИтогОС85 = "Локальная сводка не принята: неизвестная схема или нелокальная строка."
+ " Никакие имена, домены, серверы и текст системной ошибки не показываем и не сохраняем.";
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Функция РассчитатьТолькоСвоюЛокальнуюСводку85(Таблица)
Если ТипЗнч(Таблица) <> Тип("ТаблицаЗначений") Или Таблица.Колонки.Количество() <> 4 Тогда
ВызватьИсключение "Толстый клиент должен вернуть настоящую ТаблицаЗначений с4колонками, не Массив тонкого клиента";
КонецЕсли;
Для Каждого ИмяКолонки Из СтрРазделить("ИмяДомена,ИмяСервера,Пользователи,Локальный", ",") Цикл
Если Таблица.Колонки.Найти(ИмяКолонки) = Неопределено Тогда
ВызватьИсключение "Нативная локальная схема отличается; ее не подменяем";
КонецЕсли;
КонецЦикла;
Элементов = 0;
Пустых = 0;
Для Каждого СтрокаОС Из Таблица Цикл
Если ТипЗнч(СтрокаОС.ИмяДомена) <> Тип("Строка") Или ТипЗнч(СтрокаОС.ИмяСервера) <> Тип("Строка")
Или ТипЗнч(СтрокаОС.Локальный) <> Тип("Булево") Или ТипЗнч(СтрокаОС.Пользователи) <> Тип("Массив") Тогда
ВызватьИсключение "Неизвестные типы реальной строкиОС";
КонецЕсли;
Если Не СтрокаОС.Локальный Тогда
ВызватьИсключение "Нелокальные пользователи не входят в собственный offline урок; список не показываем";
КонецЕсли;
Если СтрокаОС.Пользователи.Количество() = 0 Тогда
Пустых = Пустых + 1;
КонецЕсли;
Для Каждого ИмяПользователя Из СтрокаОС.Пользователи Цикл
Если ТипЗнч(ИмяПользователя) <> Тип("Строка") Тогда
ВызватьИсключение "Элементы пользователей должны реально быть строками";
КонецЕсли;
Элементов = Элементов + 1;
КонецЦикла;
КонецЦикла;
Возврат Новый Структура("Строк,Элементов,Пустых", Таблица.Количество(), Элементов, Пустых);
КонецФункции
&НаКлиенте
Процедура ПроверитьСвоюИзолированнуюVM85()
#Если ТолстыйКлиентУправляемоеПриложение Тогда
Система = Новый СистемнаяИнформация;
Если Система.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
ВызватьИсключение "Нужен свой толстый управляемый клиент Windowsx64 платформы8.5.1.1343";
КонецЕсли;
#Иначе
ВызватьИсключение "В другом клиентском контексте этот собственный локальный урок не выполняется";
#КонецЕсли
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСвоюПустуюБазуОС85()
ПроверитьСвойПустойСтенд();
Если Метаданные.ОбщиеМодули.Количество() <> 0 Или Метаданные.ПараметрыСеанса.Количество() <> 0
Или Метаданные.ОбщиеФормы.Количество() <> 1 Или Метаданные.ОбщиеФормы.Найти("УчебнаяФормаОС85") = Неопределено Тогда
ВызватьИсключение "Нужна отдельная собственная пустая схема только с одной учебной формойОС";
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедурыРазбор по шагам
Человек сначала проверяет свою физически offline НЕдоменнуюVM; без ручного флага никаких вызововОС не выполняется. Код не притворяется доказательством отсутствия сети.
Проверяем точную платформу/толстый управляемый клиент и отдельную пустую схему. Первый native вызов ПользователиОС, второй один учебный deprecated ПользователиWindows.
Каждый настоящий результат должен быть ТаблицаЗначений с4точными колонками. Типы строк/массивов/Булево проверяются без вывода значений имен/домена/сервера.
Любой Локальный=Ложь или неизвестный тип прекращает весь маршрут. Для допущенных строк считаем размер массива пользователей, проверяя каждую строку; показываем только производные числа.
Пустые результаты допустимы. Два снимка сравниваются по контракту/подсчету, а не по равенству/порядку/уникальности: ОС могла измениться между вызовами.
Как проверить результат
ФлагЛожь: отказ до вызоваОС. На подготовленном offlineстенде настоящий TableValues4колонки→только три числа для каждогоAPI; реальные имена не показываются.
Пустой настоящий результат допустим с нулями; нельзя требовать готовыйAdministrator/одного текущего пользователя. Нелокальная строка вызывает отказ без частичного списка.
В тонком клиенте native вернул бы Массив, но этот полный урок его не вызывает: contextguard заранее отказывает. Deprecatedметод нельзя рекомендовать для нового прикладного кода.
На экране/в журналах/файлах/сети нет имен пользователей/домена/контроллера и rawтекста ошибки. Staticpythonfixture проверяет только счетчики модели, не подтверждает реальныеWindowsвызовы.
Ожидаемый результат
Локальная сводка двух реальных native результатов без имен и без изменения пользователейОС/ИБ; рекомендуемый API явно отделен от deprecated.
На что обратить внимание
Физическую offlineизоляцию проверяет человек ДО будущих native вызовов; API/флажок ее не доказывает.
Не запускайте на рабочем/доменном ПК: оба API могут читать сведения доменов, ограничивающего аргумента нет.
Здесь не выполнялись ни Windowsвызовы, ни1С; staticподсчет не является liveпроверкой.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.