Имя: Пароль:
1C
 
Вывод результата СКД в Таблицу значений
0 Denosik
 
26.08.23
11:22
Доброе утро всем. Пытаюсь вывести результат типового отчета в таблицу значений. Использую стандартные настройки СКД отчета который хочу скомпоновать.

кто нибудь может подсказать отчего зависят столбцы в ТЗ полученной из СКД, мне подсказали что от "Выбор" в настройках, но изменение этого поля ничего не дало.

Например:

в стандартных настройках "выбор" : Документ, выручка, НДС

в ТЗ выводятся данные со столбцами: "Документ, выручка, НДС"

Дополняю "выбор" в настройках своими полями "регистратор, организация"

в ТЗ выводятся данные так же со столбцами: "Документ, выручка, НДС". Нет моих "регистратор и организация"

(в скд эти поля есть, проверил запрос. Всё меняется после КомпоновщикМакета.Выполнить(), получаю макет компоновки уже с изменённым запросом, который тянет только указанное в настройках в поле "выбор" как понимаю, но он не тянет мои поля)
1 vicof
 
26.08.23
11:28
Ставлю, что нет КомпоновщикНастроек.ПолучитьНастройки()
2 Denosik
 
26.08.23
11:41
а как его правильно использовать?

Просто я компилирую СКД не из её родного отчета, а из нового. Если сделать КомпоновщикНастроек.ПолучитьНастройки() загрузятся настройки моего нового отчета, а не стандартные настройки отчета, которого хочу скомпоновать
3 Мультук
 
26.08.23
11:47
(0)

Код, {нецензурное слово}, где твой код ?
4 Denosik
 
26.08.23
12:01
код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

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

        ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
        
    ТЗВыручкаИСебестоимостьПродаж = ОтчетТЗВыручкаИСебестоимостьПродаж.ПолучитьТЗВыручкаИСебестоимостьПродаж(ДанныеРасшифровки,СтандартнаяОбработка, Настройки);

КонецПроцедуры;

Код функции "ПолучитьТЗВыручкаИСебестоимостьПродаж":

Функция ПолучитьТЗВыручкаИСебестоимостьПродаж(ДанныеРасшифровки, СтандартнаяОбработка, Настройки) Экспорт
    
    СтандартнаяОбработка = Ложь;
    
    // Сформируем отчет
    НастройкиОтчета = Настройки;
    
    ТекстЗапроса = ТекстЗапроса();

    ТекстЗапроса = СтрЗаменить(
        ТекстЗапроса,
        "&ТекстЗапросаВесНоменклатуры1",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаВесУпаковки("Таблица.Номенклатура.ЕдиницаИзмерения", "Таблица.Номенклатура"));
        
    ТекстЗапроса = СтрЗаменить(
        ТекстЗапроса,
        "&ТекстЗапросаОбъемНоменклатуры1",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаОбъемУпаковки("Таблица.Номенклатура.ЕдиницаИзмерения", "Таблица.Номенклатура"));

    СхемаКомпоновкиДанных.НаборыДанных.ВыручкаИСебестоимостьПродажСДетализацией.Запрос = ТекстЗапроса;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета,ДанныеРасшифровки ,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки, Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    
    ТЗВедомостьРасчетовСКлиентами = Новый ТаблицаЗначений;
    ТЗВедомостьРасчетовСКлиентами.Колонки.Добавить("Регистратор");
    ТЗВедомостьРасчетовСКлиентами.Колонки.Добавить("Организация", тип("СправочникСсылка.Организации"));
    ПроцессорВывода.УстановитьОбъект(ТЗВедомостьРасчетовСКлиентами);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    Возврат ТЗВедомостьРасчетовСКлиентами;
КонецФункции
5 vicof
 
26.08.23
12:13
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета,ДанныеРасшифровки ,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
Вот здесь у тебя что в настройках?
6 Denosik
 
26.08.23
12:34
сюда я передаю настройки из Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;, которые получил в процедуре ПриКомпоновкеРезультата
7 Denosik
 
26.08.23
12:58
(5) Если интересует именно поле выбор в настройках: Номенклатура.Артикул, Выручка, СебестоимостьИтого, Себестоимость, ДопРасходы, ВаловаяПрибыль, Рентабельность, Регистратор, Организация, Контрагент

Собственно, мои 3 которые я программно добавил есть
8 Мультук
 
26.08.23
14:52
(7)

1) Ну дык, добавь остальные программно, которых тебе не хватает.
2) Посмотри в отладчике, что вообще в СхемаКомпоновкиДанных.НастройкиПоУмолчанию

-- какие поля выбраны
-- какие группировки сделаны
9 dmt
 
26.08.23
14:57
(4) попробуй
а) добавить в выбранные поля всего отчета Автополе
либо
б) добавить свои выбранные поля именно в нужную группировку в Структуре
Независимо от того, куда вы едете — это в гору и против ветра!