Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

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

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

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

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

1С 1C 8.x Вывести системный список (в предприятии по ПКМ) программно.
Лишние поля в отчете 1С 1C 8.x
Тонкий 8.3, как программно выполнить стандартный обработчик поля формы? 1С
1С Внешний набор данных
1С БП 2.0 Добавить договор контрагента программно
1С 1C 8.x Программно вызвать процедуру при изменении( поля формы тч документа)
Простейшее получение данных из поля ввода 1С 1C 8.x
1С В отчете вывести заказ-наряды за период, которые не утверждены клиентом
1С Программно создать обычную форму или хотя бы добавить реквизит обычнойформы
Как в отчете в поле итого вывести среднею оценку? 1С
1С Вывести количество сдавших учащихся в Отчете

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Phil
Эксперт 1С
153 / 153 / 46
Регистрация: 28.05.2014
Сообщений: 582
16.01.2017, 13:37  [ТС]     1C 8.x (тонкий) Программно добавить поля в набор данных и вывести в отчете #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)); 
            
            ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить(); 
            
            ПолеРесурса.Выражение   = "СУММА("+ИмяКолонки.Имя+")"; 
            ПолеРесурса.ПутьКДанным = ИмяКолонки.Имя; 
            ПолеРесурса.Группировки.Добавить("ОбщийИтог");
            
        КонецЕсли;
        
    КонецЦикла;
    
    //Добавляем в выбранные поля
    Для каждого ИмяКолонки из ИменаКолонок цикл
        
        Если НЕ  ИмяКолонки.Имя = "Номенклатура" тогда
            
            ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
            ВыбранноеПоле.Заголовок     = ИмяКолонки.Имя;
            ВыбранноеПоле.Использование = Истина; 
            ВыбранноеПоле.Поле          = Новый ПолеКомпоновкиДанных(ИмяКолонки.Имя);
            
        КонецЕсли;
        
    КонецЦикла; 
    
    //КонецЦикла;
    
    АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Новый УникальныйИдентификатор);
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы);
    КомпоновщикНастроек.Инициализировать(ИсточникНастроек); 
    
    //Помещаем в переменную данные о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    //Формируем макет, с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    //Передаем в макет компоновки схему, настройки и данные расшифровки
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);     //из набора данных пропали поля
    
    //Выполним компоновку с помощью процессора компоновки
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    //Передаем внешний набор данных
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    //Очищаем поле табличного документа
    ДокументРезультат.Очистить();
    
    //Выводим результат в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
КонецПроцедуры
Yandex
Объявления
16.01.2017, 13:37     1C 8.x (тонкий) Программно добавить поля в набор данных и вывести в отчете
Ответ Создать тему
Опции темы

Текущее время: 14:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru