С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

1С: Собственные программы

Войти
Регистрация
Восстановить пароль
 
Phil
Эксперт 1С
217 / 217 / 63
Регистрация: 28.05.2014
Сообщений: 791
#1

1C 8.x (тонкий) Программно добавить поля в набор данных и вывести в отчете - 1С

09.01.2017, 17:57. Просмотров 359. Ответов 1
Метки нет (Все метки)

ДОбрый вечер, такая проблема.

Имеется отчёт на СКД, (товары, цены , количество и т.д.) к нему необходимо пределать детализацию по периодам.

Я с создаю второй набор данных, в качестве реквизитов указываю номенклатуру, периоды надо добавлять в набор динамически, затем первый набор связываю со вторым по номенклатуре и вывожу периоды.

Подскажите как в наборы и в выводимые поля поместить мои динамически сформированные периоды ( УТ. Упр формы.)

в наборы помещаются в выводимых полях на форме пусто и в списке доступных полей их также нет.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 17:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 1C 8.x (тонкий) Программно добавить поля в набор данных и вывести в отчете (1С):

Убрать поля в запросе (скрыть поля в отчете скд) - 1С
В запросе я создаю временную таблицу. В ней сгруппировав поля получаю нужную таблицу. Но некоторые поля нужны мне только для групировки....

1C 8.x Лишние поля в отчете - 1С
ВЫБРАТЬ РАЗЛИЧНЫЕ СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток) КАК НачальныйОстаток, ...

Вывести количество сдавших учащихся в Отчете - 1С
В справочниках у меня есть Учащиеся, Сдавшие. Учащиеся: Реквезиты - ФИО НомерПаспорта Адрес НеСдавшие: Реквезиты - ...

Как в отчете вывести в таблицу реквизит? - 1С
Как в отчете вывести в таблицу реквизит из документа? (1С 8.1) Надо чтобы при нажатии в отчете кнопки "Сформировать" формировался отчет -...

1C 8.x Программно добавить колонку в ТЧ - 1С
Есть документ. Есть форма элемента. На форме есть табличная часть. Хочу добавить в табличную часть новую колонку. Данные из колонки будут...

БП 2.0 Добавить договор контрагента программно - 1С
Добрый день. Никак не могу понять, в чем ошибка. doc = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); ...

1
Phil
Эксперт 1С
217 / 217 / 63
Регистрация: 28.05.2014
Сообщений: 791
16.01.2017, 13:37  [ТС] #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если кому интересно, сделал так. В доступные поля смог поместить программно, а в выбранные пришлось на клиенте создавать на форме.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Таблица = ПолучитьВнешниеДанные(ТЗДаты);
    
    //Структура внешних данных, для передачи в СКД
    ВнешниеНаборыДанных = Новый Структура; 
    
    //Сохраняем таблицу значений в наборе внешних данных
    ВнешниеНаборыДанных.Вставить("Таблица", Таблица);
    
    //Получаем схему из макета
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    КоличествоКолонокТаблицы = Таблица.Количество();
    
    ИменаКолонок = Таблица.Колонки;
    
    Для каждого ИмяКолонки из ИменаКолонок цикл
        
        Если НЕ  ИмяКолонки.Имя = "Номенклатура" тогда
            
            НовоеВыбранноеПоле = СхемаКомпоновкиДанных.ВариантыНастроек.Основной.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
            НовоеВыбранноеПоле.Использование = Истина; 
            НовоеВыбранноеПоле.Поле          = Новый ПолеКомпоновкиДанных(ИмяКолонки.Имя); 
            
        КонецЕсли;
        
    КонецЦикла;
    
    //Из схемы возьмем настройки
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    //Программно добавляем поля и ресурсы
    Для каждого ИмяКолонки из ИменаКолонок цикл
        
        Если НЕ  ИмяКолонки.Имя = "Номенклатура" тогда
            
            Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных2.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
            
            Поле.Заголовок      =  ИмяКолонки.Имя;
            Поле.ПутьКДанным    =  ИмяКолонки.Имя;
            Поле.Поле           =  ИмяКолонки.Имя;
            Поле.ТипЗначения    = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)); 
            
            ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить(); 
            
            ПолеРесурса.Выражение   = "СУММА("+ИмяКолонки.Имя+")"; 
            ПолеРесурса.ПутьКДанным = ИмяКолонки.Имя; 
            ПолеРесурса.Группировки.Добавить("ОбщийИтог");
            
        КонецЕсли;
        
    КонецЦикла;
    
    //Добавляем в выбранные поля
    Для каждого ИмяКолонки из ИменаКолонок цикл
        
        Если НЕ  ИмяКолонки.Имя = "Номенклатура" тогда
            
            ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
            ВыбранноеПоле.Заголовок     = ИмяКолонки.Имя;
            ВыбранноеПоле.Использование = Истина; 
            ВыбранноеПоле.Поле          = Новый ПолеКомпоновкиДанных(ИмяКолонки.Имя);
            
        КонецЕсли;
        
    КонецЦикла; 
    
    //КонецЦикла;
    
    АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Новый УникальныйИдентификатор);
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы);
    КомпоновщикНастроек.Инициализировать(ИсточникНастроек); 
    
    //Помещаем в переменную данные о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    //Формируем макет, с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    //Передаем в макет компоновки схему, настройки и данные расшифровки
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);     //из набора данных пропали поля
    
    //Выполним компоновку с помощью процессора компоновки
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    //Передаем внешний набор данных
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    //Очищаем поле табличного документа
    ДокументРезультат.Очистить();
    
    //Выводим результат в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
КонецПроцедуры
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2017, 13:37
Привет! Вот еще темы с ответами:

Как в отчете в поле итого вывести среднею оценку? - 1С
Как в отчете в поле итого вывести среднею оценку? Есть отчет, называется ведомость группы, колонки - дисциплина, строки -...

Добавить строку в табличную часть программно - 1С
Приветствую! Наваял такой вот код: &НаКлиенте Процедура Команда1(Команда) ДобавитьСтрокуНаСервере() ; КонецПроцедуры ...

1C 8.x Несколько схем компоновки данных в одном отчете - 1С
Всем доброго времени суток. Задача передо мной стоит такая: нужно сделать отчет с помощью СКД и при этом отчет должен быть сложен из разных...

В отчете вывести заказ-наряды за период, которые не утверждены клиентом - 1С
Всем доброго времени суток. В отчете нужно вывести заказ-наряды за период, которые не утверждены клиентом и не прошли осмотр места, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.