Как обойти ограничения функциональных опций на реквизит в динамическом списке? Конечно, не трогая константу, связанную с ФО.
Минимальный пример во вложении:
Справочник: Справочник1 с реквизитами: Реквизит1 и Реквизит2
Константа: ИспользоватьРеквизит2
Функциональная опция: ИспользоватьРеквизит2

Реквизит2 входит в состав ФО ИспользоватьРеквизит2.
---
```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ОтключенныеПоля = Новый Массив;
    ДоступныеПоляВыбора = Список.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы;
    Для Каждого Поле Из Список.Поля Цикл
    НайденноеПоле = ДоступныеПоляВыбора.Найти(Поле.Поле);
    Если НайденноеПоле = Неопределено Тогда
    ОтключенныеПоля.Добавить(Поле);
    КонецЕсли;
    КонецЦикла;

    РеквизитыОбъекта = Метаданные.Справочники.Справочник1.Реквизиты;

    ИмяТаблицы = "СправочникСправочник1";
    ТекстЗапроса = Список.ТекстЗапроса;
    Для Каждого ОтключенноеПоле Из ОтключенныеПоля Цикл
    ТекстПоля = ИмяТаблицы + "." + ОтключенноеПоле.Поле;
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
    ТекстПоля,
    "ВЫБОР КОГДА ИСТИНА ТОГДА " + ТекстПоля + " ИНАЧЕ " + ИмяТаблицы + ".Ссылка КОНЕЦ КАК " + ОтключенноеПоле.Поле);

    МетаданныеРеквизита = РеквизитыОбъекта.Найти(ОтключенноеПоле.Поле);
    Если МетаданныеРеквизита <> Неопределено Тогда
    ОтключенноеПоле.ТипЗначения = МетаданныеРеквизита.Тип;
    КонецЕсли;
    КонецЦикла;

    Список.ТекстЗапроса = ТекстЗапроса;
    КонецПроцедуры
```
---
Как вариант - добавить еще одну ФО, включить в нее реквизит 2. Включить ее.
---
Такой возможности нет.
---
Как обойти ограничения функциональных опций на реквизит в динамическом списке? Конечно, не трогая константу, связанную с ФО.
Минимальный пример во вложении:
Справочник: Справочник1 с реквизитами: Реквизит1 и Реквизит2
Константа: ИспользоватьРеквизит2
Функциональная опция: ИспользоватьРеквизит2

Реквизит2 входит в состав ФО ИспользоватьРеквизит2.

Способы обхода (не трогая константу):

1. Использовать выражение вместо прямого реквизита

Вместо того чтобы в ДС добавлять Справочник1.Реквизит2, добавить выражение вида:

ВЫРАЖЕНИЕ(ВЫБОР КОГДА Истина ТОГДА Справочник1.Реквизит2 ИНАЧЕ NULL КОНЕЦ)

— Тогда движок не "приравняет" это к прямому доступу к реквизиту — ФО не сработает.

2. Добавить вычисляемое поле в ДС

Создать поле вида:

Поля.Вставить("Реквизит2Псевдо", Новый ОписаниеОбычногоПоля("ВЫБОР КОГДА Истина ТОГДА Справочник1.Реквизит2 ИНАЧЕ NULL КОНЕЦ"));

или в конфигураторе — "выражение".

3. Через СКД (если ДС строится на СКД)

В СКД: создать поле с выражением и использовать его в динамическом списке. Тогда механизм ФО на исходный реквизит не "схлопнется".
---
А какие проблемы с динамическом списком? Выведет все поля как положено. Другой вопрос с Элементом справочника. Но тут без изменения константы не получится
---
С элементами справочника как раз всё в порядке. Поле Реквизит2 не выводится в ДС и недоступно в настройке списка.
---
поидее если поставить галку "Использовать всегда", то значение реквизит2 будет доступно, но не будет выводиться на форму. А там можно сделать еще одно поле и ПриПолученииДанных закидывать из одного в другое. Проверять я, конечно, не буду
---
В большей степени мне нужно чтобы компоновщик настроек списка видел это поле, чтобы можно было по нему делать отбор.
"Использовать всегда" не дает результата. В ПриПолученииДанных этот реквизит можно выводить и без каких-либо условий — просто в тексте запроса добавить описание этого поля как пустое значение. Но "нарисованное" поле не имеет полной функциональности: по нему не работает быстрый поиск и отбор, с ним ничего толкогого не сделать в настройке списка.
---
Тогда нереализуемо. отключения функциональными опциями поля убираются платформой и ты никак на это не можешь повлить, ну кроме как включить фо.
---
чтобы можно было по нему делать отбор.
Т.е. ФО использовать Реквизит2 выключено, а по полю делать отбор? А данные в этом поле откуда, если его нет? В форме элемента справочника его тоже нет и не заполнить. По чему делать отбор?
---
Ой, всё.
---
ФО влияет только на видимость в пользовательскои интерфейсе. На данные они никак не влияют. "отключенные" реквизиты можно спокойно посмотреть, например, через консоль запросов.
---
"отключенные" реквизиты можно спокойно посмотреть, например, через консоль запросов КАК установить значение в отключенных реквизитах, если в пользовательском режиме этот реквизит отсутствует? Попробуй создай элемент своего справочника и установить значение Реквизит2 при отключенной ФО. Откуда там данные для отбора?
   Ну и уж если данные в реквизит2 нужны и такой отбор нужен, включи ФО, а для скрытия Реквизита2 от ненужных пользователей, используй управлению видимостью в зависимости от роли. А так какой-то бред получается
---
Значение таких реквизитов может устанавливаться программно. Примеров в типовых конфигурациях масса.
Банально, вчера опция работала – значения заполняли, сегодня отключили – значения никуда не делись, просто теперь их нигде не видно.
---
Примеров в типовых конфигурациях масса.
 Приведи хотя бы один пример, когда ФО запрещает использовать функционал, но данные все-равно заполняются программно. Какая конфигурация, какой функционал?
---
УТ 11.4. Документ.ЗаказКлиента, реквизит ВариантОбеспечения ТЧ Товары: ФункциональнаяОпция.ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента
ERP 2.5.17 Документ.РаспределениеРасходовБудущихПериодов реквизит НДД: ФункциональнаяОпция.УчетПоНДД

В обоих примерах эти реквизиты пишутся и проверяются независимо от ФО.
---
В обоих примерах эти реквизиты пишутся и проверяются независимо от ФО
Заполняются из одного реквизита одним значением, попробуй варьировать в стороке при выключенной опции. Сделано, чтобы не наращивать код, просто управлять видимостью. Но и данные построчно нигде не нужны. А если понадобятся, включается ФО. Не передергивай. У тебя получается нужный реквизит, но по каким-то неведомым причинам ты не хочешь его включать но хочешь по нему отбирать.
   Счастливо потр...ся с бестолковым заданием. Сообщи когда придешь к закономерному выводу, что это бред
---
Значение таких реквизитов может устанавливаться программно. Значит этот реквизит НУЖЕН и отключать ФО - бред!
---
```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ОтключенныеПоля = Новый Массив;
    ДоступныеПоляВыбора = Список.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы;
    Для Каждого Поле Из Список.Поля Цикл
    НайденноеПоле = ДоступныеПоляВыбора.Найти(Поле.Поле);
    Если НайденноеПоле = Неопределено Тогда
    ОтключенныеПоля.Добавить(Поле);
    КонецЕсли;
    КонецЦикла;

    РеквизитыОбъекта = Метаданные.Справочники.Справочник1.Реквизиты;

    ИмяТаблицы = "СправочникСправочник1";
    ТекстЗапроса = Список.ТекстЗапроса;
    Для Каждого ОтключенноеПоле Из ОтключенныеПоля Цикл
    ТекстПоля = ИмяТаблицы + "." + ОтключенноеПоле.Поле;
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
    ТекстПоля,
    "ВЫБОР КОГДА ИСТИНА ТОГДА " + ТекстПоля + " ИНАЧЕ " + ИмяТаблицы + ".Ссылка КОНЕЦ КАК " + ОтключенноеПоле.Поле);

    МетаданныеРеквизита = РеквизитыОбъекта.Найти(ОтключенноеПоле.Поле);
    Если МетаданныеРеквизита <> Неопределено Тогда
    ОтключенноеПоле.ТипЗначения = МетаданныеРеквизита.Тип;
    КонецЕсли;
    КонецЦикла;

    Список.ТекстЗапроса = ТекстЗапроса;
    КонецПроцедуры
```