СправочникМенеджер.<Имя справочника>.УстановитьИнициализациюПредопределенныхДанных

Методы · SetPredefinedDataInitialization

Устанавливает признак инициализации предопределенных данных области. Если значение параметра <Инициализированы> = Ложь, то предопределенные данные должны фактически отсутствовать.

Синтаксис

УстановитьИнициализациюПредопределенныхДанных(<Инициализированы>, <Область>)
Полное описание, параметры и ограничения

СправочникМенеджер.<Имя справочника>.УстановитьИнициализациюПредопределенныхДанных (CatalogManager.<Catalog name>.SetPredefinedDataInitialization)

СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)

УстановитьИнициализациюПредопределенныхДанных (SetPredefinedDataInitialization)

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

Синтаксис:
УстановитьИнициализациюПредопределенныхДанных(<Инициализированы>, <Область>)
Параметры:

<Инициализированы> (необязательный)
Тип: Булево.
Указывает, инициализированы ли предопределенные данные в области или нет.
Значение по умолчанию: Истина.

<Область> (необязательный)
Тип: Соответствие.
Данный параметр позволяет задать область объекта, в которой необходимо изменить признак проинициализированности.
Область описывается соответствием: разделитель - значение. Могут быть использованы только разделители, разделяющие данные в режиме НезависимоИСовместно.
Ключом соответствия может быть объект метаданных или имя разделителя.
Если разделители, переданные в этом параметре, установлены и используются в сеансе, то они игнорируются.
Значение по умолчанию: Неопределено.
Описание:

Устанавливает признак инициализации предопределенных данных области.
Если значение параметра <Инициализированы> = Ложь, то предопределенные данные должны фактически отсутствовать.

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

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

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

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

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

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

Проверить флаг инициализации только пустого собственного справочника

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

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

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

Подготовка

  1. Создайте НОВУЮ отдельную пустую файловую базу 8.5.1.1343 с именем конфигурации УчебныеВыборкиКаталога85, совместимость НеИспользовать. Не рабочая база, не её копия, не РИБ. Здесь нет запуска: runtimeVerifiedScenarios=0.

  2. Создайте единственный УчебныеТовары: иерархия групп и элементов, Код Строка(10), Наименование(100), единственный Артикул Строка(20), для групп и элементов, Индексировать. Владельцев, табличных частей и предопределенных элементов нет; в списке базы также нет ни одной записи.

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

  4. Создайте неглобальные серверные общие модули УчебныйКаталог85 и УчебныеПримерыКаталога85, Вызов сервера=Да, клиентские флаги=Нет. Первый содержит полный отдельный модуль защиты ниже, второй — полный основной код одного выбранного урока. Подготовку пяти товаров из уроков выборки здесь не вставляйте и не вызывайте.

  5. Создайте УчебныйПульт85 с управляемой формой Пульт, командой/кнопкой Выполнить. Вставьте полный отдельный модуль запуска ниже и назначьте действие Выполнить. Обновите конфигурацию базы, проверьте F7 и пустоту справочника вручную.

  6. Это будущий административный опыт со служебными настройками собственной базы, не чистое чтение и не работа только в памяти. Методы установки действительно меняют служебное состояние; простого отката пользовательской транзакции урок не обещает. Никаких товаров/групп код не записывает и не удаляет.

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

Процедура ВыполнитьПример() Экспорт
    УчебныйКаталог85.ПроверитьСвойСтенд();
    ПроверитьОтсутствиеСвоихЗаписей();
    Менеджер = Справочники.УчебныеТовары;
    НачальныйПризнак = Менеджер.ПолучитьИнициализациюПредопределенныхДанных();
    Сообщить("Фактический тип признака: " + Строка(ТипЗнч(НачальныйПризнак)));
    Если ТипЗнч(НачальныйПризнак) <> Тип("Булево") Тогда
        ВызватьИсключение "Установленное описание не объявляет возвращаемый тип; изменение не выполняем без фактического Булево";
    КонецЕсли;
    Попытка
        Менеджер.УстановитьИнициализациюПредопределенныхДанных(Ложь);
        ПослеСброса = Менеджер.ПолучитьИнициализациюПредопределенныхДанных();
        Если ТипЗнч(ПослеСброса) <> Тип("Булево") Или ПослеСброса <> Ложь Тогда
            ВызватьИсключение "На своем пустом стенде ожидался сброшенный признак";
        КонецЕсли;
        Менеджер.УстановитьИнициализациюПредопределенныхДанных(Истина);
        ПослеУстановки = Менеджер.ПолучитьИнициализациюПредопределенныхДанных();
        Если ТипЗнч(ПослеУстановки) <> Тип("Булево") Или ПослеУстановки <> Истина Тогда
            ВызватьИсключение "Ожидался установленный признак";
        КонецЕсли;
    Исключение
        Менеджер.УстановитьИнициализациюПредопределенныхДанных(НачальныйПризнак);
        Если Менеджер.ПолучитьИнициализациюПредопределенныхДанных() <> НачальныйПризнак Тогда
            ВызватьИсключение "Не подтверждено восстановление своего начального признака после ошибки";
        КонецЕсли;
        ВызватьИсключение;
    КонецПопытки;
    Менеджер.УстановитьИнициализациюПредопределенныхДанных(НачальныйПризнак);
    Если Менеджер.ПолучитьИнициализациюПредопределенныхДанных() <> НачальныйПризнак Тогда
        ВызватьИсключение "Не подтверждено восстановление своего начального признака";
    КонецЕсли;
    Сообщить("Сброс и установка проверены; свой начальный признак восстановлен");
КонецПроцедуры

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

УчебныеВыборкиКаталога85 → Общие → Общие модули → УчебныйКаталог85

Полный серверный модуль проверки своего стенда; не выполнялся.

Процедура ПроверитьСвойСтенд() Экспорт
    Если Метаданные.Справочники.Количество() <> 1 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
        ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
    КонецЕсли;
    Каталог = Метаданные.Справочники[0];
    Если Каталог.Имя <> "УчебныеТовары" Или Не Каталог.Иерархический
        Или Каталог.Реквизиты.Количество() <> 1 Или Каталог.Реквизиты.Найти("Артикул") = Неопределено Тогда
        ВызватьИсключение "Нужен собственный иерархический справочник с единственным реквизитом Артикул";
    КонецЕсли;
    Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
        ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
    КонецЕсли;
    Источники = Новый Массив;
    Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
    Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
    Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
    Для Каждого Источник Из Источники Цикл
        Расширения = РасширенияКонфигурации.Получить(, Источник);
        Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
            ВызватьИсключение "Native список расширений должен иметь тип Массив";
        КонецЕсли;
        Если Расширения.Количество() <> 0 Тогда
            ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
        КонецЕсли;
    КонецЦикла;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
    КонецЕсли;
КонецПроцедуры
УчебныйПульт85.Пульт

УчебныеВыборкиКаталога85 → Обработки → УчебныйПульт85 → Формы → Пульт → Модуль

Полный модуль запуска управляемой формы собственного пульта; не выполнялся.

&НаКлиенте
Процедура Выполнить(Команда)
    ВыполнитьНаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВыполнитьНаСервере()
    УчебныеПримерыКаталога85.ВыполнитьПример();
КонецПроцедуры

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

  1. Флаг инициализации — служебный признак области, не конкретный предопределенный товар. Оба метода принимают область-разделители; здесь она не задана, поскольку новая база без разделителей.

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

  3. В установленной справке именно у ПолучитьИнициализациюПредопределенныхДанных не объявлена секция возвращаемого типа. Поэтому выводим реальный ТипЗнч и допускаем изменение только после Булево; не выдаём это за документированную декларацию.

  4. НачальныйПризнак сохраняется после проверки пустоты. Ложь допустима только при фактическом отсутствии предопределенных данных; наш собственный каталог пуст полностью.

  5. После каждого setter читаем состояние заново: сброс должен дать Ложь, установка Истина. Это не создание предопределенных элементов и не настройка их автоматического обновления.

  6. При успехе и исключении передаём НачальныйПризнак обратно setter и проверяем чтением. Если восстановление падает, успешного сообщения не будет; ошибка требует проверки только своего учебного стенда.

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

  1. В будущем ручном тесте первым сообщением виден фактический тип. Если это не Булево, сценарий завершается до любого setter; это диагностическая остановка, а не пройденный опыт.

  2. При Булево ожидаются подтвержденные Ложь/Истина и возврат начального значения. Не требуйте заранее, чтобы начальный флаг был Ложь: его читаем, а не придумываем.

  3. Для проверки отказа сначала на отдельном собственном учебном стенде создайте обычную запись вручную. Урок должен отказать на ПроверитьОтсутствиеСвоихЗаписей до изменения признака; рабочие базы не используются.

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

Подготовлен административный цикл с проверкой фактического типа и возвратом собственного исходного признака; бизнес-данные не создаются. runtimeVerifiedScenarios=0.

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

  1. Не сбрасывайте инициализацию при наличии предопределенных данных. Снятие флага не является их безопасным удалением.

  2. Отсутствующий параметр области не позволяет произвольно управлять любым клиентом/арендатором. Области разделения требуют другой подготовки и отдельной проверки сеанса.

  3. Восстановление служебного флага не доказывает отсутствие любых внутренних служебных записей платформы. Транзакционного отката всех последствий здесь не обещаем.

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

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

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

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

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