Система компоновки данных (СКД) » История » Версия 18
Всеволод Дорофеев, 11.10.2022 00:11
1 | 1 | Всеволод Дорофеев | h1. Система компоновки данных (СКД) |
---|---|---|---|
2 | 1 | Всеволод Дорофеев | |
3 | 17 | Всеволод Дорофеев | {{TOC}} |
4 | 17 | Всеволод Дорофеев | |
5 | 1 | Всеволод Дорофеев | h3. Программное выполнение СКД с выводом в таблицу значений |
6 | 1 | Всеволод Дорофеев | |
7 | 1 | Всеволод Дорофеев | <pre> |
8 | 1 | Всеволод Дорофеев | &НаСервере |
9 | 1 | Всеволод Дорофеев | Процедура ПеренестиНоменклатуруСервере() |
10 | 1 | Всеволод Дорофеев | ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); |
11 | 1 | Всеволод Дорофеев | СхемаНоменклатуры = ОбъектНаСервере.ПолучитьМакет("СКД"); |
12 | 1 | Всеволод Дорофеев | |
13 | 2 | Всеволод Дорофеев | //СКД. Программная установка параметров в управляемой форме отчета |
14 | 2 | Всеволод Дорофеев | ПараметрДанных = КомпоновщикНаФорме.Настройки.ПараметрыДанных.Элементы.Найти("ГруппаНоменклатуры"); |
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 | Всеволод Дорофеев | |
35 | 1 | Всеволод Дорофеев | КонецПроцедуры |
36 | 1 | Всеволод Дорофеев | </pre> |
37 | 5 | Всеволод Дорофеев | Вариант 2. |
38 | 5 | Всеволод Дорофеев | <pre> |
39 | 5 | Всеволод Дорофеев | Процедура СформироватьОтчетВТаблицуЗначений(Результат = Неопределено, ДанныеРасшифровки = Неопределено, ВыводВФормуОтчета = Истина, ВнешниеНаборыДанных = Неопределено) Экспорт |
40 | 5 | Всеволод Дорофеев | |
41 | 5 | Всеволод Дорофеев | Настройки = КомпоновщикНастроек.ПолучитьНастройки(); |
42 | 5 | Всеволод Дорофеев | |
43 | 5 | Всеволод Дорофеев | КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; |
44 | 5 | Всеволод Дорофеев | |
45 | 5 | Всеволод Дорофеев | МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, |
46 | 5 | Всеволод Дорофеев | КомпоновщикНастроек.Настройки, , , |
47 | 5 | Всеволод Дорофеев | Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); |
48 | 5 | Всеволод Дорофеев | |
49 | 5 | Всеволод Дорофеев | ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; |
50 | 5 | Всеволод Дорофеев | ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); |
51 | 5 | Всеволод Дорофеев | |
52 | 5 | Всеволод Дорофеев | ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; |
53 | 5 | Всеволод Дорофеев | |
54 | 5 | Всеволод Дорофеев | ПроцессорВывода.УстановитьОбъект(Результат); |
55 | 5 | Всеволод Дорофеев | ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
56 | 5 | Всеволод Дорофеев | |
57 | 5 | Всеволод Дорофеев | КонецПроцедуры |
58 | 5 | Всеволод Дорофеев | |
59 | 5 | Всеволод Дорофеев | //Пример вызова: |
60 | 5 | Всеволод Дорофеев | Результат = новый ТаблицаЗначений; |
61 | 5 | Всеволод Дорофеев | СформироватьОтчетВТаблицуЗначений(Результат, ЭтаФорма.ДанныеРасшифровки); |
62 | 5 | Всеволод Дорофеев | </pre> |
63 | 5 | Всеволод Дорофеев | |
64 | 3 | Всеволод Дорофеев | |
65 | 3 | Всеволод Дорофеев | h3. ШАБЛОНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ СКД |
66 | 3 | Всеволод Дорофеев | |
67 | 3 | Всеволод Дорофеев | <pre> |
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 | Всеволод Дорофеев | |
131 | 3 | Всеволод Дорофеев | ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных; |
132 | 3 | Всеволод Дорофеев | |
133 | 6 | Всеволод Дорофеев | ПроцессорКомпановки.Инициализировать(МакетКомпоновкиСКД, ВнешниеНаборыДанных, РасшифровкаСКД, Истина); |
134 | 3 | Всеволод Дорофеев | |
135 | 3 | Всеволод Дорофеев | //Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда |
136 | 3 | Всеволод Дорофеев | Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда |
137 | 3 | Всеволод Дорофеев | |
138 | 3 | Всеволод Дорофеев | ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; |
139 | 3 | Всеволод Дорофеев | |
140 | 3 | Всеволод Дорофеев | ПроцессорВывода.УстановитьДокумент(ОбъектДляЗагрузки); |
141 | 3 | Всеволод Дорофеев | |
142 | 3 | Всеволод Дорофеев | Иначе |
143 | 3 | Всеволод Дорофеев | |
144 | 3 | Всеволод Дорофеев | ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; |
145 | 3 | Всеволод Дорофеев | |
146 | 3 | Всеволод Дорофеев | ПроцессорВывода.УстановитьОбъект(ОбъектДляЗагрузки); |
147 | 3 | Всеволод Дорофеев | |
148 | 3 | Всеволод Дорофеев | КонецЕсли; |
149 | 3 | Всеволод Дорофеев | |
150 | 3 | Всеволод Дорофеев | ПроцессорВывода.ОтображатьПроцентВывода = Истина; |
151 | 3 | Всеволод Дорофеев | |
152 | 3 | Всеволод Дорофеев | ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина); |
153 | 3 | Всеволод Дорофеев | |
154 | 3 | Всеволод Дорофеев | КонецПроцедуры // ПолучитьДанныеНаОснованииСКД() |
155 | 3 | Всеволод Дорофеев | |
156 | 3 | Всеволод Дорофеев | //**************************************************************************** |
157 | 3 | Всеволод Дорофеев | // }} |
158 | 3 | Всеволод Дорофеев | //**************************************************************************** |
159 | 3 | Всеволод Дорофеев | </pre> |
160 | 4 | Всеволод Дорофеев | |
161 | 4 | Всеволод Дорофеев | h3. Смена схемы СКД |
162 | 4 | Всеволод Дорофеев | |
163 | 4 | Всеволод Дорофеев | <pre> |
164 | 4 | Всеволод Дорофеев | Функция СохранитьПараметры(ИменаПараметров) |
165 | 4 | Всеволод Дорофеев | |
166 | 4 | Всеволод Дорофеев | Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных; |
167 | 4 | Всеволод Дорофеев | |
168 | 4 | Всеволод Дорофеев | МассивСИменами = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ИменаПараметров,","); |
169 | 4 | Всеволод Дорофеев | |
170 | 4 | Всеволод Дорофеев | СтруктураДляПараметров = Новый Структура; |
171 | 4 | Всеволод Дорофеев | |
172 | 4 | Всеволод Дорофеев | Для Каждого ИмяПараметра Из МассивСИменами Цикл |
173 | 4 | Всеволод Дорофеев | |
174 | 4 | Всеволод Дорофеев | Параметр = Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ИмяПараметра)); |
175 | 4 | Всеволод Дорофеев | |
176 | 4 | Всеволод Дорофеев | Если Параметр <> Неопределено Тогда |
177 | 4 | Всеволод Дорофеев | |
178 | 4 | Всеволод Дорофеев | СтруктураДляПараметров.Вставить(ИмяПараметра, Параметр.Значение); |
179 | 4 | Всеволод Дорофеев | |
180 | 4 | Всеволод Дорофеев | КонецЕсли; |
181 | 4 | Всеволод Дорофеев | |
182 | 4 | Всеволод Дорофеев | КонецЦикла; |
183 | 4 | Всеволод Дорофеев | |
184 | 4 | Всеволод Дорофеев | |
185 | 4 | Всеволод Дорофеев | |
186 | 4 | Всеволод Дорофеев | Возврат СтруктураДляПараметров; |
187 | 4 | Всеволод Дорофеев | |
188 | 4 | Всеволод Дорофеев | КонецФункции |
189 | 4 | Всеволод Дорофеев | |
190 | 4 | Всеволод Дорофеев | |
191 | 4 | Всеволод Дорофеев | |
192 | 4 | Всеволод Дорофеев | |
193 | 4 | Всеволод Дорофеев | |
194 | 4 | Всеволод Дорофеев | Процедура ЗагрузитьПараметры(СтруктураСПараметрами) |
195 | 4 | Всеволод Дорофеев | |
196 | 4 | Всеволод Дорофеев | Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных; |
197 | 4 | Всеволод Дорофеев | |
198 | 4 | Всеволод Дорофеев | Для Каждого ТекущийПараметр Из СтруктураСПараметрами Цикл |
199 | 4 | Всеволод Дорофеев | |
200 | 4 | Всеволод Дорофеев | Параметр = Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ТекущийПараметр.Ключ)); |
201 | 4 | Всеволод Дорофеев | |
202 | 4 | Всеволод Дорофеев | Если Параметр <> Неопределено Тогда |
203 | 4 | Всеволод Дорофеев | |
204 | 4 | Всеволод Дорофеев | Параметр.Значение = ТекущийПараметр.Значение; |
205 | 4 | Всеволод Дорофеев | |
206 | 4 | Всеволод Дорофеев | Параметр.Использование = Истина; |
207 | 4 | Всеволод Дорофеев | |
208 | 4 | Всеволод Дорофеев | КонецЕсли; |
209 | 4 | Всеволод Дорофеев | |
210 | 4 | Всеволод Дорофеев | КонецЦикла; |
211 | 4 | Всеволод Дорофеев | |
212 | 4 | Всеволод Дорофеев | КонецПроцедуры |
213 | 4 | Всеволод Дорофеев | |
214 | 4 | Всеволод Дорофеев | |
215 | 4 | Всеволод Дорофеев | |
216 | 4 | Всеволод Дорофеев | |
217 | 4 | Всеволод Дорофеев | |
218 | 4 | Всеволод Дорофеев | Процедура СменитьСхему() |
219 | 4 | Всеволод Дорофеев | |
220 | 4 | Всеволод Дорофеев | СтруктураСНастройками = СохранитьПараметры("Параметр1,Параметр2,Параметр3"); |
221 | 4 | Всеволод Дорофеев | |
222 | 4 | Всеволод Дорофеев | СхемаКомпоновкиДанных = ПолучитьМакет("ЗдесьИмяНужнойВамСхемы"); |
223 | 4 | Всеволод Дорофеев | |
224 | 4 | Всеволод Дорофеев | Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; |
225 | 4 | Всеволод Дорофеев | |
226 | 4 | Всеволод Дорофеев | КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); |
227 | 4 | Всеволод Дорофеев | |
228 | 4 | Всеволод Дорофеев | ЗагрузитьПараметры(СтруктураСНастройками); |
229 | 4 | Всеволод Дорофеев | |
230 | 1 | Всеволод Дорофеев | КонецПроцедуры |
231 | 6 | Всеволод Дорофеев | </pre> |
232 | 6 | Всеволод Дорофеев | |
233 | 6 | Всеволод Дорофеев | h3. Как в СКД получить GUID (ГУИД) объекта |
234 | 6 | Всеволод Дорофеев | |
235 | 6 | Всеволод Дорофеев | В вычисляемые поля добавить выражение "XMLСтрока(Номенклатура)" |
236 | 6 | Всеволод Дорофеев | |
237 | 6 | Всеволод Дорофеев | Все работает если процессор компоновки инициализировать программно и четвертым параметром указать использование общих модулей конфигурации в выражениях. |
238 | 6 | Всеволод Дорофеев | Казалось бы, причем здесь функции глобального контекста? Но факт остается фактом, без этого при компоновке вываливается приведенная вами ошибка. Проверено на версии платформы 8.3.8.1747. |
239 | 6 | Всеволод Дорофеев | <pre> |
240 | 6 | Всеволод Дорофеев | ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,,Истина); |
241 | 4 | Всеволод Дорофеев | </pre> |
242 | 7 | Всеволод Дорофеев | |
243 | 7 | Всеволод Дорофеев | h3. Функции округления в СКД в вычисляемых полях |
244 | 7 | Всеволод Дорофеев | |
245 | 7 | Всеволод Дорофеев | В выражении вычисляемого поля можно использовать функции платформы, например: Окр() (без третьего параметра), Цел(), Макс() |
246 | 7 | Всеволод Дорофеев | Так же можно использовать функции общих модулей. |
247 | 7 | Всеволод Дорофеев | |
248 | 8 | Всеволод Дорофеев | Например: |
249 | 7 | Всеволод Дорофеев | <pre> |
250 | 1 | Всеволод Дорофеев | Цел(ОстатокУТ11*&КоэффициентОстатка/100) - ЕстьNull(ОстатокБухгалтерия,0) |
251 | 8 | Всеволод Дорофеев | //где &КоэффициентОстатка - Параметр |
252 | 7 | Всеволод Дорофеев | </pre> |
253 | 9 | Всеволод Дорофеев | |
254 | 9 | Всеволод Дорофеев | h3. Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час |
255 | 9 | Всеволод Дорофеев | |
256 | 9 | Всеволод Дорофеев | Использование функций, фреймвока |
257 | 9 | Всеволод Дорофеев | |
258 | 9 | Всеволод Дорофеев | https://infostart.ru/public/864434/ |
259 | 10 | Всеволод Дорофеев | |
260 | 11 | Всеволод Дорофеев | h3. Программная инициализация КомпоновщикаНастроек на управляемой форме. |
261 | 1 | Всеволод Дорофеев | |
262 | 11 | Всеволод Дорофеев | http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=576334 |
263 | 1 | Всеволод Дорофеев | https://its.1c.ru/db/metod8dev/content/3480/hdoc |
264 | 10 | Всеволод Дорофеев | |
265 | 11 | Всеволод Дорофеев | В *реквизитах формы* имеем реквизит АдресСхемыКомпоновкиДанных типа Строка. |
266 | 10 | Всеволод Дорофеев | |
267 | 11 | Всеволод Дорофеев | В обработчике события формы ПриСозданииНаСервере пишем: |
268 | 10 | Всеволод Дорофеев | <pre> |
269 | 11 | Всеволод Дорофеев | СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОбъёмыРеализации"); |
270 | 11 | Всеволод Дорофеев | АдресСхемыКомпоновкиДанных = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор); |
271 | 10 | Всеволод Дорофеев | |
272 | 11 | Всеволод Дорофеев | Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыКомпоновкиДанных)); |
273 | 11 | Всеволод Дорофеев | Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); |
274 | 10 | Всеволод Дорофеев | </pre> |
275 | 11 | Всеволод Дорофеев | |
276 | 10 | Всеволод Дорофеев | |
277 | 11 | Всеволод Дорофеев | При формировании данных пишем что-то типа такого: |
278 | 10 | Всеволод Дорофеев | <pre> |
279 | 11 | Всеволод Дорофеев | КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; |
280 | 11 | Всеволод Дорофеев | МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьИзВременногоХранилища(АдресСхемыКомпоновкиДанных), Настройки); |
281 | 10 | Всеволод Дорофеев | </pre> |
282 | 12 | Всеволод Дорофеев | |
283 | 15 | Всеволод Дорофеев | h3. Агрегатные функции СКД |
284 | 15 | Всеволод Дорофеев | |
285 | 15 | Всеволод Дорофеев | https://its.1c.ru/db/v837doc/bookmark/usr/TI000000255 |
286 | 15 | Всеволод Дорофеев | |
287 | 16 | Всеволод Дорофеев | h3. Функция СКД ВычислитьВыражение() - Накопительный итог |
288 | 16 | Всеволод Дорофеев | |
289 | 16 | Всеволод Дорофеев | Пример использования параметров |
290 | 16 | Всеволод Дорофеев | |
291 | 16 | Всеволод Дорофеев | Если требуется рассчитать сумму с накоплением, то можно использовать следующее выражение: |
292 | 16 | Всеволод Дорофеев | Копировать в буфер обмена |
293 | 16 | Всеволод Дорофеев | |
294 | 16 | Всеволод Дорофеев | <pre> |
295 | 16 | Всеволод Дорофеев | ВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Текущая") |
296 | 16 | Всеволод Дорофеев | </pre> |
297 | 16 | Всеволод Дорофеев | |
298 | 16 | Всеволод Дорофеев | Если требуется получить значение группировки в предыдущей строке, то можно использовать следующее выражение: |
299 | 16 | Всеволод Дорофеев | Копировать в буфер обмена |
300 | 16 | Всеволод Дорофеев | |
301 | 16 | Всеволод Дорофеев | <pre> |
302 | 16 | Всеволод Дорофеев | ВычислитьВыражение("Курс", , , "Предыдущая") |
303 | 16 | Всеволод Дорофеев | </pre> |
304 | 16 | Всеволод Дорофеев | |
305 | 15 | Всеволод Дорофеев | h3. Функция СКД КлассификацияABC |
306 | 15 | Всеволод Дорофеев | |
307 | 15 | Всеволод Дорофеев | Синтаксис: |
308 | 15 | Всеволод Дорофеев | |
309 | 15 | Всеволод Дорофеев | КлассификацияABC(Значение, КоличествоГрупп, ПроцентыДляГрупп, ИмяГруппировки) |
310 | 15 | Всеволод Дорофеев | |
311 | 15 | Всеволод Дорофеев | Параметры: |
312 | 15 | Всеволод Дорофеев | |
313 | 15 | Всеволод Дорофеев | ● Значение – тип Строка. Значение, по которому нужно рассчитывать классификацию. Строка, в которой указано выражение; |
314 | 15 | Всеволод Дорофеев | |
315 | 15 | Всеволод Дорофеев | ● КоличествоГрупп – тип Число. Задает количество групп, на которое нужно разбить; |
316 | 15 | Всеволод Дорофеев | |
317 | 15 | Всеволод Дорофеев | ● ПроцентыДляГрупп – тип Число. Количество групп, на которое нужно разбить минус 1. Указывается через запятую; |
318 | 15 | Всеволод Дорофеев | |
319 | 15 | Всеволод Дорофеев | ● ИмяГруппировки – тип Строка. Имя группировки, в которой нужно вычислять группировку обработки. Если не указано, то вычисление происходит в текущей группировке. Если вычисление выполняется в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Данное имя будет заменено на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL. |
320 | 15 | Всеволод Дорофеев | |
321 | 15 | Всеволод Дорофеев | Пример: |
322 | 15 | Всеволод Дорофеев | |
323 | 15 | Всеволод Дорофеев | <pre> |
324 | 15 | Всеволод Дорофеев | КлассификацияABC("Сумма([Количество Оборот])", 3) |
325 | 15 | Всеволод Дорофеев | </pre> |
326 | 15 | Всеволод Дорофеев | |
327 | 12 | Всеволод Дорофеев | h3. Функция СКД СоединитьСтроки |
328 | 12 | Всеволод Дорофеев | |
329 | 12 | Всеволод Дорофеев | https://1centerprise8.blogspot.com/2015/12/vyvod-tch-v-ja-chejku.html |
330 | 12 | Всеволод Дорофеев | <pre> |
331 | 12 | Всеволод Дорофеев | |
332 | 12 | Всеволод Дорофеев | СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок) - предназначена для объединения строк в одну строку. |
333 | 12 | Всеволод Дорофеев | |
334 | 12 | Всеволод Дорофеев | Значение - выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы; |
335 | 12 | Всеволод Дорофеев | РазделительЭлементов - строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк; |
336 | 12 | Всеволод Дорофеев | РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию "; ". |
337 | 12 | Всеволод Дорофеев | |
338 | 12 | Всеволод Дорофеев | Массив([Различные] Выражение) - в качестве параметра можно использовать таблицу значений. При этом результатом работы функции будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра. Если выражение содержит функцию Массив, то считается, что данное выражение является агрегатным. Если указано ключевое слово Различные, то получаемый массив не будет содержать дублирующихся значений. |
339 | 12 | Всеволод Дорофеев | </pre> |
340 | 13 | Всеволод Дорофеев | |
341 | 13 | Всеволод Дорофеев | h3. Использовение нескольких СКД |
342 | 13 | Всеволод Дорофеев | |
343 | 13 | Всеволод Дорофеев | https://1centerprise8.blogspot.com/2015/06/ispolzovanie-neskolkih-skd.html |
344 | 13 | Всеволод Дорофеев | |
345 | 13 | Всеволод Дорофеев | Выбор макета при компоновке |
346 | 13 | Всеволод Дорофеев | |
347 | 13 | Всеволод Дорофеев | <pre> |
348 | 13 | Всеволод Дорофеев | Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) |
349 | 13 | Всеволод Дорофеев | |
350 | 13 | Всеволод Дорофеев | // Получаем необходимую СКД. |
351 | 13 | Всеволод Дорофеев | НеобходимаяСКД = Неопределено; |
352 | 13 | Всеволод Дорофеев | Если ЭтотОбъект.НомерСКД = 1 Тогда |
353 | 13 | Всеволод Дорофеев | НеобходимаяСКД = ЭтотОбъект.ПолучитьМакет("МакетНомерОдин"); |
354 | 13 | Всеволод Дорофеев | ИначеЕсли ЭтотОбъект.НомерСКД = 2 Тогда |
355 | 13 | Всеволод Дорофеев | НеобходимаяСКД = ЭтотОбъект.ПолучитьМакет("МакетНомерДва"); |
356 | 13 | Всеволод Дорофеев | КонецЕсли; |
357 | 13 | Всеволод Дорофеев | |
358 | 13 | Всеволод Дорофеев | // Устанавливаем выбранную СКД как основную. |
359 | 13 | Всеволод Дорофеев | ЭтотОбъект.СхемаКомпоновкиДанных = НеобходимаяСКД; |
360 | 13 | Всеволод Дорофеев | |
361 | 13 | Всеволод Дорофеев | // Загружаем настройки выбранной СКД в компоновщик настроек. |
362 | 13 | Всеволод Дорофеев | ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(НеобходимаяСКД); |
363 | 13 | Всеволод Дорофеев | |
364 | 13 | Всеволод Дорофеев | ЭтотОбъект.КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек); |
365 | 13 | Всеволод Дорофеев | ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НеобходимаяСКД.НастройкиПоУмолчанию); |
366 | 13 | Всеволод Дорофеев | |
367 | 13 | Всеволод Дорофеев | // Устанавливаем настройки. |
368 | 13 | Всеволод Дорофеев | ПараметрыДанных = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных; |
369 | 13 | Всеволод Дорофеев | ПараметрВидЛица = Новый ПараметрКомпоновкиДанных("ЮрФизЛицо"); |
370 | 13 | Всеволод Дорофеев | ЗначениеВидЛица = ПараметрыДанных.НайтиЗначениеПараметра(ПараметрВидЛица); |
371 | 13 | Всеволод Дорофеев | Если ЗначениеВидЛица <> Неопределено Тогда |
372 | 13 | Всеволод Дорофеев | ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрВидЛица, ЭтотОбъект.ВидЛица); |
373 | 13 | Всеволод Дорофеев | КонецЕсли; |
374 | 13 | Всеволод Дорофеев | ПараметрыДанных = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных; |
375 | 13 | Всеволод Дорофеев | ПараметрТолькоНаОснСкладе = Новый ПараметрКомпоновкиДанных("НаОсновномСкладе"); |
376 | 13 | Всеволод Дорофеев | ЗначениеТолькоНаОснСкладе = ПараметрыДанных.НайтиЗначениеПараметра(ПараметрТолькоНаОснСкладе); |
377 | 13 | Всеволод Дорофеев | Если ЗначениеТолькоНаОснСкладе <> Неопределено Тогда |
378 | 13 | Всеволод Дорофеев | ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрТолькоНаОснСкладе, ЭтотОбъект.ТолькоНаОсновномСкладе); |
379 | 13 | Всеволод Дорофеев | КонецЕсли; |
380 | 13 | Всеволод Дорофеев | |
381 | 13 | Всеволод Дорофеев | КонецПроцедуры |
382 | 13 | Всеволод Дорофеев | </pre> |
383 | 14 | Всеволод Дорофеев | |
384 | 14 | Всеволод Дорофеев | дополнение |
385 | 14 | Всеволод Дорофеев | |
386 | 14 | Всеволод Дорофеев | <pre> |
387 | 14 | Всеволод Дорофеев | //Когда выполняется стандартный алгоритм формирования отчета, нужно указать среди параметров ДанныеРасшифровки : |
388 | 14 | Всеволод Дорофеев | |
389 | 14 | Всеволод Дорофеев | КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); |
390 | 14 | Всеволод Дорофеев | НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки(); |
391 | 14 | Всеволод Дорофеев | КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; |
392 | 14 | Всеволод Дорофеев | МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД,ДанныеРасшифровки); |
393 | 14 | Всеволод Дорофеев | ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; |
394 | 14 | Всеволод Дорофеев | ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровки, Истина); |
395 | 14 | Всеволод Дорофеев | |
396 | 14 | Всеволод Дорофеев | ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; |
397 | 14 | Всеволод Дорофеев | ПроцессорВывода.УстановитьДокумент(ДокументРезультат); |
398 | 14 | Всеволод Дорофеев | ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
399 | 17 | Всеволод Дорофеев | </pre> |
400 | 17 | Всеволод Дорофеев | |
401 | 17 | Всеволод Дорофеев | h3. Восстановление настроек СКД |
402 | 17 | Всеволод Дорофеев | |
403 | 17 | Всеволод Дорофеев | https://infostart.ru/1c/articles/1224243/ |
404 | 17 | Всеволод Дорофеев | |
405 | 17 | Всеволод Дорофеев | <pre> |
406 | 17 | Всеволод Дорофеев | КомпоновщикНастроек.Восстановить() |
407 | 14 | Всеволод Дорофеев | </pre> |