Проект

Общее

Профиль

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

Всеволод Дорофеев, 11.10.2022 00:09

1 1 Всеволод Дорофеев
h1. Система компоновки данных (СКД)
2 1 Всеволод Дорофеев
3 17 Всеволод Дорофеев
{{TOC}}
4 17 Всеволод Дорофеев
5 17 Всеволод Дорофеев
{{collapse(h3. Процедуры и функции общего назначения)
6 17 Всеволод Дорофеев
7 1 Всеволод Дорофеев
h3. Программное выполнение СКД с выводом в таблицу значений
8 1 Всеволод Дорофеев
9 1 Всеволод Дорофеев
<pre>
10 1 Всеволод Дорофеев
&НаСервере
11 1 Всеволод Дорофеев
Процедура ПеренестиНоменклатуруСервере()
12 1 Всеволод Дорофеев
	ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
13 1 Всеволод Дорофеев
	СхемаНоменклатуры = ОбъектНаСервере.ПолучитьМакет("СКД");          
14 1 Всеволод Дорофеев
15 2 Всеволод Дорофеев
	//СКД. Программная установка параметров в управляемой форме отчета
16 2 Всеволод Дорофеев
    ПараметрДанных = КомпоновщикНаФорме.Настройки.ПараметрыДанных.Элементы.Найти("ГруппаНоменклатуры");
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 Всеволод Дорофеев
	
37 1 Всеволод Дорофеев
КонецПроцедуры
38 1 Всеволод Дорофеев
</pre>
39 5 Всеволод Дорофеев
Вариант 2.
40 5 Всеволод Дорофеев
<pre>
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 Всеволод Дорофеев
Результат = новый ТаблицаЗначений;
63 5 Всеволод Дорофеев
СформироватьОтчетВТаблицуЗначений(Результат, ЭтаФорма.ДанныеРасшифровки);
64 5 Всеволод Дорофеев
</pre>
65 5 Всеволод Дорофеев
66 3 Всеволод Дорофеев
67 3 Всеволод Дорофеев
h3.  ШАБЛОНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ СКД
68 3 Всеволод Дорофеев
69 3 Всеволод Дорофеев
<pre>
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 3 Всеволод Дорофеев
    ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;
134 3 Всеволод Дорофеев
135 6 Всеволод Дорофеев
    ПроцессорКомпановки.Инициализировать(МакетКомпоновкиСКД, ВнешниеНаборыДанных, РасшифровкаСКД, Истина);
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 Всеволод Дорофеев
// }}
160 3 Всеволод Дорофеев
//****************************************************************************
161 3 Всеволод Дорофеев
</pre>
162 4 Всеволод Дорофеев
163 4 Всеволод Дорофеев
h3. Смена схемы СКД
164 4 Всеволод Дорофеев
165 4 Всеволод Дорофеев
<pre>
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 Всеволод Дорофеев
Процедура СменитьСхему()
221 4 Всеволод Дорофеев
222 4 Всеволод Дорофеев
    СтруктураСНастройками = СохранитьПараметры("Параметр1,Параметр2,Параметр3");
223 4 Всеволод Дорофеев
224 4 Всеволод Дорофеев
    СхемаКомпоновкиДанных = ПолучитьМакет("ЗдесьИмяНужнойВамСхемы");
225 4 Всеволод Дорофеев
226 4 Всеволод Дорофеев
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
227 4 Всеволод Дорофеев
228 4 Всеволод Дорофеев
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
229 4 Всеволод Дорофеев
230 4 Всеволод Дорофеев
    ЗагрузитьПараметры(СтруктураСНастройками);
231 4 Всеволод Дорофеев
232 1 Всеволод Дорофеев
КонецПроцедуры
233 6 Всеволод Дорофеев
</pre>
234 6 Всеволод Дорофеев
235 6 Всеволод Дорофеев
h3. Как в СКД получить GUID (ГУИД) объекта
236 6 Всеволод Дорофеев
237 6 Всеволод Дорофеев
В вычисляемые поля добавить выражение "XMLСтрока(Номенклатура)"
238 6 Всеволод Дорофеев
239 6 Всеволод Дорофеев
Все работает если процессор компоновки инициализировать программно и четвертым параметром указать использование общих модулей конфигурации в выражениях.
240 6 Всеволод Дорофеев
Казалось бы, причем здесь функции глобального контекста? Но факт остается фактом, без этого при компоновке вываливается приведенная вами ошибка. Проверено на версии платформы 8.3.8.1747.
241 6 Всеволод Дорофеев
<pre>
242 6 Всеволод Дорофеев
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,,Истина);
243 4 Всеволод Дорофеев
</pre>
244 7 Всеволод Дорофеев
245 7 Всеволод Дорофеев
h3. Функции округления в СКД в вычисляемых полях
246 7 Всеволод Дорофеев
247 7 Всеволод Дорофеев
В выражении вычисляемого поля можно использовать функции платформы, например: Окр() (без третьего параметра), Цел(), Макс()
248 7 Всеволод Дорофеев
Так же можно использовать функции общих модулей.
249 7 Всеволод Дорофеев
250 8 Всеволод Дорофеев
Например:
251 7 Всеволод Дорофеев
<pre>
252 1 Всеволод Дорофеев
Цел(ОстатокУТ11*&КоэффициентОстатка/100) - ЕстьNull(ОстатокБухгалтерия,0)
253 8 Всеволод Дорофеев
//где &КоэффициентОстатка - Параметр
254 7 Всеволод Дорофеев
</pre>
255 9 Всеволод Дорофеев
256 9 Всеволод Дорофеев
h3. Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час
257 9 Всеволод Дорофеев
258 9 Всеволод Дорофеев
Использование функций, фреймвока
259 9 Всеволод Дорофеев
260 9 Всеволод Дорофеев
https://infostart.ru/public/864434/
261 10 Всеволод Дорофеев
262 11 Всеволод Дорофеев
h3. Программная инициализация КомпоновщикаНастроек на управляемой форме.
263 1 Всеволод Дорофеев
264 11 Всеволод Дорофеев
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=576334
265 1 Всеволод Дорофеев
https://its.1c.ru/db/metod8dev/content/3480/hdoc
266 10 Всеволод Дорофеев
267 11 Всеволод Дорофеев
В *реквизитах формы* имеем реквизит АдресСхемыКомпоновкиДанных типа Строка.
268 10 Всеволод Дорофеев
269 11 Всеволод Дорофеев
В обработчике события формы ПриСозданииНаСервере пишем:
270 10 Всеволод Дорофеев
<pre>
271 11 Всеволод Дорофеев
СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОбъёмыРеализации");
272 11 Всеволод Дорофеев
АдресСхемыКомпоновкиДанных = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
273 10 Всеволод Дорофеев
274 11 Всеволод Дорофеев
Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыКомпоновкиДанных));
275 11 Всеволод Дорофеев
Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
276 10 Всеволод Дорофеев
</pre>
277 11 Всеволод Дорофеев
 
278 10 Всеволод Дорофеев
279 11 Всеволод Дорофеев
При формировании данных пишем что-то типа такого:
280 10 Всеволод Дорофеев
<pre>
281 11 Всеволод Дорофеев
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
282 11 Всеволод Дорофеев
МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьИзВременногоХранилища(АдресСхемыКомпоновкиДанных), Настройки);
283 10 Всеволод Дорофеев
</pre>
284 12 Всеволод Дорофеев
285 15 Всеволод Дорофеев
h3. Агрегатные функции СКД
286 15 Всеволод Дорофеев
287 15 Всеволод Дорофеев
https://its.1c.ru/db/v837doc/bookmark/usr/TI000000255
288 15 Всеволод Дорофеев
289 16 Всеволод Дорофеев
h3.  Функция СКД ВычислитьВыражение() - Накопительный итог
290 16 Всеволод Дорофеев
291 16 Всеволод Дорофеев
Пример использования параметров
292 16 Всеволод Дорофеев
293 16 Всеволод Дорофеев
Если требуется рассчитать сумму с накоплением, то можно использовать следующее выражение:
294 16 Всеволод Дорофеев
Копировать в буфер обмена
295 16 Всеволод Дорофеев
296 16 Всеволод Дорофеев
<pre>
297 16 Всеволод Дорофеев
ВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Текущая")
298 16 Всеволод Дорофеев
</pre>
299 16 Всеволод Дорофеев
300 16 Всеволод Дорофеев
Если требуется получить значение группировки в предыдущей строке, то можно использовать следующее выражение:
301 16 Всеволод Дорофеев
Копировать в буфер обмена
302 16 Всеволод Дорофеев
303 16 Всеволод Дорофеев
<pre>
304 16 Всеволод Дорофеев
ВычислитьВыражение("Курс", , , "Предыдущая")
305 16 Всеволод Дорофеев
</pre>
306 16 Всеволод Дорофеев
307 15 Всеволод Дорофеев
h3.  Функция СКД КлассификацияABC
308 15 Всеволод Дорофеев
309 15 Всеволод Дорофеев
Синтаксис:
310 15 Всеволод Дорофеев
311 15 Всеволод Дорофеев
КлассификацияABC(Значение, КоличествоГрупп, ПроцентыДляГрупп, ИмяГруппировки)
312 15 Всеволод Дорофеев
313 15 Всеволод Дорофеев
Параметры:
314 15 Всеволод Дорофеев
315 15 Всеволод Дорофеев
● Значение – тип Строка. Значение, по которому нужно рассчитывать классификацию. Строка, в которой указано выражение;
316 15 Всеволод Дорофеев
317 15 Всеволод Дорофеев
● КоличествоГрупп – тип Число. Задает количество групп, на которое нужно разбить;
318 15 Всеволод Дорофеев
319 15 Всеволод Дорофеев
● ПроцентыДляГрупп – тип Число. Количество групп, на которое нужно разбить минус 1. Указывается через запятую;
320 15 Всеволод Дорофеев
321 15 Всеволод Дорофеев
● ИмяГруппировки – тип Строка. Имя группировки, в которой нужно вычислять группировку обработки. Если не указано, то вычисление происходит в текущей группировке. Если вычисление выполняется в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Данное имя будет заменено на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.
322 15 Всеволод Дорофеев
323 15 Всеволод Дорофеев
Пример:
324 15 Всеволод Дорофеев
325 15 Всеволод Дорофеев
<pre>
326 15 Всеволод Дорофеев
КлассификацияABC("Сумма([Количество Оборот])", 3)
327 15 Всеволод Дорофеев
</pre>
328 15 Всеволод Дорофеев
329 12 Всеволод Дорофеев
h3. Функция СКД СоединитьСтроки 
330 12 Всеволод Дорофеев
331 12 Всеволод Дорофеев
https://1centerprise8.blogspot.com/2015/12/vyvod-tch-v-ja-chejku.html
332 12 Всеволод Дорофеев
<pre>
333 12 Всеволод Дорофеев
334 12 Всеволод Дорофеев
СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок) - предназначена для объединения строк в одну строку.
335 12 Всеволод Дорофеев
336 12 Всеволод Дорофеев
    Значение - выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы;
337 12 Всеволод Дорофеев
    РазделительЭлементов - строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
338 12 Всеволод Дорофеев
    РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию "; ".
339 12 Всеволод Дорофеев
340 12 Всеволод Дорофеев
Массив([Различные] Выражение) - в качестве параметра можно использовать таблицу значений. При этом результатом работы функции будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра. Если выражение содержит функцию Массив, то считается, что данное выражение является агрегатным. Если указано ключевое слово Различные, то получаемый массив не будет содержать дублирующихся значений.
341 12 Всеволод Дорофеев
</pre>
342 13 Всеволод Дорофеев
343 13 Всеволод Дорофеев
h3. Использовение нескольких СКД
344 13 Всеволод Дорофеев
345 13 Всеволод Дорофеев
https://1centerprise8.blogspot.com/2015/06/ispolzovanie-neskolkih-skd.html
346 13 Всеволод Дорофеев
347 13 Всеволод Дорофеев
Выбор макета при компоновке
348 13 Всеволод Дорофеев
349 13 Всеволод Дорофеев
<pre>
350 13 Всеволод Дорофеев
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
351 13 Всеволод Дорофеев
 
352 13 Всеволод Дорофеев
 // Получаем необходимую СКД.
353 13 Всеволод Дорофеев
 НеобходимаяСКД = Неопределено;
354 13 Всеволод Дорофеев
 Если ЭтотОбъект.НомерСКД = 1 Тогда
355 13 Всеволод Дорофеев
  НеобходимаяСКД = ЭтотОбъект.ПолучитьМакет("МакетНомерОдин");
356 13 Всеволод Дорофеев
 ИначеЕсли ЭтотОбъект.НомерСКД = 2 Тогда
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 Всеволод Дорофеев
 
383 13 Всеволод Дорофеев
КонецПроцедуры
384 13 Всеволод Дорофеев
</pre>
385 14 Всеволод Дорофеев
386 14 Всеволод Дорофеев
дополнение
387 14 Всеволод Дорофеев
388 14 Всеволод Дорофеев
<pre>
389 14 Всеволод Дорофеев
//Когда выполняется стандартный алгоритм формирования отчета, нужно указать среди параметров ДанныеРасшифровки :
390 14 Всеволод Дорофеев
391 14 Всеволод Дорофеев
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
392 14 Всеволод Дорофеев
НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();
393 14 Всеволод Дорофеев
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
394 14 Всеволод Дорофеев
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД,ДанныеРасшифровки);
395 14 Всеволод Дорофеев
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
396 14 Всеволод Дорофеев
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровки, Истина);
397 14 Всеволод Дорофеев
398 14 Всеволод Дорофеев
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
399 14 Всеволод Дорофеев
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
400 14 Всеволод Дорофеев
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
401 17 Всеволод Дорофеев
</pre>
402 17 Всеволод Дорофеев
403 17 Всеволод Дорофеев
h3. Восстановление настроек СКД
404 17 Всеволод Дорофеев
405 17 Всеволод Дорофеев
https://infostart.ru/1c/articles/1224243/
406 17 Всеволод Дорофеев
407 17 Всеволод Дорофеев
<pre>
408 17 Всеволод Дорофеев
КомпоновщикНастроек.Восстановить()
409 14 Всеволод Дорофеев
</pre>