КонстантыМенеджер.СоздатьНабор

Методы · CreateSet

Создает объект управления константами.

Синтаксис

СоздатьНабор(<НаборКонстант>)
СоздатьНабор(<НаборКонстант>)

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

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

КонстантыМенеджер.СоздатьНабор (ConstantsManager.CreateSet)

КонстантыМенеджер (ConstantsManager)

СоздатьНабор (CreateSet)

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

Вариант синтаксиса: По строке

Синтаксис:
СоздатьНабор(<НаборКонстант>)
Параметры:

<НаборКонстант> (обязательный)
Тип: Строка.
Строка, содержащая перечисленные через запятую имена констант, для управления которыми создается объект.
Если строка пустая, объект может быть использован для управления всеми константами.
Вариант синтаксиса: По массиву

Синтаксис:
СоздатьНабор(<НаборКонстант>)
Параметры:

<НаборКонстант> (необязательный)
Тип: Массив.
Массив значений, содержащий строки-имена констант и (или) соответствующие константам значения типа ОбъектМетаданных: ОпределяемыйТип, ОбъектМетаданных: Куб, ОбъектМетаданных: ТаблицаИзмерения, ОбъектМетаданных: ВнешнийИсточникДанных, ОбъектМетаданных: Поле, ОбъектМетаданных: Таблица, ОбъектМетаданных: HTTPСервис, ОбъектМетаданных: Функция, ОбъектМетаданных: ШаблонURLHTTPСервиса, ОбъектМетаданных: Бот, ОбъектМетаданных: WebSocketКлиент, ОбъектМетаданных: ПланВидовРасчета, ОбъектМетаданных: ПланСчетов, ОбъектМетаданных: БизнесПроцесс, ОбъектМетаданных: Документ, ОбъектМетаданных: ЖурналДокументов, ОбъектМетаданных: Задача, ОбъектМетаданных: ПланВидовХарактеристик, ОбъектМетаданных: ПланОбмена, ОбъектМетаданных: РегистрБухгалтерии, ОбъектМетаданных: РегистрНакопления, ОбъектМетаданных: РегистрРасчета, ОбъектМетаданных: РегистрСведений, ОбъектМетаданных: Справочник, ОбъектМетаданных: ФункциональнаяОпция, ОбъектМетаданных: ПараметрФункциональныхОпций, ОбъектМетаданных: Команда, ОбъектМетаданных: ГруппаКоманд, ОбъектМетаданных: ХранилищеНастроек, ОбъектМетаданных: ОбщаяКоманда, ОбъектМетаданных: ЦветПалитры, ОбъектМетаданных: СервисИнтеграции, ОбъектМетаданных: WebСервис, ОбъектМетаданных: WSСсылка, ОбъектМетаданных: Интерфейс, ОбъектМетаданных: Константа, ОбъектМетаданных: КритерийОтбора, ОбъектМетаданных: Нумератор, ОбъектМетаданных: Обработка, ОбъектМетаданных: ОбщаяКартинка, ОбъектМетаданных: Макет, ОбъектМетаданных: ОбщийМодуль, ОбъектМетаданных: Форма, ОбъектМетаданных: Стиль, ОбъектМетаданных: Язык, ОбъектМетаданных: Отчет, ОбъектМетаданных: ПакетXDTO, ОбъектМетаданных: ПараметрСеанса, ОбъектМетаданных: Перечисление, ОбъектМетаданных: ПодпискаНаСобытие, ОбъектМетаданных: Подсистема, ОбъектМетаданных: Последовательность, ОбъектМетаданных: РегламентноеЗадание, ОбъектМетаданных: Роль, ОбъектМетаданных: ЭлементСтиля, ОбъектМетаданных: Графа, ОбъектМетаданных: Измерение, ОбъектМетаданных: ЗначениеПеречисления, ОбъектМетаданных: ОперацияWebСервиса, ОбъектМетаданных: Перерасчет, ОбъектМетаданных: ПараметрWebСервиса, ОбъектМетаданных: ПризнакУчетаПланаСчетов, ОбъектМетаданных: ПризнакУчетаСубконтоПланаСчетов, ОбъектМетаданных: Реквизит, ОбъектМетаданных: ТабличнаяЧасть, ОбъектМетаданных: Ресурс, ОбъектМетаданных: РеквизитАдресации, ОбъектМетаданных: КаналСервисаИнтеграции, ОбъектМетаданных: ОбщийРеквизит. Этот список определяет набор констант, для управления которыми создается объект.
Если параметр не указан, объект может быть использован для управления всеми константами.
Значение по умолчанию: Пустой массив.
Возвращаемое значение:
Тип: КонстантыНабор.

Описание:

Создает объект управления константами.

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

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

Пример:

// Создание набора по строке

НаборКонстант = Константы.СоздатьНабор("Директор,Бухгалтер");

// Создание набора по массиву

МассивКонстант = Новый Массив;
МассивКонстант.Добавить(Метаданные.Константы.Директор);
МассивКонстант.Добавить(Метаданные.Константы.Бухгалтер);
НаборКонстант = Константы.СоздатьНабор(МассивКонстант);

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

Доступен, начиная с версии 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С» и не аффилирован с ней.