Все константы хранятся в одной таблице, которая состоит из 2 строк и произвольного количества столбцов. Из этого следует, что не стоит часто менять константы в коде, так как одну строку не могут одновременно обрабатывать несколько пользователей.
Можно создать одну форму для задания констант. Для этого на ветке «Константы» в контекстном меню выбираем соответствующий пункт. В итоге создается общая форма.
Модифицировать значение можно в событии «ПередЗаписью». События срабатывают для всех констант, размещенных на форме.
Программное изменение константы на сервере:
Зн = Константы.КоличествоВыходныхВГоду.Получить();
Константы.КоличествоВыходныхВГоду.Установить(Зн+12);
Модуль менеджера значений
Последовательность выполнения процедур:
- Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) - срабатывает только при интерактивной изменении константы. При программном изменении константы не срабатывает.
- Процедура ПередЗаписью(Отказ)
- Процедура ПриЗаписи(Отказ)
Получить значение константы в модуле менеджера значений можно через свойство "Значение". (Если Значение = ...)
КонстантыНабор лучше использовать исходя из целей оптимизации, так как запись и чтение происходит за одно обращение к серверу.
Пример обращения:
Набор = Константы.СоздатьНабор();
Набор.Прочитать();
Сообщить(Набор.КоличествоВыходныхВГоду);
Набор.ТочностьРасчета=2;
Набор.Записать();
Шаблоны операций с константами:
// прочитать значение константы
Результат = Константы.ПрефиксНумерации.Получить();
//Результат = Константы.ПрефиксНумерации.Получить();
// установить значение константы ПрефиксНумерации равным ЦБ.
Константы["ПрефиксНумерации"].Установить("ЦБ");
// очистить значения всех констант.
Для Каждого ОчереднаяКонстанта Из Константы Цикл
ОчереднаяКонстанта.Установить(Неопределено);
КонецЦикла;
// установить новые значения нескольких констант.
Набор = Константы.СоздатьНабор("Руководитель, Бухгалтер");
Набор.Руководитель = "Николаев Денис Павлович";
Набор.Бухгалтер = "Николаева Людмила Сергеевна";
Набор.Записать();
//вывести значения всех констант, существующих в конфигурации.
Для Каждого ОчереднаяКонстанта Из Константы Цикл
ИмяКонст = ОчереднаяКонстанта.СоздатьМенеджерЗначения().Метаданные().Имя;
ЗначениеКонст = ОчереднаяКонстанта.Получить();
Сообщить("Константа "+ ИмяКонст +" = "+ ЗначениеКонст);
КонецЦикла;
Последовательность событий
Заливкой выделены события, выполняющиеся в транзакции записи.
|