В 1С БП Корп через расширение документ РеализацияТоваровУслуг.ФормаРеквизитыОрганизацииКонтрагентаУслуг расположен реквизит РаспределениеМП с двумя полями переключателя: ЮЛ и ГРП (см. скрин1) , подтягивающих по умолчанию значения перечисления ЮЛ из процедуры &НаСервере ДК1_ПриСозданииНаСервереВместо(Отказ, СтандартнаяОбработка)

```1c
    Если ЭтаФорма.РаспредлениеМПМеждуОтделомИГРП.Пустая() Тогда
    ЭтаФорма.РаспредлениеМПМеждуОтделомИГРП = Перечисления.ДК1_РаспределениеМП.РаспределениеМПЮЛ
```

Задачей стоит убрать из формы переключатель РаспредлелниеМП, если контрагент - физическое лицо.

Пробовал реализовать через событие ПриИзменении (см. скрин2)

```1c
    &НаКлиенте
    &ИзменениеИКонтроль ("ПриОткрытииПосле")
    Процедура ДК1_ПриОткрытииПосле(Отказ)
    #Вставка
    Если Контрагент = ПредопределенноеЗначение ("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
    ЭтаФорма.РаспредлениеМПМеждуОтделомИГРП = Неопределено;
    КонецЕсли;
    ОбновитьИнтрфейс();
    #КонецВставки
    КонецПроцедуры
```

Но по отладке не заходит.
---
И китайский DeepSeek и Grok3 Маска указали на все ошибки:
1. Событие ПриОткрытииПосле зависит от момента открытия формы, а проверка выполняется только один раз, код может не срабатывать, если данные контрагента еще не загрузились или изменились позже. Нужно использовать ПриИзменении.

2. Неправильное сравнение типа контрагента. Контрагент — это ссылка на справочник "Контрагенты", а не значение перечисления ЮридическоеФизическоеЛицо.

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

4. ОбновитьИнтерфейс() не влияет на видимость конкретного элемента формы.
А рабочий код выдал Grok3:

```1c
    // Перехват события "ПриСозданииНаСервере" для проверки при открытии формы
    &Вместо("ПриСозданииНаСервере")
    Процедура ДК1_ПриСозданииНаСервереВместо(Отказ, СтандартнаяОбработка)
    // Вызываем стандартную обработку
    ПродолжитьВызов(Отказ, СтандартнаяОбработка);

    // Проверяем тип контрагента и обновляем видимость
    ОбновитьВидимостьРаспределенияМП();
    КонецПроцедуры

    // Перехват события "КонтрагентПриИзменении" для обработки изменения контрагента
    &Вместо("КонтрагентПриИзменении")
    Процедура ДК1_КонтрагентПриИзмененииВместо(Элемент)
    // Вызываем стандартную обработку
    ПродолжитьВызов(Элемент);

    // Обновляем видимость на сервере
    ОбновитьВидимостьРаспределенияМП();
    КонецПроцедуры

    // Процедура для управления видимостью переключателя
    &НаСервере
    Процедура ОбновитьВидимостьРаспределенияМП()
    // Проверяем, заполнен ли контрагент
    Если ЗначениеЗаполнено(Контрагент) Тогда
    // Получаем тип контрагента
    ТипКонтрагента = Контрагент.ЮридическоеФизическоеЛицо;

    // Если контрагент - физическое лицо, скрываем переключатель
    Если ТипКонтрагента = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
    Элементы.РаспределениеМП.Видимость = Ложь;
    Иначе
    Элементы.РаспределениеМП.Видимость = Истина;
    КонецЕсли;
    Иначе
    // Если контрагент не заполнен, показываем переключатель (или скрываем, в зависимости от вашей логики)
    Элементы.РаспределениеМП.Видимость = Истина;
    КонецЕсли;
    КонецПроцедуры
```
---
И китайский DeepSeek и Grok3 Маска указали на все ошибки:
1. Событие ПриОткрытииПосле зависит от момента открытия формы, а проверка выполняется только один раз, код может не срабатывать, если данные контрагента еще не загрузились или изменились позже. Нужно использовать ПриИзменении.

2. Неправильное сравнение типа контрагента. Контрагент — это ссылка на справочник "Контрагенты", а не значение перечисления ЮридическоеФизическоеЛицо.

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

4. ОбновитьИнтерфейс() не влияет на видимость конкретного элемента формы.
А рабочий код выдал Grok3:

```1c
    // Перехват события "ПриСозданииНаСервере" для проверки при открытии формы
    &Вместо("ПриСозданииНаСервере")
    Процедура ДК1_ПриСозданииНаСервереВместо(Отказ, СтандартнаяОбработка)
    // Вызываем стандартную обработку
    ПродолжитьВызов(Отказ, СтандартнаяОбработка);

    // Проверяем тип контрагента и обновляем видимость
    ОбновитьВидимостьРаспределенияМП();
    КонецПроцедуры

    // Перехват события "КонтрагентПриИзменении" для обработки изменения контрагента
    &Вместо("КонтрагентПриИзменении")
    Процедура ДК1_КонтрагентПриИзмененииВместо(Элемент)
    // Вызываем стандартную обработку
    ПродолжитьВызов(Элемент);

    // Обновляем видимость на сервере
    ОбновитьВидимостьРаспределенияМП();
    КонецПроцедуры

    // Процедура для управления видимостью переключателя
    &НаСервере
    Процедура ОбновитьВидимостьРаспределенияМП()
    // Проверяем, заполнен ли контрагент
    Если ЗначениеЗаполнено(Контрагент) Тогда
    // Получаем тип контрагента
    ТипКонтрагента = Контрагент.ЮридическоеФизическоеЛицо;

    // Если контрагент - физическое лицо, скрываем переключатель
    Если ТипКонтрагента = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
    Элементы.РаспределениеМП.Видимость = Ложь;
    Иначе
    Элементы.РаспределениеМП.Видимость = Истина;
    КонецЕсли;
    Иначе
    // Если контрагент не заполнен, показываем переключатель (или скрываем, в зависимости от вашей логики)
    Элементы.РаспределениеМП.Видимость = Истина;
    КонецЕсли;
    КонецПроцедуры
```