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

Методы · GetPredefinedDataInitialization

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

Синтаксис

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

ПланВидовРасчетаМенеджер.<Имя плана видов расчета>.ПолучитьИнициализациюПредопределенныхДанных (ChartOfCalculationTypesManager.<Chart of calculation types name>.GetPredefinedDataInitialization)

ПланВидовРасчетаМенеджер.<Имя плана видов расчета> (ChartOfCalculationTypesManager.<Chart of calculation types name>)

ПолучитьИнициализациюПредопределенныхДанных (GetPredefinedDataInitialization)

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

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

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

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

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

Сервер, толстый клиент, внешнее соединение.
Вызов метода выполняет обращение к серверу.

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

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

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

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

Признак инициализации и политика предопределённых данных пустого плана

В отдельном своём пустом вспомогательном плане проверим признаки/режимы и восстановим известное исходное raw-значение Авто, не подменяя его вычисленным getter-результатом.

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

Полный обычный клиентский общий модуль УчебныеВиды85, только толстый клиент. Пульт и модуль объекта отдельными полными блоками ниже; не выполнялся.

Подготовка

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

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

  3. Создайте собственную обработку УчебныеВиды85 с обычной основной формой Пульт. Кнопка Выполнить, действие ВыполнитьНажатие; отдельный полный модуль формы приведён ниже. F7 и обновление только своего стенда, запуск Пульта в толстом клиенте.

  4. Для основных опытов используется одна сессия, никаких фоновых обменов, расширений, сторонних обработчиков или других пользователей, меняющих записи. Код читает собственные виды и изменяет полученный объект только в памяти. Записать, удаление, проведение, расчёт регистров, файлы и сеть не вызываются.

  5. ТОЛЬКО ДЛЯ ЭТОГО УРОКА: отдельный вспомогательный план Уч85ПустыеВиды, без предопределённых элементов, записей и обработчиков; код Строка(10), наименование 100, период действия выключен, зависимость НеИспользовать. Метаданные и настройки новой независимой базы оставьте в исходной политике Авто, setter раньше не вызывался.

  6. Выполнять будущий ручной служебный опыт только своим администратором в единственной сессии новой базы без разделителей/РИБ. Если исходная политика неизвестна, не запускайте и не заменяйте проверку ожидаемым значением.

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

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

Процедура ПроверитьСвойКонтекст()
    Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
        ВызватьИсключение "Нужен собственный стенд УчебныеМенеджерыРасчетов85 платформы 8.5.1.1343";
    КонецЕсли;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
    КонецЕсли;
КонецПроцедуры
УчебныеВиды85.Пульт

УчебныеМенеджерыРасчетов85 → Обработки → УчебныеВиды85 → Формы → Пульт → Модуль

Полный модуль собственной обычной формы, не выполнялся.

Процедура ВыполнитьНажатие(Кнопка)
    УчебныеВиды85.ВыполнитьПример();
КонецПроцедуры

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

  1. Это отдельный служебный опыт будущего администратора своего нового стенда. Уч85Начисления с A/B/C вообще не используется; выбирается только полностью пустой Уч85ПустыеВиды без предопределённых видов.

  2. До изменений проверяется отсутствие любой записи. ПолучитьИнициализациюПредопределенныхДанных в статье не имеет раздела возвращаемого типа; код требует фактическое Булево и без него прекращает опыт.

  3. Методы области могут принимать Соответствие с разделителями. Здесь разделителей в конфигурации/сеансе нет, область не задаётся; это не рецепт изменения чужой области данных.

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

  5. ПолучитьОбновлениеПредопределенныхДанных выдаёт вычисленный эффективный режим из нескольких уровней. В новом независимом стенде заранее известно raw-значение Авто, эффективный результат ожидается ОбновлятьАвтоматически.

  6. Штатные setters ставят НеОбновлятьАвтоматически, затем ОбновлятьАвтоматически; каждый режим сверяется getter. Это служебные изменения будущего ручного опыта, не просто локальные переменные.

  7. В успехе и исключении отдельный помощник возвращает начальный флаг и именно Авто в данных. Возврат вычисленного ОбновлятьАвтоматически вместо Авто закрепил бы override и был бы неправильным восстановлением.

  8. После возврата вновь проверяется исходный эффективный режим и пустота плана. Нет автоматической очистки, удаления предопределений или выдачи успешного результата после неподтверждённого восстановления.

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

  1. Будущий тест только в своём новом пустом вспомогательном плане, администратор, без разделителей/РИБ; F7. Здесь системные режимы не менялись.

  2. Сначала фактический флаг Булево, эффективный режим ОбновлятьАвтоматически. При другом режиме опыт прекращается до setters.

  3. После Ложь/Истина getter возвращает соответствующий флаг; после двух явных режимов getter подтверждает выбранное значение.

  4. В обоих путях восстановления устанавливается Авто, а не эффективный результат. Начальный флаг и эффективная политика совпадают с исходными.

  5. Вспомогательный план остаётся без записей. Если восстановление не подтверждено, сохраните точную ошибку и не продолжайте на рабочей базе.

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

Будущий результат: четыре служебных метода проверены на своём пустом плане с восстановлением начального флага и известного исходного raw-режима.

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

  1. УстановитьОбновлениеПредопределенныхДанных требует права администратора, недоступен при используемых разделителях и реально меняет служебные данные. Это не тест для рабочей конфигурации.

  2. Getter эффективной политики не показывает raw override. Без заранее известного исходного Авто произвольное восстановление по одному getter небезопасно.

  3. Если предопределённые данные есть, нельзя ставить инициализацию Ложь. У нас проверяется пустота всех записей, нет предопределений метаданных.

  4. Изменение режимов не является созданием/расчётом зарплаты. Здесь 1С не запускалась, runtimeVerifiedScenarios=0; будущий служебный опыт явно отделён от остальных read-only уроков.

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

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

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

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

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