Устанавливает признак инициализации предопределенных данных области. Если значение параметра <Инициализированы> = Ложь, то предопределенные данные должны фактически отсутствовать.
Синтаксис
УстановитьИнициализациюПредопределенныхДанных(<Инициализированы>, <Область>)Полное описание, параметры и ограничения
СправочникМенеджер.<Имя справочника>.УстановитьИнициализациюПредопределенныхДанных (CatalogManager.<Catalog name>.SetPredefinedDataInitialization)
СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)
УстановитьИнициализациюПредопределенныхДанных (SetPredefinedDataInitialization)
Доступен, начиная с версии 8.3.5.
Синтаксис:
УстановитьИнициализациюПредопределенныхДанных(<Инициализированы>, <Область>)
Параметры:
<Инициализированы> (необязательный)
Тип: Булево.
Указывает, инициализированы ли предопределенные данные в области или нет.
Значение по умолчанию: Истина.
<Область> (необязательный)
Тип: Соответствие.
Данный параметр позволяет задать область объекта, в которой необходимо изменить признак проинициализированности.
Область описывается соответствием: разделитель - значение. Могут быть использованы только разделители, разделяющие данные в режиме НезависимоИСовместно.
Ключом соответствия может быть объект метаданных или имя разделителя.
Если разделители, переданные в этом параметре, установлены и используются в сеансе, то они игнорируются.
Значение по умолчанию: Неопределено.
Описание:
Устанавливает признак инициализации предопределенных данных области.
Если значение параметра <Инициализированы> = Ложь, то предопределенные данные должны фактически отсутствовать.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.3.5.
Методическая информация
Практические примеры
Проверить флаг инициализации только пустого собственного справочника
После подтверждения полного отсутствия записей читаем фактический флаг, проверяем его тип до изменения, сбрасываем/устанавливаем и возвращаем именно прочитанное начальное значение.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ отдельную пустую файловую базу 8.5.1.1343 с именем конфигурации УчебныеВыборкиКаталога85, совместимость НеИспользовать. Не рабочая база, не её копия, не РИБ. Здесь нет запуска: runtimeVerifiedScenarios=0.
Создайте единственный УчебныеТовары: иерархия групп и элементов, Код Строка(10), Наименование(100), единственный Артикул Строка(20), для групп и элементов, Индексировать. Владельцев, табличных частей и предопределенных элементов нет; в списке базы также нет ни одной записи.
Не добавляйте общие реквизиты-разделители, планы обмена, прочие объекты хранения, подписки, регламентные задания или расширения. Модули справочника и менеджера пусты. При будущем тесте один пользователь с правами администратора информационной базы; не включайте привилегированный режим ради обхода отказа прав.
Создайте неглобальные серверные общие модули УчебныйКаталог85 и УчебныеПримерыКаталога85, Вызов сервера=Да, клиентские флаги=Нет. Первый содержит полный отдельный модуль защиты ниже, второй — полный основной код одного выбранного урока. Подготовку пяти товаров из уроков выборки здесь не вставляйте и не вызывайте.
Создайте УчебныйПульт85 с управляемой формой Пульт, командой/кнопкой Выполнить. Вставьте полный отдельный модуль запуска ниже и назначьте действие Выполнить. Обновите конфигурацию базы, проверьте F7 и пустоту справочника вручную.
Это будущий административный опыт со служебными настройками собственной базы, не чистое чтение и не работа только в памяти. Методы установки действительно меняют служебное состояние; простого отката пользовательской транзакции урок не обещает. Никаких товаров/групп код не записывает и не удаляет.
Во время опыта конфигурацию не меняйте и другие сеансы не запускайте. Если восстановление само завершится ошибкой, не объявляйте исходное состояние восстановленным: сохраните сообщение и проверяйте только этот собственный учебный стенд.
Процедура ВыполнитьПример() Экспорт
УчебныйКаталог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.ВыполнитьПример();
КонецПроцедурыРазбор по шагам
Флаг инициализации — служебный признак области, не конкретный предопределенный товар. Оба метода принимают область-разделители; здесь она не задана, поскольку новая база без разделителей.
Проверка полного отсутствия записей строже требования отсутствия предопределенных данных. Ни одной существующей строки код не меняет, пометок и удаления нет.
В установленной справке именно у ПолучитьИнициализациюПредопределенныхДанных не объявлена секция возвращаемого типа. Поэтому выводим реальный ТипЗнч и допускаем изменение только после Булево; не выдаём это за документированную декларацию.
НачальныйПризнак сохраняется после проверки пустоты. Ложь допустима только при фактическом отсутствии предопределенных данных; наш собственный каталог пуст полностью.
После каждого setter читаем состояние заново: сброс должен дать Ложь, установка Истина. Это не создание предопределенных элементов и не настройка их автоматического обновления.
При успехе и исключении передаём НачальныйПризнак обратно setter и проверяем чтением. Если восстановление падает, успешного сообщения не будет; ошибка требует проверки только своего учебного стенда.
Как проверить результат
В будущем ручном тесте первым сообщением виден фактический тип. Если это не Булево, сценарий завершается до любого setter; это диагностическая остановка, а не пройденный опыт.
При Булево ожидаются подтвержденные Ложь/Истина и возврат начального значения. Не требуйте заранее, чтобы начальный флаг был Ложь: его читаем, а не придумываем.
Для проверки отказа сначала на отдельном собственном учебном стенде создайте обычную запись вручную. Урок должен отказать на ПроверитьОтсутствиеСвоихЗаписей до изменения признака; рабочие базы не используются.
Ожидаемый результат
Подготовлен административный цикл с проверкой фактического типа и возвратом собственного исходного признака; бизнес-данные не создаются. runtimeVerifiedScenarios=0.
На что обратить внимание
Не сбрасывайте инициализацию при наличии предопределенных данных. Снятие флага не является их безопасным удалением.
Отсутствующий параметр области не позволяет произвольно управлять любым клиентом/арендатором. Области разделения требуют другой подготовки и отдельной проверки сеанса.
Восстановление служебного флага не доказывает отсутствие любых внутренних служебных записей платформы. Транзакционного отката всех последствий здесь не обещаем.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.