Как получить Windows имя текущего пользователя ? (в идеале путь к рабочему столу =))
☑
0
Megas
07.11.09
✎
16:51
Как получить Windows имя текущего пользователя ? (в идеале путь к рабочему столу =)) Собственно всё! Хочу из 1с получить «путь» рабочего стола текущего пользователя, что то не получается.
1
Жирафка
07.11.09
✎
16:56
WSH
2
Megas
07.11.09
✎
16:56
WSH ? что это ?
3
Sserj
07.11.09
✎
16:58
%HomePath%\Desctop
4
Rovan
модератор
07.11.09
✎
16:59
(2) ищи описание этого объекта Яндексом 
5
Rovan
модератор
07.11.09
✎
16:59
6
Sserj
07.11.09
✎
17:00
+(3) Наврал малость:
%HomePath%\Desktop
7
Megas
07.11.09
✎
17:06
Это что то типа КомандаСистемы(%HomePath%\Desktop) ?
А как вернуть это имя в 1с ?
8
Megas
07.11.09
✎
17:08
Имя — в смысле результат
9
пента
07.11.09
✎
17:09
WshNetwork = Новый COMОбъект(«WScript.Network»);
ИмяПользователяWindows = WshNetwork.UserName;
10
Tafa
07.11.09
✎
17:11
Ctrl = Новый COMОбъект(«MSScriptControl.ScriptControl»);
Ctrl.Language = «vbscript»;
Ctrl.AddCode(»
|Function SpecialFolder()
| Set Shell = CreateObject(«»WScript.Shell»»)
| SpecialFolder = Shell.RegRead(«»HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop»»)
|End Function»);
ПолноеИмя = Ctrl.Run(«SpecialFolder»);
11
Sserj
07.11.09
✎
17:12
WSH=Новый COMobject(«wscript.shell»);
ИмяПути = «» + WSH.ExpandEnvironmentStrings(«%HomePath%»)) + «\Desktop»;
12
Megas
07.11.09
✎
17:17
(10) (11) Круто! А я то думал нафига это нужно если почти всё можно командой системы сделать =) Спасибо!
13
Mits
07.11.09
✎
17:53
%userprofile%\desktop для английской версии и «%userprofile%\рабочий стол» в русской
14
Megas
07.11.09
✎
17:57
(13) Да я уже понял =)
И через «Попытка» на всякий случай =)
15
FN
07.11.09
✎
18:00
(10) а зачем в скрипт? можно проще Шела=СоздатьОбъект(«WScript.Shell»)…
16
FN
07.11.09
✎
18:01
точнее = Новый COMОбъект
17
kvk
07.11.09
✎
18:04
WSS=Новый COMОбъект(«WScript.Shell»);
Сообщить(WSS.SpecialFolders().Item(«Desktop»));
18
Megas
07.11.09
✎
18:10
(17) Во спасибо… и без «Попытка» обошлось =)
Аренда сервера 1С от 900 руб / мес.
Настройка 1С на Linux
В управляемых формах можно сделать так, общий модуль ПользователиКлиентСервер входит в состав Библиотеки стандартных подсистема (БСП).
ТекПользователь = ПользователиКлиентСервер.ТекущийПользователь();
Александр
Консультирую по разным конфигурациям 1С, дорабатываю, разрабатываю расширения, отчеты и обработки, администрирую базы 1С на linux.
Похожие записи
1C пустая дата
Один из вариантов указания пустой даты: ПустаяДата = Дата(‘00010101’); Пустая дата в запросе Пример использования: Функция проверки даты на пустое значение с сайта ИТС:
Как получить UUID, ГУИД, GUID объекта в 1С?
Получить GUID Для программного получения уникального идентификатора объекта, нужна всего лишь ссылка на объект. Или например: Система вернет 36 символьный строковый код идентификатора. Найти по GUID В данном примере получаем ссылку на объект по строковому значению GUID. Задать свой GUID для объекта Бывают случаи когда например перепутаны элементы справочниках в разных базах, которые необходимо синхронизировать,…
Перенумерация документов 1С
Распространенная проблема автоматической нумерации возникает в тот момент, когда пользователь поправил номер и забыл установить лидирующие нули. В результате, чего может возникать ошибка Значение поля “Номер” не уникально. Для решения проблемы разработана обработка которая, возвращает лидирующие нули в поле номер Обработка позволяет выбрать необходимый вид документа для восстановления нумерации и период за который необходимо восстановить…
Программное добавление файла в 1C
Часто есть необходимость программного добавления файла, например к позиции номенклатуры или справочнику договоров. В типовых конфигурациях на управляемых формах чаще всего используется Библиотека стандартных подсистем (БСП), а значит для каждого справочника к котрому нужно цеплять файл, создается справочник вида НоменклатураПрисоединенныеФайлы. Файл добавляется в этот специальный справочник. Важно не забыть указать значение реквизита ДатаМодификацииУниверсальная, иначе загруженный…
1C Odata получение данных справочника из другой базы
В примере рассмотрим задачу при которой в программе 1С документооборот необходимо формировать заявку на закупку, но при этом соответствующего справочника в документообороте нет. Данные о номенклатуре необходимо получать из справочника номенклатуры из 1С:Бухгалтерии. Публикация справочника через Odata в базе источнике На стороне базы источника при публикации информационной базы достаточно отметить флаг Публиковать стандартный интерфейс OData…
Как проверить на ЕСТЬNULL() в запросе 1С
При соединении нескольких таблиц в запросе есть вероятность того, что во второй таблице нет значения соответствующего условию запроса и в результате в ячейку будет выводиться значение NULL. Значение NULL указывает на отсутствующее значение при работе с базами данных. NULL — Не равен пустой ссылке, пробелу или Типу Неопределено. Запросы в 1С не позволяют сравнивать со значением…
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
/// Как узнать имя текущего пользователя в 1с 8.3, 8.2 &НаКлиенте Процедура КакУзнатьИмяТекущегоПользователя(Команда) Сообщить(ИмяПользователя()); // Администратор КонецПроцедуры /// Как получить или изменить заголовок окна приложения в 1с 8.3, 8.2 &НаКлиенте Процедура КакПолучитьИлиИзменитьЗаголовокОкна(Команда) // заголовок в 1с состоит из двух частей: префикс (короткая часть) // и сам заголовок (длинная часть) Сообщить( ПолучитьКраткийЗаголовокПриложения() ); // обычно пустой Сообщить( ПолучитьЗаголовокКлиентскогоПриложения() ); // название конфигурации, например Бухгалтерия предприятия // сделаем такой заголовок - Ромашка.Бухгалтерия УстановитьКраткийЗаголовокПриложения("Ромашка"); УстановитьЗаголовокКлиентскогоПриложения("Бухгалтерия"); КонецПроцедуры /// Как узнать текущий вариант интерфейса в 1с 8.3, 8.2 &НаКлиенте Процедура КакУзнатьТекущийВариантИнтерфейса(Команда) Сообщить( ТекущийВариантИнтерфейсаКлиентскогоПриложения() ); // например, Такси или Версия8_2 КонецПроцедуры /// Как узнать текущий размер основного шрифта в 1с 8.3, 8.2 &НаКлиенте Процедура КакУзнатьТекущийРазмерШрифта(Команда) Сообщить( ТекущийВариантОсновногоШрифтаКлиентскогоПриложения() ); // Крупный или Обычный КонецПроцедуры /// Как подключить или отключить обработчик ожидания /// для управляемой формы в 1с 8.3, 8.2 &НаКлиенте Процедура РаботаСОбработчикамиОжиданияФормы(Команда) // подключаем, чтобы процедура СкажиПривет // вызвалась через 3 секунды // процедура СкажиПривет определена чуть ниже ПодключитьОбработчикОжидания( "СкажиПривет", // имя процедуры 3, // интервал в секундах Истина // однократный вызов ); // тут же отключаем ОтключитьОбработчикОжидания("СкажиПривет"); КонецПроцедуры &НаКлиенте Процедура СкажиПривет() Сообщить("Привет!"); КонецПроцедуры /// Как подключить или отключить глобальный обработчик /// оповещения в 1с 8.3, 8.2 &НаКлиенте Процедура РаботаСГлобальнымиОбработчикамиОповещения(Команда) // подключаем экспортируемую процедуру глОбработкаОповещение, // которая определена в модуле управляемого приложения // также можно располагать её в одном из общих модулей ПодключитьОбработчикОповещения("глОбработкаОповещения"); // тут же проводим тест Оповестить("Кошмар", "Монстр", Объект); // и отключаем этот обработчик оповещения ОтключитьОбработчикОповещения("глОбработкаОповещения"); КонецПроцедуры /// Как узнать скорость клиентского соединения в 1с 8.3, 8.2 &НаКлиенте Процедура КакУзнатьСкоростьСоединения(Команда) Сообщить( ПолучитьСкоростьКлиентскогоСоединения() ); // Низкая или Обычная КонецПроцедуры /// Как узнать текущий режим запуска в 1с 8.3, 8.2 &НаКлиенте Процедура КакУзнатьТекущийРежимЗапуска(Команда) Сообщить( ТекущийРежимЗапуска() ); // Авто, ОбычноеПриложение или УправляемоеПриложение // Неопределено, если внешнее соединение КонецПроцедуры /// Как узнать строку соединения инормационной базы в 1с 8.3, 8.2 &НаКлиенте Процедура КакУзнатьСтрокуСоединенияСБазой(Команда) // часто из неё можно вытащить полезную информацию Сообщить( СтрокаСоединенияИнформационнойБазы() ); // Например, File="D:\Bases\Пустая"; КонецПроцедуры /// Как заблокировать работу пользователя в 1с 8.3, 8.2 &НаКлиенте Процедура КакЗаблокироватьРаботуПользователя(Команда) ЗаблокироватьРаботуПользователя(); КонецПроцедуры /// Как завершить работу системы (вызывая обработчики /// закрытия) в 1с 8.3, 8.2 &НаКлиенте Процедура КакЗавершитьРаботуСистемы(Команда) ЗавершитьРаботуСистемы( Истина, // запрашивать возможность Ложь, // (необ.) перезапустить после завершения "" // (необ.) дополнительные параметры, если делается перезапуск ); КонецПроцедуры /// Как прекратить работу системы (не вызывая обработчики /// закрытия) в 1с 8.3, 8.2 &НаКлиенте Процедура КакПрекратитьРаботуСистемы(Команда) ПрекратитьРаботуСистемы( Ложь, // (необ.) перезапустить после завершения "" // (необ.) дополнительные параметры, если делается перезапуск ); КонецПроцедуры /// Как запустить ещё один экземпляр 1С Предприятия в 1с 8.3, 8.2 &НаКлиенте Процедура КакЗапуститьЕщёОдинЭкземпляр1С(Команда) // выдаст ошибку в учебной версии, так как // в ней нельзя запускать больше одного сеанса ЗапуститьСистему( "", // дополнительные параметры Истина // дождаться завершения запущенной системы для продолжения ); КонецПроцедуры &НаКлиенте Процедура РаботаСДатой(Команда) РаботаСДатойНаСервере(); КонецПроцедуры &НаСервереБезКонтекста Процедура РаботаСДатойНаСервере() /// Как узнать часовой пояс сеанса в 1с 8.3, 8.2 Сообщить( ЧасовойПоясСеанса() ); // например, Australia/Brisbane /// Как узнать текущую дату сеанса в 1с 8.3, 8.2 Сообщить( ТекущаяДатаСеанса() ); // например, 16.02.2017 10:32:59 КонецПроцедуры &НаКлиенте Процедура РаботаСПравамиИРолями(Команда) РаботаСПравамиИРолямиНаСервере(); КонецПроцедуры &НаСервереБезКонтекста Процедура РаботаСПравамиИРолямиНаСервере() /// Как узнать есть ли право у текущего пользователя /// применительно к объекту метаданных в 1с 8.3, 8.2 // Какие могут быть права: Чтение, Изменение , Добавление, // Удаление, Проведение и т.д. (см. справку к функции // ПравоДоступа в конфигураторе) Если ПравоДоступа( "Чтение", Метаданные.Справочники.Контрагенты ) Тогда Сообщить("Доступ на чтение к данному справочнику открыт!"); КонецЕсли; /// Как узнать включает ли определенная роль в себя /// определенное право применительно к объекту /// метаданных в 1с 8.3, 8.2 Если Не ПравоДоступа( "Изменение", Метаданные.Справочники.Контрагенты, Метаданные.Роли.Администратор ) Тогда Сообщить("У роли Администратор нет прав на изменения справочника!"); КонецЕсли; /// Как использовать функцию проверки прав для других пользователей /// в 1с 8.3, 8.2 Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей(); Для Каждого Пользователь Из Пользователи Цикл Если ПравоДоступа( "Чтение", Метаданные.Справочники.Контрагенты, Пользователь ) Тогда Сообщить("Доступ для " + Пользователь.Имя + " на чтение открыт!"); КонецЕсли; КонецЦикла; /// Как узнать включена ли определенная роль для /// текущего пользователя в 1с 8.3, 8.2 Если РольДоступна("Администратор") Тогда Сообщить("Приветствую тебя, Администратор!"); КонецЕсли; /// Как проверить право у пользователя и в случае /// его отсутствия вызвать исключение в 1с 8.3, 8.2 ВыполнитьПроверкуПравДоступа( "Изменение", Метаданные.Справочники.Контрагенты ); // Вызовет исключение "Нарушение прав доступа!" КонецПроцедуры &НаКлиенте Процедура КакУзнатьПолноеИмяПользователя(Команда) КакУзнатьПолноеИмяПользователяНаСервере(); КонецПроцедуры /// Как узнать полное имя пользователя в 1с 8.3, 8.2 &НаСервереБезКонтекста Процедура КакУзнатьПолноеИмяПользователяНаСервере() Сообщить( ПолноеИмяПользователя() ); КонецПроцедуры &НаКлиенте Процедура РаботаСНастройкамиПользователей(Команда) РаботаСНастройкамиПользователейНаСервере(); КонецПроцедуры &НаСервереБезКонтекста Процедура РаботаСНастройкамиПользователейНаСервере() /// Как сохранить произвольные настройки пользователя /// в 1с 8.3, 8.2 // сохраним в настройках имя и фамилию Настройки = Новый Структура; Настройки.Вставить("Имя", "Владимир"); Настройки.Вставить("Фамилия", "Милькин"); Настройки.Вставить("Возраст", 31); ХранилищеОбщихНастроек.Сохранить( "Обработка.ТестированиеКода", // ключ объекта "Автор", // ключ настроек Настройки, , // описание настроек ИмяПользователя() // владелец настроек, // если опустить, то настройки сохранятся // для текущего пользователя ); /// Как сохранить произвольные настройки для всех пользователей /// в 1с 8.3, 8.2 Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей(); Для Каждого Пользователь Из Пользователи Цикл ХранилищеОбщихНастроек.Сохранить( "Обработка.ТестированиеКода", // ключ объекта "Автор", // ключ настроек Настройки, , // описание настроек Пользователь.Имя // владелец настроек ); КонецЦикла; /// Как прочитать сохраненные настройки пользователя /// в 1с 8.3, 8.2 // восстанавливаем сохраненные настройки ВосстановленныеНастройки = Неопределено; Попытка ВосстановленныеНастройки = ХранилищеОбщихНастроек.Загрузить( "Обработка.ТестированиеКода", // ключ объекта "Автор", // ключ настроек , // описание настроек ИмяПользователя() // владелец настроек, если // опустить, то настройки прочитаются // для текущего пользователя ); // если настроек нет, то будет возвращено значение "Неопределено" Исключение Сообщить("Что-то пошло не так..., возможно не хватает прав."); КонецПопытки; Если ВосстановленныеНастройки = Неопределено Тогда Сообщить("Не получилось прочитать настройки."); Иначе Сообщить(ВосстановленныеНастройки.Имя); Сообщить(ВосстановленныеНастройки.Фамилия); Сообщить(ВосстановленныеНастройки.Возраст); КонецЕсли; /// Как удалить сохраненные настройки пользователя в 1с 8.3, 8.2 ХранилищеОбщихНастроек.Удалить( "Обработка.ТестированиеКода", // ключ объекта "Автор", // ключ настроек ИмяПользователя() // владелец настроек, пропускать нельзя // если указать Неопределено, то настрйка // удалиться у всех пользователей ); /// Как удалить сохраненные настройки у всех пользователей в 1с 8.3, 8.2 ХранилищеОбщихНастроек.Удалить( "Обработка.ТестированиеКода", // ключ объекта "Автор", // ключ настроек Неопределено // владелец настроек, пропускать нельзя ); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
При работе с программными продуктами фирмы 1С, возникает потребность разделения доступа к базе 1С разных людей. Для этих целей, в базе 1С можно создать пользователей информационной базы. Пользователи 1С создаются на этапе внедрения программного продукта заказчику, и для каждой базы 1С свой индивидуальный набор пользователей. Из этой статьи вы узнаете, как создаются пользователи в базе 1С, как выполняются основные настройки пользователя, как работать с списком пользователей в 1С, и как определить текущего пользователя.
Как создать пользователя в 1С
Как правило, при работе с современными конфигурациями 1С, создание пользователей осуществляется непосредственно в клиентском режиме. Способы создания пользователей в клиентском режиме могут отличаться в зависимости от видов продуктов, поэтому подробно в этой статье они рассматриваться не будут. Рассмотрим самый простой способ создания пользователя – используя конфигуратор 1С. Как правило, таким образом, создаются пользователи в учебных и тренировочных базах.
Для создания пользователя в конфигураторе 1С необходимо сначала выполнить команду «Пользователи» меню «Администрирование» главного меню.
Откроется список пользователей. Если вы только начали работать с информационной базой, то он будет пустой.
Для добавления нового пользователя следует выполнить команду «Добавить», в результате откроется окно «Пользователь».
В этом окне следует заполнить поля Имя и Полное имя. То, что вы укажете в поле Имя, будет отображаться в списке выбора при входе в информационную базу.
В большинстве случаев, достаточно установить флаг «Аутентификация 1С: Предприятия», ввести пароль и подтверждение пароля. Данная возможность не доступна для учебных версий платформы 1С.
Права пользователей 1С
Набор прав для пользователя устанавливается на закладке «Прочие», посредством установки отметок рядом с нужными ролями конфигурации.
Хотя бы у одного пользователя информационной базы обязательно должна быть роль с полными правами!
Подробно о том, как работать с ролями читайте в этой статье: роли в 1С.
После того, как создали пользователя с полными правами, вы можете создать любое количество пользователей с разными наборами прав.
Причем одному пользователю можно назначить несколько ролей.
Список пользователей 1С.
В списке пользователей в конфигураторе 1С можно добавлять, добавлять копированием, открывать на редактирование и удалять пользователей при помощи соответствующих команд.
Но самое интересное, в нём можно устанавливать отборы. Для этого следует нажать на кнопку Отбор, после этого, будет открыто окно Отбор, в котором можно настраивать разные варианты отборов.
Например, можно отобрать только пользователей с полными правами.
Если нужно снять отбор, то следует воспользоваться кнопкой «Отключить отбор».
Текущий пользователь 1С
Разберем, как определить текущего пользователя 1С.
Визуально сделать это достаточно просто. Текущего пользователя можно определить как в конфигураторе, так и в пользовательском клиенте. В конфигураторе необходимо или воспользоваться командой О программе (Главное меню – Справка), или иконкой «Показать информацию о программе».
В открывшемся окне «О программе» имя и полное имя текущего пользователя будут в разделе «Пользователь».
В пользовательском клиенте можно также воспользоваться командой О программе.
Путь для редакции платформы начиная с 8.3.15:
Путь для более старых редакции платформ (8.3.14 и ниже):
Откроется окно такое же, как при выполнении команды О программе конфигуратора 1С, где будет информация о текущем пользователе.
Также полное имя пользователя отображено в правом верхнем углу системной панели.
Для редакции платформы начиная с 8.3.15
Для более старых редакции платформ (8.3.14 и ниже).
Как определить активных пользователей информационной базы читайте в этой статье: активные пользователи 1С.
Для программного определения текущего пользователя нужно воспользоваться свойством глобального контекста ПользователиИнформационнойБазы, которое содержит общий объект МенеджерПользователейИнформационнойБазы. В этой статье не будем подробно разбирать работу с этим объектом, рассмотрим только, как определить имя текущего пользователя информационной базы.
Для демонстрации, создадим обработку ТекущийПользователь с формой, у которой будет один реквизит с типом Строка и одна команда.
У команды будет два обработчика, на сервере и на клиенте.
&НаСервере Процедура ОпределитьТекущегоПользователяНаСервере() ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь().Имя; КонецПроцедуры &НаКлиенте Процедура ОпределитьТекущегоПользователя(Команда) ОпределитьТекущегоПользователяНаСервере(); КонецПроцедуры
Команда вернёт имя текущего пользователя.
Другие статьи по теме:
Права пользователей 1С
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
Форум программистов Vingrad
Новости ·
Фриланс ·
FAQ
Правила ·
Помощь ·
Рейтинг ·
Избранное ·
Поиск ·
Участники
| Модераторы: bartram, Akella |
Поиск: |
| имя текущего пользователя |
Опции темы |
| Itsys |
|
||
|
Эксперт Профиль
Репутация: нет
|
Добрый день, Может кто подскажет, как получить имя текущего пользователя Windows (желательно из реестра) ЗЫ Задача в следующем: надо из 1С получить имя, под которым залогинился пользователь в Windows, для того, чтобы сравнить его с пользователем 1С и в случае чего пнуть его из программы. Есть ВК для 1С по работе с реестром. Заранее спасибо. |
||
|
|
|||
| localhost |
|
||
|
Хирург-длятехкт Профиль
Репутация: 37
|
Если кроме реестра ничего не подходит, то попробуйте посмотреть в сторону ветки А так, это легко делается средствами WMI:
Это сообщение отредактировал(а) localhost — 15.7.2008, 20:21 ——————— ВСЕ Нижегородцы! Отмечаемся здесь!!! |
||
|
|
|||
| Itsys |
|
||
|
Эксперт Профиль
Репутация: нет
|
localhost, спасибо, попробую… |
||
|
|
|||
| Itsys |
|
||
|
Эксперт Профиль
Репутация: нет
|
Получилось + |
||
|
|
|||
| Правила форума «Windows» | |
|
Запрещается! 1. Обсуждать взлом и делиться кряками 2. Способствовать созданию и распространению вирусов
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
| 0 Пользователей: |
| « Предыдущая тема | MS Windows | Следующая тема » |
