Опубликовано: 19.01.2021

Функции среды исполнения

Системные функции — это встроенные функции языка, доступные в любом программном модуле конфигурации. Доступ к системным функциям в текстах программных модулей непосредственный, то есть просто имя функции (без предварительной ссылки на какой-либо объект). Вызов любой системной функции в тексте программного модуля можно записывать как вызов процедуры, то есть в языке допускается игнорировать их возвращаемое значение.

Системные функции, речь о которых пойдёт в данной статье, используются для получения определённой информации о среде исполнения: компьютере, системе «1С:Предприятие», режиме работы и конкретном пользователе.

Функции для получения сведений о каталогах

Получить сетевое имя компьютера, работающего в данный момент с программой, позволяет системная функция ИмяКомпьютера() (англоязычный синоним — ComputerName()). Параметров у данной функции нет, а возвращаемым значением является строковое значение.

Пример использования:

Компьютер = ИмяКомпьютера();

Получить имя каталога технологической платформы системы «1С:Предприятие» позволяет системная функция КаталогПрограммы() (англоязычный синоним — BinDir()). Параметров у данной функции нет, а возвращаемым значением будет строка вида «C:\Program Files\1Cv77\BIN\».

Пример использования:

Каталог1С = КаталогПрограммы();

Получить имя каталога текущей информационной базы позволяет системная функция КаталогИБ() (англоязычный синоним — IBDir()). Параметров у данной функции нет, а возвращаемым значением будет строка вида «D:\1S_Base\1SBDB\».

Пример использования:

Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда
   Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда
      Предупреждение("Компонента v7plus.dll не найдена!");
      Возврат;
   КонецЕсли;
КонецЕсли;

Получить имя рабочего каталога пользователя позволяет системная функция КаталогПользователя() (англоязычный синоним — UserDir()). Параметров у данной функции нет, а возвращаемым значением будет строка вида «D:\1S_Base\1SBDB\usr1\». Если каталог пользователя в Конфигураторе не задан, функция возвращает имя каталога информационной базы.

Пример использования:

ФайлВыгрузки = КаталогПользователя() + "1sbtrans.txt";

Получить имя каталога временных файлов, как он установлен в системе «1С:Предприятие», позволяет функция КаталогВременныхФайлов() (англоязычный синоним — TempFilesDir()). Это может быть каталог, установленный в командной строке запуска системы «1С:Предприятие» или, если не указан, то каталог временных файлов установленный в операционной системе, например, C:\WINDOWS\Temp\.

Пример использования:

ВремКаталог = КаталогВременныхФайлов()+ "temp.grp\";

Функции для получения сведений о пользователе

Получить имя пользователя, работающего в данный момент с программой, позволяет системная функция ИмяПользователя() (англоязычный синоним — UserName()). Параметров у данной функции нет, а возвращаемым значением будет строка — имя пользователя, как оно указано в Конфигураторе.

Пример использования:

Пользователь = СокрЛП(ИмяПользователя());

Примечание: Имя пользователя устанавливается в Конфигураторе в списке пользователей (см. рис. ниже), вызвать который можно через главное меню последовательно выбрав пункты «Администрирование −> Пользователи».

Свойства пользователя

Получить полное имя пользователя, работающего в данный момент с программой, позволяет системная функция ПолноеИмяПользователя() (англоязычный синоним — UserFullName()). Параметров у данной функции нет, а возвращаемым значением будет строка — полное имя пользователя, как оно указано в Конфигураторе (см. рис. выше).

Пример использования:

Спр = СоздатьОбъект("Справочник.Сотрудники");
Спр.НайтиПоНаименованию(ПолноеИмяПользователя());
Менеджер = Спр.ТекущийЭлемент();
Если Менеджер.Выбран() = 0 Тогда
   Предупреждение("Не выбран менеджер!");
КонецЕсли;

Получить название набора прав пользователя, работающего в данный момент с программой, позволяет системная функция НазваниеНабораПрав() (англоязычный синоним — RightName()). Возвращаемым значением функции будет строка, содержащая содержащее название набора прав пользователя, либо пустая строка.

Синтаксис функции:

НазваниеНабораПрав(<ВыдИспНабПрав>);

где <ВыдИспНабПрав> — числовое значение — флаг, указывающий выдавать используемый набор прав или нет. Возможные значения: 0 — выдавать установленный пользователю набор прав; 1 — выдавать пустую строку, если пользователю набор прав назначен, но установлен режим отключения контроля набора прав (см. рис. ниже). Параметр <ВыдИспНабПрав> является необязательным. Значение по умолчанию — 0.

Пример использования:

МоиПрава = НазваниеНабораПрав();

Примечание: Набор прав пользователя устанавливается в Конфигураторе в списке пользователей, вызвать который можно через главное меню последовательно выбрав пункты «Администрирование −> Пользователи». В окне свойств пользователя следует перейти на вкладку «Роль» и выбрать набор прав в поле «Права».

Роль пользователя

Получить название интерфейса пользователя, работающего в данный момент с программой, позволяет системная функция НазваниеИнтерфейса() (англоязычный синоним — UserInterfaceName()). Параметров у данной функции нет, а возвращаемым значением будет строка — название интерфейса, заданного для пользователя в Конфигураторе (поле «Интерфейс» на рис. выше).

Пример использования функции:

МоиИнтерфейс = НазваниеИнтерфейса();

Узнать режим работы программы позволяет функция МонопольныйРежим() (англоязычный синоним — ExclusiveMode()), которая возвращает число 1, если программа запущена в монопольном режиме, или 0, если режим многопользовательский. Параметров у данной функции нет.

Пример использования:

Процедура Загрузка()
   Если МонопольныйРежим() > 0 Тогда
      ЗагрузитьНаряды();
   Иначе
      Предупреждение("Для запуска этой операции требуется монопольный режим доступа!!!");
   КонецЕсли;
КонецПроцедуры   // Загрузка()

Проверить наличие права доступа к указанному объекту для текущего пользователя позволяет системная функция ПравоДоступа() (англоязычный синоним — AccessRight()). Функция возвращает число 1, если право доступа есть, или 0, если права доступа нет.

Синтаксис функции:

ПравоДоступа(<НазваниеПрава>, <Объект>)

где

  • <НазваниеПрава> — строка с названием права доступа, как оно выводится в Конфигураторе (без пробелов);
  • <Объект> — строка с наименованием типа и вида объекта, например, "Справочник.Сотрудники". Для глобальных прав этот параметр не указывается. Для объектов, у которых нет вида, записывается только тип объекта, например, "Операция".

Пример использования:

Если ПравоДоступа("Чтение", "Документ.Счет") = 1 Тогда
   . . .
КонецЕсли;

// Если режим "Монопольный"
Если ПравоДоступа("МонопольныйРежим") = 1 Тогда
   . . .
КонецЕсли;

Функция проверки языка системы

Узнать значение основного языка конфигурации позволяет функция ОсновнойЯзык() (англоязычный синоним — GeneralLanguage()). Параметров у этой функции нет, а возвращаемым значением будет число 1, если основным языком конфигурации является русский, или 0, если основным языком конфигурации является английский.

Пример использования:

Процедура ПриЗаписиИстории(ИмяОбъекта, Объект, Значение, ДатаИстории)
   Если ОсновнойЯзык() = 1 Тогда
      СПР = "Справочник";
   Иначе
      СПР = "Reference";
   КонецЕсли;
   Если ИмяОбъекта = СПР + ".Валюты.Текущ_курс" Тогда
      Сообщить("Добавлено новое значение курса");
      Сообщить("Для валюты " + Объект.Наименование);
      Сообщить("На дату " + ДатаИстории);
      Сообщить("Установлено значение " + Значение);
   КонецЕсли;
КонецПроцедуры

Примечание: Значение основного языка конфигурации задается в Конфигураторе в окне свойств корневого элемента структуры метаданных.

Установка основного языка системы

Значение основного языка конфигурации используется системой в нескольких случаях, а именно, когда система передаёт в качестве параметра в предопределённую процедуру название объекта конфигурации. В этом случае название агрегатного типа данных передаётся либо в русском, либо в английском написании — в зависимости от текущей установки основного языка конфигурации.

Установка заголовка системы

Получить или установить заголовок окна программы позволяет системная функция ЗаголовокСистемы() (англоязычный синоним — SystemCaption()). Возвращаемым значением функции является строка — заголовок программы на момент предшествующий вызову функции.

Синтаксис функции:

ЗаголовокСистемы(<Заголовок>)

где <Заголовок> — строковое выражение, содержащее заголовок окна программы, который необходимо установить.

Пример использования:

// Устанавливаем заголовок
ЗаголовокСистемы(СокрЛП(Константа.НазваниеОрганизации));

Примечание: Обычно заголовок окна складывается из нескольких подстрок:

  • подстроки «1С:Предприятие»;
  • подстроки, взятой из синонима или идентификатра конфигурации (см. окно свойств корневого элемента структуры метаданных);
  • подстроки, установленной методом ЗаголовокСистемы();
  • подстроки, взятой из синонима или идентификатора открытой формы (когда открыта какая-либо форма).

Возвращает функция ЗаголовокСистемы() только ту часть заголовка (подстроку), которая была установлена с помощью этой системной функции ранее.

Другие статьи по схожей тематике