Программно добавляю наборы данных, связи наборов данных, поля итогов.
При попытке установить выражение итоговых записей в пользовательском поле - выдаёт ошибку: Поле не найдено. Хотя в запросе набора данных это поле есть, в полях набора данных - тоже. Какое ему ещё поле нужно и почему не найдено?
При попытке установить выражение итоговых записей в пользовательском поле - выдаёт ошибку: Поле не найдено. Хотя в запросе набора данных это поле есть, в полях набора данных - тоже. Какое ему ещё поле нужно и почему не найдено?
МассивИменНаборовДанных = Новый Массив;
МассивИменНаборовДанных.Добавить("ПланЖивотноводства");
МассивИменНаборовДанных.Добавить("ФактЖивотноводства");
МассивИменНаборовДанных.Добавить("СреднееПоголовье");
МассивИменНаборовДанных.Добавить("КормодниПривес");
Для каждого ИмяНабора Из МассивИменНаборовДанных Цикл
НовыйНаборДанных = СКД.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
НовыйНаборДанных.Имя = ИмяНабора;
НовыйНаборДанных.Запрос = ПолучитьТекстЗапросаНовогоНабораДанных(ИмяНабора);
НовыйНаборДанных.ИсточникДанных = ИмяНабора;
НовыйНаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
НовыйНаборДанных.ИспользоватьГруппировкиЗапросаЕслиВозможно = Истина;
ДобавитьПоляНабораДанных(ИмяНабора, НовыйНаборДанных);
НовыйИсточникДанных = СКД.ИсточникиДанных.Добавить();
НовыйИсточникДанных.Имя = ИмяНабора;
НовыйИсточникДанных.ТипИсточникаДанных = "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", "ВесГоловыНаКонецПериодаФакт")+"
| Иначе";
КонецЕсли;
ТекстЗамены = НовоеВыражение+"
| "+СтароеВыражение+"
|КОНЕЦ";
ПолеКД.УстановитьВыражениеИтоговыхЗаписей(ТекстЗамены);
КонецЦикла;
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- СКД. Сортировка
- СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках
- Нестандартное использование СКД
- Доработка типового отчета на СКД с помощью расширения
- API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В этом и вопрос. Вроде везде это поле есть: в полях набора данных, в полях итога, в группах полей в насройках варианта отчёта и в настройках по умолчанию оно есть точно. Почему тогда поле не найдено, непонятно
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот