КонстантыНабор

Типы · ConstantsSet

Предоставляет возможность проведения операций чтения и записи сразу для группы констант, в частном случае - для всех констант. Состав набора определяется с помощью параметра <НаборКонстант> метода СоздатьНабор объекта КонстантыМенеджер. Объект также используется в форме констант для хранения, записи и считывания констант.

Примеры платформы

НаборКонстант = Константы.СоздатьНабор("Директор,Бухгалтер");
НаборКонстант.Прочитать();
Если ПустаяСтрока(НаборКонстант.Директор) Тогда
    НаборКонстант.Директор  = "Иванов Сидор Петрович";
КонецЕсли;
Если ПустаяСтрока(НаборКонстант.Бухгалтер) Тогда
    НаборКонстант.Бухгалтер = "Сидоров Петр Иванович";
КонецЕсли;
НаборКонстант.Записать();
Полное описание, параметры и ограничения

КонстантыНабор (ConstantsSet)

КонстантыНабор (ConstantsSet)

Доступен, начиная с версии 8.0.

Свойства:
<Имя константы> (<Constant name>)

Методы:
Записать (Write)
ПолучитьФорму (GetForm)
ПроверитьЗаполнение (CheckFilling)
Прочитать (Read)

Описание:

Предоставляет возможность проведения операций чтения и записи сразу для группы констант, в частном случае - для всех констант. Состав набора определяется с помощью параметра <НаборКонстант> метода СоздатьНабор объекта КонстантыМенеджер. Объект также используется в форме констант для хранения, записи и считывания констант.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Пример:

НаборКонстант = Константы.СоздатьНабор("Директор,Бухгалтер");
НаборКонстант.Прочитать();
Если ПустаяСтрока(НаборКонстант.Директор) Тогда
НаборКонстант.Директор = "Иванов Сидор Петрович";
КонецЕсли;
Если ПустаяСтрока(НаборКонстант.Бухгалтер) Тогда
НаборКонстант.Бухгалтер = "Сидоров Петр Иванович";
КонецЕсли;
НаборКонстант.Записать();

См. также:
КонстантыМенеджер, метод СоздатьНабор
КонстантыНабор, свойство <Имя константы>
Расширение формы клиентского приложения для констант, событие ПриЗаписиНаСервере
Расширение формы клиентского приложения для констант, событие ПередЗаписьюНаСервере
Расширение формы клиентского приложения для констант, событие ПослеЗаписиНаСервере
Расширение формы клиентского приложения для констант, событие ПриЧтенииНаСервере

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Загрузить две учебные константы в набор и изменить только копию в памяти

СоздатьНабор с явным списком имён ограничивает набор нужными учебными константами. Само изменение набора ещё не сохранение.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Новая пустая файловая учебная база с именем корня конфигурации Учебная85. Не используйте константы рабочей УТ/КА2/УНФ/БП.

  2. Константы → Добавить: УчебныйЗаголовок (Строка длиной 100, Проверка заполнения Показывать ошибку) и УчебныйЛимит (Число 9,0, неотрицательное, Проверка заполнения Не проверять).

  3. Модули менеджеров значений констант и модули набора констант оставьте пустыми; внешние вызовы и подписки на записи не создавайте. Обновите конфигурацию базы данных.

  4. Вставьте фрагмент в тело серверной ВыполнитьПример() Экспорт. Каждую задачу запускайте отдельно в собственной учебной базе.

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

Разбор по шагам

  1. Перед созданием набора читаем два сохранённых значения для сравнения.

  2. Явный список имён исключает другие константы даже в собственной учебной конфигурации.

  3. Прочитать наполняет динамические свойства набора; их типы задаются подготовленными метаданными.

  4. ПроверитьЗаполнение выполняется после учебных правок. Записать не вызывается.

  5. СоздатьКлючЗначения без параметра по справке создаёт пустой ключ. Это не создание новой константы и не присваивание её значения.

Как проверить результат

  1. Семь сравнений Истина.

  2. Сохранённые значения остаются прежними, изменён только свой экземпляр набора.

  3. Ключ относится к метаданным УчебныйЗаголовок и создан пустым.

Ожидаемый результат

Разобраны явный состав набора констант, чтение и изменение в памяти без записи.

На что обратить внимание

  1. Для ключей с общими реквизитами-разделителями нужен отдельный учебный пример разделения данных.

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

  3. Проверка заполнения набора не записывает его.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Записать пару учебных настроек одним набором и отменить

Набор ограничен двумя явно названными константами. После отмены проверяем обе, чтобы не потерять половину настроек.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Новая пустая файловая учебная база с именем корня конфигурации Учебная85. Не используйте константы рабочей УТ/КА2/УНФ/БП.

  2. Константы → Добавить: УчебныйЗаголовок (Строка длиной 100, Проверка заполнения Показывать ошибку) и УчебныйЛимит (Число 9,0, неотрицательное, Проверка заполнения Не проверять).

  3. Модули менеджеров значений констант и модули набора констант оставьте пустыми; внешние вызовы и подписки на записи не создавайте. Обновите конфигурацию базы данных.

  4. Вставьте фрагмент в тело серверной ВыполнитьПример() Экспорт. Каждую задачу запускайте отдельно в собственной учебной базе.

  5. Запись временная, только в новой учебной базе с пустыми модулями. В коде нет фиксации транзакции и нет изменения рабочих настроек.

Если Метаданные.Константы.Найти("УчебныйЗаголовок") = Неопределено
    Или Метаданные.Константы.Найти("УчебныйЛимит") = Неопределено Тогда
    ВызватьИсключение "Подготовьте две собственные учебные константы";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
    ВызватьИсключение "Урок требует своей отдельной транзакции";
КонецЕсли;
СтарыйЗаголовок = Константы.УчебныйЗаголовок.Получить();
СтарыйЛимит = Константы.УчебныйЛимит.Получить();
Набор = Константы.СоздатьНабор("УчебныйЗаголовок,УчебныйЛимит");
Набор.Прочитать();
Набор.УчебныйЗаголовок = "Учебная настройка — откат";
Набор.УчебныйЛимит = 25;
Если Не Набор.ПроверитьЗаполнение() Тогда
    ВызватьИсключение "Учебные настройки не заполнены";
КонецЕсли;
НачатьТранзакцию();
Попытка
    Набор.Записать();
    Сообщить(Константы.УчебныйЗаголовок.Получить() = "Учебная настройка — откат");
    Сообщить(Константы.УчебныйЛимит.Получить() = 25);
    ОтменитьТранзакцию();
Исключение
    Если ТранзакцияАктивна() Тогда
        ОтменитьТранзакцию();
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;
Если Константы.УчебныйЗаголовок.Получить() <> СтарыйЗаголовок
    Или Константы.УчебныйЛимит.Получить() <> СтарыйЛимит Тогда
    ВызватьИсключение "Откат обеих учебных настроек не подтверждён";
КонецЕсли;
Сообщить("Обе учебные константы восстановлены; чужие настройки не входили в набор.");

Разбор по шагам

  1. СоздатьНабор получает ровно два имени, поэтому третьи константы не должны участвовать в записи.

  2. Прочитать сохраняет значения базы в экземпляре, затем задаём два учебных значения.

  3. До начала записи ПроверитьЗаполнение контролирует непустой заголовок.

  4. В собственной транзакции Записать сохраняет набор; оба значения читаем менеджерами констант.

  5. После намеренного отката проверяем оба старых значения. Ошибка по одному из них также считается неполным откатом.

Как проверить результат

  1. Два сравнения внутри транзакции Истина.

  2. После завершения обе константы точно равны своим исходным значениям.

  3. Другие константы не добавлены в состав набора и не изменялись.

Ожидаемый результат

Полный пример согласованной пары настроек с проверяемым откатом обеих записей.

На что обратить внимание

  1. Не используйте СоздатьНабор без списка имён для учебного изменения на неизвестной базе.

  2. Откат транзакции не делает безопасными внешние побочные действия обработчиков, поэтому подготовка с пустыми модулями обязательна.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.