Программно добавляю наборы данных, связи наборов данных, поля итогов.
При попытке установить выражение итоговых записей в пользовательском поле - выдаёт ошибку: Поле не найдено. Хотя в запросе набора данных это поле есть, в полях набора данных - тоже. Какое ему ещё поле нужно и почему не найдено?

```1c
    МассивИменНаборовДанных = Новый Массив;
    МассивИменНаборовДанных.Добавить("ПланЖивотноводства");
    МассивИменНаборовДанных.Добавить("ФактЖивотноводства");
    МассивИменНаборовДанных.Добавить("СреднееПоголовье");
    МассивИменНаборовДанных.Добавить("КормодниПривес");

    Для каждого ИмяНабора Из МассивИменНаборовДанных Цикл

    НовыйНаборДанных = СКД.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
    НовыйНаборДанных.Имя = ИмяНабора;
    НовыйНаборДанных.Запрос = ПолучитьТекстЗапросаНовогоНабораДанных(ИмяНабора);
    НовыйНаборДанных.ИсточникДанных = ИмяНабора;
    НовыйНаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
    НовыйНаборДанных.ИспользоватьГруппировкиЗапросаЕслиВозможно = Истина;

    ДобавитьПоляНабораДанных(ИмяНабора, НовыйНаборДанных);

    НовыйИсточникДанных = СКД.ИсточникиДанных.Добавить();
    НовыйИсточникДанных.Имя = ИмяНабора;
    НовыйИсточникДанных.ТипИсточникаДанных = "Local";

    Связь1 = СКД.СвязиНаборовДанных.Добавить();
    Связь1.НаборДанныхИсточник = "Обороты";
    Связь1.НаборДанныхПриемник = ИмяНабора;
    Связь1.ВыражениеИсточник = "Период";
    Связь1.ВыражениеПриемник = "Период";
    Связь1.Обязательная = Истина;

    Связь2 = СКД.СвязиНаборовДанных.Добавить();
    Связь2.НаборДанныхИсточник = "Обороты";
    Связь2.НаборДанныхПриемник = ИмяНабора;
    Связь2.ВыражениеИсточник = "ЦФО";
    Связь2.ВыражениеПриемник = "ЦФО";
    Связь2.Обязательная = Истина;

    Связь3 = СКД.СвязиНаборовДанных.Добавить();
    Связь3.НаборДанныхИсточник = "Обороты";
    Связь3.НаборДанныхПриемник = ИмяНабора;
    Связь3.ВыражениеИсточник = "НоменклатурнаяГруппа";
    Связь3.ВыражениеПриемник = "НоменклатурнаяГруппа";
    Связь3.Обязательная = Истина;

    Связь4 = СКД.СвязиНаборовДанных.Добавить();
    Связь4.НаборДанныхИсточник = "Обороты";
    Связь4.НаборДанныхПриемник = ИмяНабора;
    Связь4.ВыражениеИсточник = "СтатьяБюджета";
    Связь4.ВыражениеПриемник = "СтатьяБюджета";
    Связь4.Обязательная = Истина;

    КонецЦикла;

    ВесГоловыНаКонецПериодаПлан = СКД.ВычисляемыеПоля.Добавить();
    ВесГоловыНаКонецПериодаПлан.ПутьКДанным = "ВесГоловыНаКонецПериодаПлан";
    ВесГоловыНаКонецПериодаПлан.Выражение =
    "Выбор
    | КОГДА ОстаткиПоПоголовьюПлан = ТОГДА 0
    | ИНАЧЕ ОстаткиПоЖивомуВесуПлан/ОстаткиПоПоголовьюПлан
    |КОНЕЦ";

    ВесГоловыНаКонецПериодаФакт = СКД.ВычисляемыеПоля.Добавить();
    ВесГоловыНаКонецПериодаФакт.ПутьКДанным = "ВесГоловыНаКонецПериодаФакт";
    ВесГоловыНаКонецПериодаФакт.Выражение =
    "Выбор
    | КОГДА ОстаткиПоПоголовьюФакт = ТОГДА 0
    | ИНАЧЕ ОстаткиПоЖивомуВесуФакт/ОстаткиПоПоголовьюФакт
    |КОНЕЦ";

    МассивИменСценариев = Новый Массив;
    МассивИменСценариев.Добавить("План");
    МассивИменСценариев.Добавить("Факт");

    МассивИменСумм = Новый Массив;
    МассивИменСумм.Добавить(");
    МассивИменСумм.Добавить("Регл");
    МассивИменСумм.Добавить("Упр");
    МассивИменСумм.Добавить("Сценарий");

    МассивИменРесурсов = Новый Массив;
    МассивИменРесурсов.Добавить("СреднееПоголовьеСумма");
    МассивИменРесурсов.Добавить("СреднесуточныйПривесСумма");
    МассивИменРесурсов.Добавить("ВесГоловыНаКонецПериода");

    Для каждого Сценарий Из МассивИменСценариев Цикл
    Для каждого ИмяСуммы Из МассивИменСумм Цикл
    Для каждого ИмяРесурса Из МассивИменРесурсов Цикл
    Если ИмяРесурса = "ВесГоловыНаКонецПериода" Тогда
    Если ИмяСуммы = " Тогда
    ПолеИтога = СКД.ПоляИтога.Добавить();
    Иначе
    Продолжить;
    КонецЕсли;
    Иначе
    ПолеИтога = СКД.ПоляИтога.Добавить();
    КонецЕсли;
    ПолеИтога.ПутьКДанным = ИмяРесурса+ИмяСуммы+Сценарий;
    ПолеИтога.Выражение = "Сумма("+ИмяРесурса+ИмяСуммы+Сценарий+")";
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;

    //Заменим выражения итога пользовательских полей
    Для каждого ПолеКД Из НастройкиКД.ПользовательскиеПоля.Элементы Цикл

    Если НЕ ПолеКД.Использование Тогда
    Продолжить;
    КонецЕсли;

    ИдентификаторПоля = Лев(ПолеКД.Заголовок, 4);

    Если ИдентификаторПоля = "УУГ2" ИЛИ ИдентификаторПоля = "Сумм" ИЛИ ИдентификаторПоля = "УУГА" Тогда // корректировки пок не рассчитываем - не было в ЛТ
    Продолжить;
    КонецЕсли;

    СтароеВыражение = ПолеКД.ПолучитьВыражениеИтоговыхЗаписей();

    Если ИдентификаторПоля = "АбсГ" ИЛИ ИдентификаторПоля = "ОтнГ" Тогда
    НовоеВыражение =
    "Выбор
    | Когда СтатьяБюджета.Наименование = "Среднее поголовье, гол" Тогда"+"
    |"+СтрЗаменить(СтрЗаменить(СтароеВыражение, "СуммаСценарийОборот_Эталон", "СреднееПоголовьеСуммаСценарийПлан"), "СуммаСценарийОборот_1", "СреднееПоголовьеСуммаСценарийФакт")+"
    | Когда СтатьяБюджета.Наименование = "Среднесуточный привес, кг" Тогда
    |"+СтрЗаменить(СтрЗаменить(СтароеВыражение, "СуммаСценарийОборот_Эталон", "СреднесуточныйПривесСуммаСценарийПлан"), "СуммаСценарийОборот_1", "СреднесуточныйПривесСуммаСценарийФакт")+"
    | Когда СтатьяБюджета.Наименование = "Вес 1 головы на конец периода,кг" Тогда
    |"+СтрЗаменить(СтрЗаменить(СтароеВыражение, "СуммаСценарийОборот_Эталон", "ВесГоловыНаКонецПериодаПлан"), "СуммаСценарийОборот_1", "ВесГоловыНаКонецПериодаФакт")+"
    | Иначе";
    ИначеЕсли ИдентификаторПоля = "План" Тогда
    НовоеВыражение =
    "Выбор
    | Когда СтатьяБюджета.Наименование = "Среднее поголовье, гол" Тогда"+"
    |"+СтрЗаменить(СтароеВыражение, "СуммаОборот_Эталон", "СреднееПоголовьеСуммаПлан")+"
    | Когда СтатьяБюджета.Наименование = "Среднесуточный привес, кг" Тогда
    |"+СтрЗаменить(СтароеВыражение, "СуммаОборот_Эталон", "СреднесуточныйПривесСуммаПлан")+"
    | Когда СтатьяБюджета.Наименование = "Вес 1 головы на конец периода,кг" Тогда
    |"+СтрЗаменить(СтароеВыражение, "СуммаОборот_Эталон", "ВесГоловыНаКонецПериодаПлан")+"
    | Иначе";
    ИначеЕсли ИдентификаторПоля = "Факт" Тогда
    НовоеВыражение =
    "Выбор
    | Когда СтатьяБюджета.Наименование = "Среднее поголовье, гол" Тогда"+"
    |"+СтрЗаменить(СтароеВыражение, "СуммаОборот_1", "СреднееПоголовьеСуммаФакт")+"
    | Когда СтатьяБюджета.Наименование = "Среднесуточный привес, кг" Тогда
    |"+СтрЗаменить(СтароеВыражение, "СуммаОборот_1", "СреднесуточныйПривесСуммаФакт")+"
    | Когда СтатьяБюджета.Наименование = "Вес 1 головы на конец периода,кг" Тогда
    |"+СтрЗаменить(СтароеВыражение, "СуммаОборот_1", "ВесГоловыНаКонецПериодаФакт")+"
    | Иначе";
    КонецЕсли;

    ТекстЗамены = НовоеВыражение+"
    | "+СтароеВыражение+"
    |КОНЕЦ";

    ПолеКД.УстановитьВыражениеИтоговыхЗаписей(ТекстЗамены);

    КонецЦикла;
```
---
В общем дело было в Настройках КД. В схеме компоновки у меня эти поля есть, а в настройках компоновки данных в доступных полях выбора их не было. Пришлось заново инициализировать КомпоновщикНастроек и дозаполнять недостающими настройками из старых настроек КД
---
А где у вас "СреднееПоголовьеСуммаСценарийПлан" определен?
---
В запросе
---
Видимо все же в какой-то момент нет
---
В этом и вопрос. Вроде везде это поле есть: в полях набора данных, в полях итога, в группах полей в насройках варианта отчёта и в настройках по умолчанию оно есть точно. Почему тогда поле не найдено, непонятно
---
Сделайте этот отчет вручную в качестве эталона для программного заполнения. Сравните объекты программного СКД и эталонного.
---
В общем дело было в Настройках КД. В схеме компоновки у меня эти поля есть, а в настройках компоновки данных в доступных полях выбора их не было. Пришлось заново инициализировать КомпоновщикНастроек и дозаполнять недостающими настройками из старых настроек КД