Проект

Общее

Профиль

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

Всеволод Дорофеев, 23.04.2021 14:08

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