Проект

Общее

Профиль

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

Всеволод Дорофеев, 26.05.2023 12:40

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>
408 19 Всеволод Дорофеев
409 19 Всеволод Дорофеев
410 19 Всеволод Дорофеев
h3. Как вывести поле между ресурсами, как вывести реквизиты в произвольной позиции.
411 19 Всеволод Дорофеев
 
412 19 Всеволод Дорофеев
Настройки отчета - другие настройки - последняя настройка Авто позиция ресурсов (не использовать) -- будет использован порядок полей в выбранных.