Проект

Общее

Профиль

Система компоновки данных (СКД) » История » Версия 3

Всеволод Дорофеев, 01.02.2017 17:58

1 1 Всеволод Дорофеев
h1. Система компоновки данных (СКД)
2 1 Всеволод Дорофеев
3 1 Всеволод Дорофеев
h3. Программное выполнение СКД с выводом в таблицу значений
4 1 Всеволод Дорофеев
5 1 Всеволод Дорофеев
<pre>
6 1 Всеволод Дорофеев
&НаСервере
7 1 Всеволод Дорофеев
Процедура ПеренестиНоменклатуруСервере()
8 1 Всеволод Дорофеев
	ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
9 1 Всеволод Дорофеев
	СхемаНоменклатуры = ОбъектНаСервере.ПолучитьМакет("СКД");          
10 1 Всеволод Дорофеев
11 2 Всеволод Дорофеев
	//СКД. Программная установка параметров в управляемой форме отчета
12 2 Всеволод Дорофеев
    ПараметрДанных = КомпоновщикНаФорме.Настройки.ПараметрыДанных.Элементы.Найти("ГруппаНоменклатуры");
13 1 Всеволод Дорофеев
	ПараметрДанных.Использование = Истина;
14 1 Всеволод Дорофеев
	ПараметрДанных.Значение  = Объект.ПапкаАрхив;  
15 1 Всеволод Дорофеев
	
16 1 Всеволод Дорофеев
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
17 1 Всеволод Дорофеев
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаНоменклатуры, КомпоновщикНаФорме.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
18 1 Всеволод Дорофеев
                               
19 1 Всеволод Дорофеев
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
20 1 Всеволод Дорофеев
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,, Истина);
21 1 Всеволод Дорофеев
	
22 1 Всеволод Дорофеев
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
23 1 Всеволод Дорофеев
                               
24 1 Всеволод Дорофеев
    ТЗНоменклатура = Новый ТаблицаЗначений;
25 1 Всеволод Дорофеев
    ПроцессорВывода.УстановитьОбъект(ТЗНоменклатура);
26 1 Всеволод Дорофеев
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
27 1 Всеволод Дорофеев
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
28 1 Всеволод Дорофеев
	
29 1 Всеволод Дорофеев
	Для каждого СтрокаТЗ из ТЗНоменклатура Цикл
30 1 Всеволод Дорофеев
		ОбработкаОбъект.ПеренестиНоменклатурнуюПозициюВПапкуНаСервере(СтрокаТЗ);
31 1 Всеволод Дорофеев
	КонецЦикла;
32 1 Всеволод Дорофеев
	
33 1 Всеволод Дорофеев
КонецПроцедуры
34 1 Всеволод Дорофеев
</pre>
35 3 Всеволод Дорофеев
36 3 Всеволод Дорофеев
h3.  ШАБЛОНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ СКД
37 3 Всеволод Дорофеев
38 3 Всеволод Дорофеев
<pre>
39 3 Всеволод Дорофеев
//****************************************************************************
40 3 Всеволод Дорофеев
// ШАБЛОНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ СКД
41 3 Всеволод Дорофеев
// {{
42 3 Всеволод Дорофеев
//****************************************************************************
43 3 Всеволод Дорофеев
// Заполняет переданный объект на основани СКД
44 3 Всеволод Дорофеев
//
45 3 Всеволод Дорофеев
// Параметры
46 3 Всеволод Дорофеев
//
47 3 Всеволод Дорофеев
//  СКД – собствеено настройки СКД
48 3 Всеволод Дорофеев
//
49 3 Всеволод Дорофеев
//  ОбъектДляЗагрузки – объект в который выгружаются данные, таблица значений, дерево значений, табличный документ
50 3 Всеволод Дорофеев
//
51 3 Всеволод Дорофеев
//  ИсполняемыеНастройки – Пользовательские настройки СКД если не указаны будут использованы настроки СКД по умолчанию
52 3 Всеволод Дорофеев
//
53 3 Всеволод Дорофеев
//  СтруктураПараметров - Структура – Передаваемые для СКД параметры
54 3 Всеволод Дорофеев
//
55 3 Всеволод Дорофеев
//  ДеревоЗначений = Новый ДеревоЗначений;
56 3 Всеволод Дорофеев
//
57 3 Всеволод Дорофеев
//  ПРИМЕР ВЫЗОВА
58 3 Всеволод Дорофеев
//    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
59 3 Всеволод Дорофеев
//    СтруктураПараметров = Новый Структура("ДатаОтчета", НашаДата);
60 3 Всеволод Дорофеев
//    ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, ДеревоЗначений, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, СтруктураПараметров);
61 3 Всеволод Дорофеев
//
62 3 Всеволод Дорофеев
&НаСервере
63 3 Всеволод Дорофеев
Процедура ПолучитьДанныеНаОснованииСКД(СКД, ОбъектДляЗагрузки, ИсполняемыеНастройки = Неопределено, СтруктураПараметров = Неопределено, РасшифровкаСКД = Неопределено, МакетКомпоновки = Неопределено, ВнешниеНаборыДанных = Неопределено) Экспорт
64 3 Всеволод Дорофеев
65 3 Всеволод Дорофеев
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
66 3 Всеволод Дорофеев
67 3 Всеволод Дорофеев
    //Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
68 3 Всеволод Дорофеев
    Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
69 3 Всеволод Дорофеев
        ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных");
70 3 Всеволод Дорофеев
    Иначе
71 3 Всеволод Дорофеев
        ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
72 3 Всеволод Дорофеев
    КонецЕсли;
73 3 Всеволод Дорофеев
74 3 Всеволод Дорофеев
    Если ИсполняемыеНастройки = Неопределено Тогда
75 3 Всеволод Дорофеев
76 3 Всеволод Дорофеев
        ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;
77 3 Всеволод Дорофеев
78 3 Всеволод Дорофеев
    КонецЕсли;
79 3 Всеволод Дорофеев
80 3 Всеволод Дорофеев
    Если СтруктураПараметров <> Неопределено Тогда
81 3 Всеволод Дорофеев
82 3 Всеволод Дорофеев
        КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;
83 3 Всеволод Дорофеев
84 3 Всеволод Дорофеев
        Для каждого Параметр Из СтруктураПараметров Цикл
85 3 Всеволод Дорофеев
86 3 Всеволод Дорофеев
            НайденноеЗначениеПараметра = КоллекцияЗначенийПараметров.Найти(Параметр.Ключ);
87 3 Всеволод Дорофеев
88 3 Всеволод Дорофеев
            Если НайденноеЗначениеПараметра <> Неопределено Тогда
89 3 Всеволод Дорофеев
90 3 Всеволод Дорофеев
                НайденноеЗначениеПараметра.Использование = Истина;
91 3 Всеволод Дорофеев
92 3 Всеволод Дорофеев
                НайденноеЗначениеПараметра.Значение = Параметр.Значение;
93 3 Всеволод Дорофеев
94 3 Всеволод Дорофеев
            КонецЕсли;
95 3 Всеволод Дорофеев
96 3 Всеволод Дорофеев
        КонецЦикла;
97 3 Всеволод Дорофеев
98 3 Всеволод Дорофеев
    КонецЕсли;
99 3 Всеволод Дорофеев
100 3 Всеволод Дорофеев
    МакетКомпоновкиСКД = КомпоновщикМакета.Выполнить(СКД, ИсполняемыеНастройки, РасшифровкаСКД, МакетКомпоновки, ТипГенератора);
101 3 Всеволод Дорофеев
102 3 Всеволод Дорофеев
    ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;
103 3 Всеволод Дорофеев
104 3 Всеволод Дорофеев
    ПроцессорКомпановки.Инициализировать(МакетКомпоновкиСКД, ВнешниеНаборыДанных, РасшифровкаСКД);
105 3 Всеволод Дорофеев
106 3 Всеволод Дорофеев
    //Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
107 3 Всеволод Дорофеев
    Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
108 3 Всеволод Дорофеев
109 3 Всеволод Дорофеев
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
110 3 Всеволод Дорофеев
111 3 Всеволод Дорофеев
        ПроцессорВывода.УстановитьДокумент(ОбъектДляЗагрузки);
112 3 Всеволод Дорофеев
113 3 Всеволод Дорофеев
    Иначе
114 3 Всеволод Дорофеев
115 3 Всеволод Дорофеев
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
116 3 Всеволод Дорофеев
117 3 Всеволод Дорофеев
        ПроцессорВывода.УстановитьОбъект(ОбъектДляЗагрузки);
118 3 Всеволод Дорофеев
119 3 Всеволод Дорофеев
    КонецЕсли;
120 3 Всеволод Дорофеев
121 3 Всеволод Дорофеев
    ПроцессорВывода.ОтображатьПроцентВывода = Истина;
122 3 Всеволод Дорофеев
123 3 Всеволод Дорофеев
    ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина);
124 3 Всеволод Дорофеев
125 3 Всеволод Дорофеев
КонецПроцедуры // ПолучитьДанныеНаОснованииСКД()
126 3 Всеволод Дорофеев
127 3 Всеволод Дорофеев
//****************************************************************************
128 3 Всеволод Дорофеев
// }}
129 3 Всеволод Дорофеев
//****************************************************************************
130 3 Всеволод Дорофеев
</pre>