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

Работа с константами

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

Для просмотра списка всех имеющихся в конфигурации констант и их значений необходимо в меню «Операции» выбрать пункт «Константы…».

Меню 'Операции'

При этом на экран будет выведено окно «Список констант».

Список констант

Периодические и непериодические константы

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

На то, что выбранная в списке константа является периодической, указывает доступность кнопки «История» на панели инструментов окна списка констант и соответствующего пункта контекстного меню.

Команда просмотра истории значения

После щелчка по этой кнопке или по соответствующему пункту контекстного меню, на экран будет выведено окно истории изменений значений данной константы.

История изменений значений константы

В окне «История» можно не только просмотреть значения константы и даты изменения, но и внести необходимые корректировки: какие-то значения удалить, что-то добавить, изменить даты и т.п.

Свойства констант

Для просмотра свойств константы в Конфигураторе необходимо щёлкнуть правой кнопкой мыши по значку конкретной константы и в выпадающем контекстном меню выбрать пункт «Свойства».

Вызов окна свойств константы

При этом на экран будет выведено окно палитры свойств выбранной константы.

Окно свойств константы

Здесь на вкладке «Общие» мы увидим такие свойства, как «Идентификатор», «Синоним», «Комментарий», «Тип значения», «Длина» и «Точность».

Идентификатор константы используется в программном коде для обращения к конкретной константе (например, с целью получения её значения или с целью установки этого значения). Свойства «Синоним» и «Комментарий» используются в формах. Значения синонимов имён констант и комментарии к ним можно увидеть, например, в списке констант, который вызывается из главного меню программы: «Операции −> Константы…» (см. рис. в начале статьи).

Свойство константы «Тип значения» позволяет установить тип данных, которые будут храниться в константе. Свойство «Длина» определяет максимальную длину хранимого значения для строк и чисел. Свойство «Точность» определяет количество знаков после запятой для числовых значений.

На вкладке «Дополнительные» для констант числового типа можно также задать разделение триад (в этом случае значение константы в полях ввода различных форм будет выводиться с визуальным разделением на триады) и запретить использование отрицательных значений. Здесь же на вкладке «Дополнительные» для константы можно установить признак «Периодическая».

Дополнительные свойства константы

На вкладке «Права» можно ограничить права отдельных групп пользователей системы на просмотр и/или редактирование значения константы.

Вкладка 'Права' окна свойств константы

Обращение к константам из программного кода

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

// получаем значение константы
ДатаРег = Константа.ДатаРегистрации;
// записываем значение константы
Константа.АдресОрганизации = "г.Москва, Вернадского, 523, 25";

Несколько иначе дела обстоят с так называемыми периодическими константами. Работа с ними осуществляется при помощи специальных методов Получить() и Установить(), о которых речь пойдёт ниже, либо при помощи специального агрегатного типа данных — "Периодический".

Методы констант

Установить значение константы по идентификатору, переданному в качестве параметра позволяет метод УстановитьАтрибут(). Англоязычный синоним имени метода — SetAttrib().

Синтаксис метода:

Константа.УстановитьАтрибут(<ИдентификаторКонстанты>, <3начение>);

где

  • <ИдентификаторКонстанты> — строковое выражение, содержащее идентификатор константы, как он записан в Конфигураторе;
  • <3начение> — выражение, содержащее устанавливаемое значение константы.

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

Константа.УстановитьАтрибут("ДатаЗапретаРедактирования", ТекущаяДата());

Получить значение константы по идентификатору, переданному в качестве параметра позволяет метод ПолучитьАтрибут(). Англоязычный синоним имени метода — GetAttrib().

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

ДатаЗапрРед = Константа.ПолучитьАтрибут("ДатаЗапретаРедактирования");

Назначить тип для константы неопределённого типа позволяет метод НазначитьТип(). Англоязычный синоним имени метода — SetType().

Синтаксис метода:

Константа.НазначитьТип(<ИдентификаторКонстанты>, <ИмяТипа>, <Длина>, <Точность>);

где

  • <ИдентификаторКонстанты> — строковое выражение, содержащее идентификатор константы неопределённого типа, как он записан в Конфигураторе;
  • <ИмяТипа> — строковое выражение, содержащее название типа данных (или вид субконто), который назначается константе, например, "Строка", "Число", "Дата", "Справочник.Товары" и т.п.;
  • <Длина> — числовое выражение, определяющее длину поля представления данных. Параметр не является обязательным и имеет смысл только при задании числового или строкового типа;
  • <Точность> — числовое выражение, определяющее число знаков после десятичной точки. Параметр не является обязательным и имеет смысл только при задании числового типа.

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

Константа.НазначитьТип("ТМЦ", "Справочник.Товары");

Примечание: Константы неопределённого типа — это константы, у которых свойство «Тип значения» установлено как <<"Неопределенный">>.

Константа неопределенного типа

Методы периодических констант

Получить значение периодической константы на дату, указанную в параметре, позволяет метод Получить(). Англоязычный синоним имени метода — GetValue().

Синтаксис метода:

Константа.<ИдентификаторКонстанты>.Получить(<Дата>)

где

  • <ИдентификаторКонстанты> — идентификатор константы, как он указан в Конфигураторе;
  • <Дата> — выражение типа "Дата", содержащее дату, по состоянию на которую необходимо получить значение константы.

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

// Получаем значение периодической константы "РазмерКомпенсации" на дату документа
РазмерДК = Константа.РазмерКомпенсации.Получить(ДатаДок);

Установить значение периодической константы на дату, указанную в параметре, позволяет метод Установить(). Англоязычный синоним имени метода — SetValue().

Синтаксис метода:

Константа.<ИдентификаторКонстанты>.Установить(<Дата>, <Значение>)

где

  • <ИдентификаторКонстанты> — идентификатор константы, как он указан в Конфигураторе;
  • <Дата> — выражение типа "Дата", содержащее дату, по состоянию на которую необходимо установить значение константы.
  • <3начение> — выражение, содержащее значение, которое необходимо установить.

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

Константа.РасчетныйСчет.Установить('01.07.96', "77889001010000456511");
Константа.Директор.Установить('01.01.85', "Иванов П.С.");

Предопределенная процедура ПриЗаписиКонстанты()

При интерактивной записи значения константы, системой «1С:Предприятие» производится вызов предопределённой процедуры ПриЗаписиКонстанты().

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

Синтаксис процедуры:

Процедура ПриЗаписиКонстанты(<ИмяКонстанты>, <3начение>)
    . . .
КонецПроцедуры

где

  • <ИмяКонстанты> — идентификатор константы, как он задан в Конфигураторе;
  • <3начение> — новое значение константы.

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

Процедура ПриЗаписиКонстанты(ИмяКонстанты, НовЗначение)
   Если ИмяКонстанты = "ТекущийПрефикс" Тогда
      Если НазваниеНабораПрав() = "Продавец" Тогда
         Предупреждение("У вас нет права менять префикс!", 2);
         СтатусВозврата(0);
      КонецЕсли;
   КонецЕсли;
КонецПроцедуры

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