добрый день всем!
помогите разобраться, сломал всю голову. не могу понять в чём причина.
простейший отчёт в УТ 11.4. в котором в СКД используется внешний набор. при выполнении выдаётся ошибка: Не найден внешний набор "ТаблДок".
помогите разобраться, сломал всю голову. не могу понять в чём причина.
простейший отчёт в УТ 11.4. в котором в СКД используется внешний набор. при выполнении выдаётся ошибка: Не найден внешний набор "ТаблДок".
Прикрепленные файлы:
РеестрПоступлений.erf
По теме из базы знаний
Найденные решения
Во-первых, как сказали в (6), Стандартная обработка = Ложь. Во-вторых, настройки получайте так: Настройки = КомпоновщикНастроек.ПолучитьНастройки().
В-третьих, сделайте вспомогательную схему, чтобы получить список используемых ссылок с учётом установленных параметров и отборов:
Очевидно, необходимо отключить отборы по полю СуммаРозн, если они есть, иначе временная схема не сгенерируется, поэтому используем рекурсивную процедуру:
В-третьих, сделайте вспомогательную схему, чтобы получить список используемых ссылок с учётом установленных параметров и отборов:
ВременныеНастройки = КомпоновщикНастроек.ПолучитьНастройки();
ВременнаяСхема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ВнешнийНабор = ВременнаяСхема.НаборыДанных.Найти("НаборДанных2");
ВременнаяСхема.НаборыДанных.Удалить(ВнешнийНабор);
ВременнаяСхема.СвязиНаборовДанных.Очистить();
ВыбранныеПоля = ВременныеНастройки.Выбор.Элементы;
ВыбранныеПоля.Очистить();
ОтключитьОтборыПоПолюРекурсивно(ВременныеНастройки.Отбор.Элементы, Новый ПолеКомпоновкиДанных("СуммаРозн"));
ВременныеНастройки.УсловноеОформление.Элементы.Очистить();
ВременныеНастройки.Структура.Очистить();
НоваяГруппировка = ВременныеНастройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
НоваяГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
НовоеПолеГруппировки = НоваяГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
НовоеПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ВременнаяСхема, ВременныеНастройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ИспользуемыеСсылки = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ПоказатьОчевидно, необходимо отключить отборы по полю СуммаРозн, если они есть, иначе временная схема не сгенерируется, поэтому используем рекурсивную процедуру:
Процедура ОтключитьОтборыПоПолюРекурсивно(ЭлементыОтбора, Поле)
Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Если ЭлементОтбора.ЛевоеЗначение = Поле Или ЭлементОтбора.ПравоеЗначение = Поле Тогда
ЭлементОтбора.Использование = Ложь;
КонецЕсли;
Иначе
ОтключитьОтборыПоПолюРекурсивно(ЭлементОтбора.Элементы, Поле)
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А попробуй без внешнего набора данных.
Просто создай временную таблицу, только обязательно ее инициализируй по типам.
Например вот так:
Просто создай временную таблицу, только обязательно ее инициализируй по типам.
Например вот так:
ТабДок = Новый ТаблицаЗначений;
ОписаниеЧисла = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2));
ОписаниеСтроки = Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(100));
ОписаниеДаты = Новый ОписаниеТипов("Дата",Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя));
ТабДок.Колонки.Добавить(Ссылка,"Документссылка.ПриобретениеТоваровИУслуг");
ТабДок.Колонки.Добавить(Номер,ОписаниеСтроки);
ТабДок.Колонки.Добавить(Дата,ОписаниеДаты);
ТабДок.Колонки.Добавить(Склад,"СправочникСсылка.Склады");
//ну и т.д. все остальные колонки
//А далее в запросе создаешь таблицу и добавляешь поля как в твоей таблице
ВЫБРАТЬ
| ТабДок.Ссылка КАК Ссылка,
| ТабДок.Дата КАК Дата,
| ТабДок.Номер КАК Номер,
| ТабДок.Склад КАК Склад
|ПОМЕСТИТЬ ВТ_ТабДок
|ИЗ
| &ТабДок КАК ТабДок
//Ну и далее твой запрос
Показать
Во-первых, как сказали в (6), Стандартная обработка = Ложь. Во-вторых, настройки получайте так: Настройки = КомпоновщикНастроек.ПолучитьНастройки().
В-третьих, сделайте вспомогательную схему, чтобы получить список используемых ссылок с учётом установленных параметров и отборов:
Очевидно, необходимо отключить отборы по полю СуммаРозн, если они есть, иначе временная схема не сгенерируется, поэтому используем рекурсивную процедуру:
В-третьих, сделайте вспомогательную схему, чтобы получить список используемых ссылок с учётом установленных параметров и отборов:
ВременныеНастройки = КомпоновщикНастроек.ПолучитьНастройки();
ВременнаяСхема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ВнешнийНабор = ВременнаяСхема.НаборыДанных.Найти("НаборДанных2");
ВременнаяСхема.НаборыДанных.Удалить(ВнешнийНабор);
ВременнаяСхема.СвязиНаборовДанных.Очистить();
ВыбранныеПоля = ВременныеНастройки.Выбор.Элементы;
ВыбранныеПоля.Очистить();
ОтключитьОтборыПоПолюРекурсивно(ВременныеНастройки.Отбор.Элементы, Новый ПолеКомпоновкиДанных("СуммаРозн"));
ВременныеНастройки.УсловноеОформление.Элементы.Очистить();
ВременныеНастройки.Структура.Очистить();
НоваяГруппировка = ВременныеНастройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
НоваяГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
НовоеПолеГруппировки = НоваяГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
НовоеПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ВременнаяСхема, ВременныеНастройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ИспользуемыеСсылки = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ПоказатьОчевидно, необходимо отключить отборы по полю СуммаРозн, если они есть, иначе временная схема не сгенерируется, поэтому используем рекурсивную процедуру:
Процедура ОтключитьОтборыПоПолюРекурсивно(ЭлементыОтбора, Поле)
Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Если ЭлементОтбора.ЛевоеЗначение = Поле Или ЭлементОтбора.ПравоеЗначение = Поле Тогда
ЭлементОтбора.Использование = Ложь;
КонецЕсли;
Иначе
ОтключитьОтборыПоПолюРекурсивно(ЭлементОтбора.Элементы, Поле)
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот