Проект

Общее

Профиль

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

Всеволод Дорофеев, 23.04.2021 12:58

1 1 Всеволод Дорофеев
h1. Система компоновки данных (СКД)
2 1 Всеволод Дорофеев
3 1 Всеволод Дорофеев
h3. Программное выполнение СКД с выводом в таблицу значений
4 1 Всеволод Дорофеев
5 1 Всеволод Дорофеев
<pre>
6 1 Всеволод Дорофеев
&НаСервере
7 1 Всеволод Дорофеев
Процедура ПеренестиНоменклатуруСервере()
8 1 Всеволод Дорофеев
	ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
9 1 Всеволод Дорофеев
	СхемаНоменклатуры = ОбъектНаСервере.ПолучитьМакет("СКД");          
10 1 Всеволод Дорофеев
11 2 Всеволод Дорофеев
	//СКД. Программная установка параметров в управляемой форме отчета
12 2 Всеволод Дорофеев
    ПараметрДанных = КомпоновщикНаФорме.Настройки.ПараметрыДанных.Элементы.Найти("ГруппаНоменклатуры");
13 1 Всеволод Дорофеев
	ПараметрДанных.Использование = Истина;
14 1 Всеволод Дорофеев
	ПараметрДанных.Значение  = Объект.ПапкаАрхив;  
15 1 Всеволод Дорофеев
	
16 1 Всеволод Дорофеев
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
17 1 Всеволод Дорофеев
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаНоменклатуры, КомпоновщикНаФорме.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
18 1 Всеволод Дорофеев
                               
19 1 Всеволод Дорофеев
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
20 1 Всеволод Дорофеев
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,, Истина);
21 1 Всеволод Дорофеев
	
22 1 Всеволод Дорофеев
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
23 1 Всеволод Дорофеев
                               
24 1 Всеволод Дорофеев
    ТЗНоменклатура = Новый ТаблицаЗначений;
25 1 Всеволод Дорофеев
    ПроцессорВывода.УстановитьОбъект(ТЗНоменклатура);
26 1 Всеволод Дорофеев
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
27 1 Всеволод Дорофеев
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
28 1 Всеволод Дорофеев
	
29 1 Всеволод Дорофеев
	Для каждого СтрокаТЗ из ТЗНоменклатура Цикл
30 1 Всеволод Дорофеев
		ОбработкаОбъект.ПеренестиНоменклатурнуюПозициюВПапкуНаСервере(СтрокаТЗ);
31 1 Всеволод Дорофеев
	КонецЦикла;
32 1 Всеволод Дорофеев
	
33 1 Всеволод Дорофеев
КонецПроцедуры
34 1 Всеволод Дорофеев
</pre>
35 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 12 Всеволод Дорофеев
h3. Функция СКД СоединитьСтроки 
282 12 Всеволод Дорофеев
283 12 Всеволод Дорофеев
https://1centerprise8.blogspot.com/2015/12/vyvod-tch-v-ja-chejku.html
284 12 Всеволод Дорофеев
<pre>
285 12 Всеволод Дорофеев
286 12 Всеволод Дорофеев
СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок) - предназначена для объединения строк в одну строку.
287 12 Всеволод Дорофеев
288 12 Всеволод Дорофеев
    Значение - выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы;
289 12 Всеволод Дорофеев
    РазделительЭлементов - строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
290 12 Всеволод Дорофеев
    РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию "; ".
291 12 Всеволод Дорофеев
292 12 Всеволод Дорофеев
Массив([Различные] Выражение) - в качестве параметра можно использовать таблицу значений. При этом результатом работы функции будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра. Если выражение содержит функцию Массив, то считается, что данное выражение является агрегатным. Если указано ключевое слово Различные, то получаемый массив не будет содержать дублирующихся значений.
293 12 Всеволод Дорофеев
</pre>
294 13 Всеволод Дорофеев
295 13 Всеволод Дорофеев
h3. Использовение нескольких СКД
296 13 Всеволод Дорофеев
297 13 Всеволод Дорофеев
https://1centerprise8.blogspot.com/2015/06/ispolzovanie-neskolkih-skd.html
298 13 Всеволод Дорофеев
299 13 Всеволод Дорофеев
Выбор макета при компоновке
300 13 Всеволод Дорофеев
301 13 Всеволод Дорофеев
<pre>
302 13 Всеволод Дорофеев
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
303 13 Всеволод Дорофеев
 
304 13 Всеволод Дорофеев
 // Получаем необходимую СКД.
305 13 Всеволод Дорофеев
 НеобходимаяСКД = Неопределено;
306 13 Всеволод Дорофеев
 Если ЭтотОбъект.НомерСКД = 1 Тогда
307 13 Всеволод Дорофеев
  НеобходимаяСКД = ЭтотОбъект.ПолучитьМакет("МакетНомерОдин");
308 13 Всеволод Дорофеев
 ИначеЕсли ЭтотОбъект.НомерСКД = 2 Тогда
309 13 Всеволод Дорофеев
  НеобходимаяСКД = ЭтотОбъект.ПолучитьМакет("МакетНомерДва");
310 13 Всеволод Дорофеев
 КонецЕсли;
311 13 Всеволод Дорофеев
 
312 13 Всеволод Дорофеев
 // Устанавливаем выбранную СКД как основную.
313 13 Всеволод Дорофеев
 ЭтотОбъект.СхемаКомпоновкиДанных = НеобходимаяСКД;
314 13 Всеволод Дорофеев
 
315 13 Всеволод Дорофеев
 // Загружаем настройки выбранной СКД в компоновщик настроек.
316 13 Всеволод Дорофеев
 ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(НеобходимаяСКД);
317 13 Всеволод Дорофеев
318 13 Всеволод Дорофеев
 ЭтотОбъект.КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);
319 13 Всеволод Дорофеев
 ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НеобходимаяСКД.НастройкиПоУмолчанию);
320 13 Всеволод Дорофеев
 
321 13 Всеволод Дорофеев
 // Устанавливаем настройки.
322 13 Всеволод Дорофеев
 ПараметрыДанных = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных;
323 13 Всеволод Дорофеев
 ПараметрВидЛица = Новый ПараметрКомпоновкиДанных("ЮрФизЛицо");
324 13 Всеволод Дорофеев
 ЗначениеВидЛица = ПараметрыДанных.НайтиЗначениеПараметра(ПараметрВидЛица);
325 13 Всеволод Дорофеев
 Если ЗначениеВидЛица <> Неопределено Тогда
326 13 Всеволод Дорофеев
  ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрВидЛица, ЭтотОбъект.ВидЛица);
327 13 Всеволод Дорофеев
 КонецЕсли;
328 13 Всеволод Дорофеев
 ПараметрыДанных = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных;
329 13 Всеволод Дорофеев
 ПараметрТолькоНаОснСкладе = Новый ПараметрКомпоновкиДанных("НаОсновномСкладе");
330 13 Всеволод Дорофеев
 ЗначениеТолькоНаОснСкладе = ПараметрыДанных.НайтиЗначениеПараметра(ПараметрТолькоНаОснСкладе);
331 13 Всеволод Дорофеев
 Если ЗначениеТолькоНаОснСкладе <> Неопределено Тогда
332 13 Всеволод Дорофеев
  ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрТолькоНаОснСкладе, ЭтотОбъект.ТолькоНаОсновномСкладе);
333 13 Всеволод Дорофеев
 КонецЕсли;
334 13 Всеволод Дорофеев
 
335 13 Всеволод Дорофеев
КонецПроцедуры
336 13 Всеволод Дорофеев
</pre>