Публикации

БСП
Разработки

Найдено публикаций: 22

acsent 82 15

Открыть отчет с пользовательскими настройками

acsent 82 15
    Настройки = Новый НастройкиКомпоновкиДанных;
    Элемент = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товар");
    Элемент.ИдентификаторПользовательскойНастройки = "Идентификатор";
    
    ПараметрыФормы = Новый Структура("Вариант", Настройки);
    ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма", ПараметрыФормы);

Поиск по ГУИД в COM

acsent 82 15
Функция НайтиСсылкуНаСправочникПоУИД(СсылкаВБазе, ИмяСправочника, Соединение)
	
	Если НЕ ЗначениеЗаполнено(СсылкаВБазе) Тогда
		Возврат Соединение.Справочники[ИмяСправочника].ПустаяСсылка();
	КонецЕсли;	
	
	УИДСтрокой = Строка(СсылкаВБазе.УникальныйИдентификатор());
	УИД = Соединение.NewObject("УникальныйИдентификатор", УИДСтрокой);
	
	СсылкаНаСправочник = Соединение.Справочники[ИмяСправочника].ПолучитьСсылку(УИД);
	Если Соединение.ОбщегоНазначения.СсылкаСуществует(СсылкаНаСправочник) = Ложь тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Возврат СсылкаНаСправочник; 
	
КонецФункции

Получить ссылку по типу и гуид

acsent 82 15
Тип = Тип(ПоследняяОткрытаяСтрока.ТипЗначенияXML);
УИД = Новый УникальныйИдентификатор(ПоследняяОткрытаяСтрока.ЗначениеXML);
Массив = Новый Массив;
Массив.Добавить(УИД);
Значение = Новый (Тип, Массив);

Добавить отбор в списке, в пользовательских настройках

acsent 82 15
Процедура УстановитьПользовательскийОтбор(КомпоновщикНастроек, Поле, ВидСравнения, Значение) Экспорт
	
	// Сначала найдем выделенный элемент отбора
	Для каждого ЭлементНастроек из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
		
		Если ТипЗнч(ЭлементНастроек) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
			
			ТекПоле = "";
			Для каждого ЭлементОтбора из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
				
				Если ЭлементНастроек.ИдентификаторПользовательскойНастройки = ЭлементОтбора.ИдентификаторПользовательскойНастройки Тогда
					ТекПоле = ЭлементОтбора.ЛевоеЗначение;
					Прервать;
				КонецЕсли;	
				
			КонецЦикла;
			
			Если Строка(ТекПоле) = Поле Тогда
				ЭлементНастроек.ВидСравнения   = ВидСравнения;
				ЭлементНастроек.ПравоеЗначение = Значение;
				ЭлементНастроек.Использование  = Истина;
				Возврат;
			КонецЕсли;	
			
		КонецЕсли;	
		
	КонецЦикла;
	
	// Найдем отбор
	Для каждого ЭлементНастроек из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
		
		Если ТипЗнч(ЭлементНастроек) = Тип("ОтборКомпоновкиДанных") Тогда
			
			ТекОтборП = ТиповыеОтчеты_УправляемыйРежим.УстановитьОтбор(ЭлементНастроек, Поле, ВидСравнения, Значение);
			Прервать;
			
		КонецЕсли;	
		
	КонецЦикла;
	
КонецПроцедуры

Изменение формы справочника в зависимости от папки

acsent 82 15
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
	
	Если ВидФормы = "ФормаОбъекта" Тогда
		
		Если Параметры.Свойство("Ключ") 
			И ОбщегоНазначенияСервер.ВходитВИерархию(Параметры.Ключ, Справочники.Проекты.ИнвестиционныеПроекты) Тогда
			
			СтандартнаяОбработка = Ложь;
			ВыбраннаяФорма       = "ФормаЭлементаУправляемая";
			
		ИначеЕсли Параметры.Свойство("ЗначенияЗаполнения")
			И Параметры.ЗначенияЗаполнения.Свойство("Родитель")
			И ОбщегоНазначенияСервер.ВходитВИерархию(Параметры.ЗначенияЗаполнения.Родитель, Справочники.Проекты.ИнвестиционныеПроекты) Тогда
			
			СтандартнаяОбработка = Ложь;
			ВыбраннаяФорма       = "ФормаЭлементаУправляемая";
			
		ИначеЕсли Параметры.Свойство("ЗначениеКопирования")
			И ОбщегоНазначенияСервер.ВходитВИерархию(Параметры.ЗначениеКопирования.Родитель, Справочники.Проекты.ИнвестиционныеПроекты) Тогда
			
			СтандартнаяОбработка = Ложь;
			ВыбраннаяФорма       = "ФормаЭлементаУправляемая";
			
		КонецЕсли;	
		
	КонецЕсли;
	
КонецПроцедуры

Запрет выгрузки в КД по дате запрета редактирования

ПередКонвертациейОбъекта, глобальное событие
acsent 82 15
// Выгружаем документы только по списку организаций.
МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(Источник));
Если МетаданныеОбъекта <> Неопределено
	И Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
	
	Если МетаданныеОбъекта.Реквизиты.Найти("Организация") <> Неопределено Тогда	 
		
		ДатаЗапретаРедактирования = Параметры.ДатыЗапретаРедактирования[Источник.Организация.Код];
		Если ЗначениеЗаполнено(ДатаЗапретаРедактирования) Тогда
			
			Если Источник.Дата <= ДатаЗапретаРедактирования Тогда
				НеЗамещатьОбъектПриЗагрузке = Истина;
				ТолькоПолучитьУзелСсылки    = Истина;
			КонецЕсли;	
			
		КонецЕсли;	
		
	КонецЕсли;
	
КонецЕсли;

Значение полей в расшифровке СКД

Значение полей в расшифровке СКД
acsent 82 15
&НаСервереБезКонтекста 
Функция ПолучитьЗначениеПоляРасшифровкиНаСервере(ИдентификаторРасшифровки, АдресДанныхРасшифровки)
	
    ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресДанныхРасшифровки);
	ЭлементРасшифровки = ДанныеРасшифровки.Элементы[ИдентификаторРасшифровки];
	
	МассивРодителей = Новый Массив;
	МассивРодителей.Добавить(ЭлементРасшифровки.ПолучитьПоля());
	
	Родители = ЭлементРасшифровки.ПолучитьРодителей();
	ЗаполнитьМассивРодителей(МассивРодителей, Родители);
	
	Результат = Новый Соответствие;
	Для Счетчик = 1 по МассивРодителей.Количество() Цикл 
		
		// Обойдем в обратном порядке, чтобы поставить условия в порядке группировок			
		ПоляКомпоновки = МассивРодителей[МассивРодителей.Количество() - Счетчик];
		Для каждого ПолеКомпоновки из ПоляКомпоновки Цикл
			
			//Если ПолеКомпоновки.Иерархия Тогда
			//	Продолжить;
			//КонецЕсли;	
			
			Результат.Вставить(ПолеКомпоновки.Поле, ПолеКомпоновки.Значение);
			
		КонецЦикла;	
		
	КонецЦикла;	
	
	Возврат Результат;
	
КонецФункции

&НаСервереБезКонтекста 
Процедура ЗаполнитьМассивРодителей(МассивРодителей, Родители)
	
	Для каждого Родитель из Родители Цикл
		
		Если ТипЗнч(Родитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
			МассивРодителей.Добавить(Родитель.ПолучитьПоля());
			
		ИначеЕсли ТипЗнч(Родитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда
			
		КонецЕсли;	
		
		Родители = Родитель.ПолучитьРодителей();
		Если Родители.Количество() > 0 Тогда
			ЗаполнитьМассивРодителей(МассивРодителей, Родители);
		КонецЕсли;	
		
	КонецЦикла;	

КонецПроцедуры	

Программное создание схемы СКД

Пример программного создания схемы СКД
acsent 82 15
Функция СоздатьСхемуКомпоновки() Экспорт
	
	СхемаСКД = Новый СхемаКомпоновкиДанных;
	ИсточникДанных = СхемаСКД.ИсточникиДанных.Добавить();
	ИсточникДанных.Имя                = "ИсточникДанных";
	ИсточникДанных.ТипИсточникаДанных = "local";
	
	НаборДанных = СхемаСКД.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
	НаборДанных.Имя        = "Данные";
	НаборДанных.ИмяОбъекта = "Данные";
	НаборДанных.ИсточникДанных = "ИсточникДанных";
	
	Настройки   = СхемаСКД.НастройкиПоУмолчанию;
	
	Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
	Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	Параметр = СхемаСКД.Параметры.Добавить();
	Параметр.Имя         = "Период";
	Параметр.ТипЗначения = Новый ОписаниеТипов("СтандартныйПериод");
	
	Для каждого СтрокаТЗ из Поля Цикл
		
		ТипЗначения = ЗначениеИзСтрокиВнутр(СтрокаТЗ.ТипЗначения);
		
		Если СтрокаТЗ.Ресурс Тогда
			
			Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
			Поле.Поле        = СтрокаТЗ.Имя + "Тек";
			Поле.ТипЗначения = ТипЗначения;
			Поле.Заголовок   = Представление(СтрокаТЗ) + " (тек)";
			Поле.ПутьКДанным = СтрокаТЗ.Имя + "Тек";
			
			Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
			Поле.Поле        = СтрокаТЗ.Имя + "Др";
			Поле.ТипЗначения = ТипЗначения;
			Поле.Заголовок   = Представление(СтрокаТЗ) + " (др)";
			Поле.ПутьКДанным = СтрокаТЗ.Имя + "Др";
			
			ВычисляемоеПоле = СхемаСКД.ВычисляемыеПоля.Добавить();
			ВычисляемоеПоле.ПутьКДанным = "Разница" + СтрокаТЗ.Имя;
			ВычисляемоеПоле.Выражение   = "ЕстьNULL(" + СтрокаТЗ.Имя + "Тек, 0) - ЕстьNULL(" + СтрокаТЗ.Имя + "Др, 0)";
			ВычисляемоеПоле.ТипЗначения = ТипЗначения;
			ВычисляемоеПоле.Заголовок   = "Разница (" + Представление(СтрокаТЗ) + ")";
			
			ПолеИтога = СхемаСКД.ПоляИтога.Добавить();
			ПолеИтога.ПутьКДанным = СтрокаТЗ.Имя + "Тек";
			ПолеИтога.Выражение   = "Сумма(" + СтрокаТЗ.Имя + "Тек)";
			
			ПолеИтога = СхемаСКД.ПоляИтога.Добавить();
			ПолеИтога.ПутьКДанным = СтрокаТЗ.Имя + "Др";
			ПолеИтога.Выражение   = "Сумма(" + СтрокаТЗ.Имя + "Др)";
			
			ПолеИтога = СхемаСКД.ПоляИтога.Добавить();
			ПолеИтога.ПутьКДанным = "Разница" + СтрокаТЗ.Имя;
			ПолеИтога.Выражение   = "Сумма(Разница" + СтрокаТЗ.Имя + ")";
			
			Группа = Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
			Группа.Расположение  = РасположениеПоляКомпоновкиДанных.Горизонтально;
			Группа.Заголовок     = Представление(СтрокаТЗ);
			Группа.Использование = Истина;
			
			ВыбранноеПоле = Группа.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
			ВыбранноеПоле.Поле          = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя + "Тек");
			ВыбранноеПоле.Заголовок     = "Текущая";
			ВыбранноеПоле.Использование = Истина;
			
			ВыбранноеПоле = Группа.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
			ВыбранноеПоле.Поле          = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя + "Др");
			ВыбранноеПоле.Заголовок     = "Другая";
			ВыбранноеПоле.Использование = Истина;
			
			ЭлементОформления = Настройки.УсловноеОформление.Элементы.Добавить();
			ЭлементОформления.Использование = Истина;
			УстановитьОформления(ЭлементОформления.Оформление);
			
			ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
			ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Разница" + СтрокаТЗ.Имя);
			ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.НеРавно;
			ЭлементОтбора.ПравоеЗначение = 0;
			ЭлементОтбора.Использование  = Истина;
			
			ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
			ПолеОформления.Использование = Истина;
			ПолеОформления.Поле          = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя + "Тек");
			
			ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
			ПолеОформления.Использование = Истина;
			ПолеОформления.Поле          = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя + "Др");
			
		Иначе	
			
			Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
			Поле.Поле        = СтрокаТЗ.Имя;
			Поле.Заголовок   = Представление(СтрокаТЗ);
			Поле.ПутьКДанным = СтрокаТЗ.Имя;
			Поле.ТипЗначения = ТипЗначения;
			
			ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
			ВыбранноеПоле.Поле          = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя);
			ВыбранноеПоле.Использование = Истина;
			
		КонецЕсли;	
		
	КонецЦикла;	
	
	Возврат СхемаСКД;
	
КонецФункции

Проверка существание ссылки в базе

Проверка существование ссылки в базе, объект не найден типовая функция БСП
acsent 82 15
Функция СсылкаСуществует(ЛюбаяСсылка) Экспорт
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	Ссылка КАК Ссылка
	|ИЗ
	|	[ИмяТаблицы]
	|ГДЕ
	|	Ссылка = &Ссылка
	|";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяТаблицы]", ЛюбаяСсылка.Метаданные().ПолноеИмя());
	
	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Ссылка", ЛюбаяСсылка);
	
	УстановитьПривилегированныйРежим(Истина);
	
	Возврат НЕ Запрос.Выполнить().Пустой();
	
КонецФункции

Изменение событий в отборе СКД

Изменение событий в отборе СКД (обычные формы)
acsent 82 15
ЭлементыФормы.Отбор.Колонки.ПравоеЗначениеДляКраткогоОтображенияЭлемента.ЭлементУправления.УстановитьДействие("НачалоВыбора", Новый Действие("ОтборНачалоВыбора"));

Процедура ОтборНачалоВыбора(Элемент, СтандартнаяОбработка)
	
	ТекущиеДанные = ЭлементыФормы.Отбор.ТекущиеДанные;
	Если Строка(ТекущиеДанные.ЛевоеЗначение) = "Родитель" Тогда
		
		СтандартнаяОбработка = Ложь;
		Форма = Справочники.Номенклатура.ПолучитьФормуВыбораГруппы(, Элемент);
		Форма.Открыть();
		
	КонецЕсли;	
	
КонецПроцедуры	

Преобразование строки в число

Преобразование строки в число без выбрасывания исключений при получении числа в виде строи из внешних источников
acsent 82 15
Функция вЧисло(Знач Парам)
	
	Парам = СтрЗаменить(Парам, Символы.НПП, "");
	Парам = СтрЗаменить(Парам, " ", "");
	Парам = СтрЗаменить(Парам, ",", ".");
	
	Попытка
		Возврат Число(Парам);
	Исключение
		Возврат 0;
	КонецПопытки;	
	
КонецФункции

Чтение файла XML в объект XDTO по схеме *.xsd

Чтение файла XML в объект XDTO по схеме *.xsd с преобразованием типов согласно схеме
acsent 82 15
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл(ИмяФайла);

Фабрика = СоздатьФабрикуXDTO(ИмяФайлаСхемы); //*.xsd
ОбъектXDTO = Фабрика.ПрочитатьXML(ЧтениеXML);

ЧтениеXML.Закрыть();

Перенести отбор СКД

Перенести отбор СКД из одного компоновщика в другой
acsent 82 15
Процедура ПеренестиОтбор(ОтборПриемник, ОтборИсточник)
	
	Для каждого ЭлементИсточник Из ОтборИсточник.Элементы Цикл
		
		Если ТипЗнч(ЭлементИсточник) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
			
			Если ТипЗнч(ЭлементИсточник.ЛевоеЗначение) = Тип("ПолеКомпоновкиДанных") Тогда
			
				Если ОтборПриемник.ДоступныеПоляОтбора.НайтиПоле(ЭлементИсточник.ЛевоеЗначение) = Неопределено Тогда
					Продолжить;
				КонецЕсли;	
			
			КонецЕсли;
		
		КонецЕсли;	
		
		ЭлементПриемник = ОтборПриемник.Элементы.Добавить(ТипЗнч(ЭлементИсточник));
		ЗаполнитьЗначенияСвойств(ЭлементПриемник, ЭлементИсточник);
		
		Если ТипЗнч(ЭлементИсточник) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
			ПеренестиОтбор(ЭлементПриемник, ЭлементИсточник);
		КонецЕсли;	
		
	КонецЦикла;	
	
КонецПроцедуры

Дата создания ссылки

Получение даты и времени по ГУИДу ссылки
acsent 82 15
Функция ДатаСозданияСсылки(Ссылка) Экспорт
	
	Если НЕ ЗначениеЗаполнено(Ссылка) Тогда
		Возврат Неопределено;
	КонецЕсли;	
		
	Момент = Дата(1, 1, 1);
	Попытка
		
        УИ = Строка(Ссылка.УникальныйИдентификатор());
        УИ = ВРег(СтрЗаменить(УИ,"-",""));
		
		Если Сред(УИ, 13, 1) = "1" Тогда
			
            Значение16 = ВРег(Сред(УИ, 14, 3) + Сред(УИ, 9, 4) + Сред(УИ, 1, 8));
            Цифры16    = "123456789ABCDEF";
            Значение10 = 0;
            Длина16    = СтрДлина(Значение16);
			
			Для Ном = 1 По Длина16 Цикл
                Значение10 = Значение10 + Pow(16, Длина16-Ном)*Найти(Цифры16, Сред(Значение16, Ном, 1));
			КонецЦикла;
			
            Значение10 = Значение10/10000000;
            Момент     = Дата(1582, 10, 15, 3, 0, 0) + Значение10;
			
		КонецЕсли;
		
    Исключение
    КонецПопытки;
	
	Возврат Момент;
		
КонецФункции

Кнопки управления группировками

Кнопки управления группировками, отчет
acsent 82 15
Процедура СгенерироватьКнопкиУправленияГруппировкой(ЭлементТабПоле, Панель)

//	ЭлементТабПоле = ЭлементыФормы.ТабДопИнформация;
	
    НачалоВерх = ЭлементТабПоле.Верх + 3; // Привязка к верхнему левому углу ПоляТабличногоДокумента
    НачалоЛево = ЭлементТабПоле.Лево + 3; // Привязка к верхнему левому углу ПоляТабличногоДокумента

	Имя = ЭлементТабПоле.Имя;
	
    ШагКнопок      		= 13;
    ПрефиксИмениКн 		= "КнГрГор_" + Имя + "_";
	ПрефиксИмениКнВерт 	= "КнГрВерт_" + Имя + "_";

    // Удалить старые кнопки
    Сч = 0;
    Пока Сч < ЭлементыФормы.Количество() Цикл
        ТекЭлемент = ЭлементыФормы.Получить(Сч);
		Если (Найти(ТекЭлемент.Имя, ПрефиксИмениКн) > 0) ИЛИ
			 (Найти(ТекЭлемент.Имя, ПрефиксИмениКнВерт) > 0) Тогда
            ЭлементыФормы.Удалить(ТекЭлемент);
        Иначе
            Сч = Сч + 1;
        КонецЕсли;
    КонецЦикла;

    // Добавть новые кнопки по количеству группировок
    КоличествоГруппировок = ЭлементТабПоле.КоличествоУровнейГруппировокСтрок();
    Для Сч = 1 По КоличествоГруппировок Цикл
        НоваяКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), ПрефиксИмениКн + Сч, , Панель);
        НоваяКнопка.Верх      = НачалоВерх;
        НоваяКнопка.Лево      = НачалоЛево + (ШагКнопок * (Сч - 1));
        НоваяКнопка.Высота    = 11;
        НоваяКнопка.Ширина    = 11;
        НоваяКнопка.Шрифт     = Новый Шрифт("Шрифт диалогов и меню", 6);
        НоваяКнопка.Заголовок = "" + Сч;
        НоваяКнопка.УстановитьДействие("Нажатие", Новый Действие("СвернутьДоУровня"));
	КонецЦикла;
	
	НачалоЛево = НачалоЛево + Сч * ШагКнопок + 3;
	// Добавть новые кнопки по количеству группировок
    КоличествоГруппировок = ЭлементТабПоле.КоличествоУровнейГруппировокКолонок();
    Для Сч = 1 По КоличествоГруппировок Цикл
        НоваяКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), ПрефиксИмениКнВерт + Сч, , Панель);
        НоваяКнопка.Верх      = НачалоВерх + (ШагКнопок * (Сч - 1));
        НоваяКнопка.Лево      = НачалоЛево;
        НоваяКнопка.Высота    = 11;
        НоваяКнопка.Ширина    = 11;
        НоваяКнопка.Шрифт     = Новый Шрифт("Шрифт диалогов и меню", 6);
        НоваяКнопка.Заголовок = "" + Сч;
        НоваяКнопка.УстановитьДействие("Нажатие", Новый Действие("СвернутьДоУровняКолонки"));
    КонецЦикла;

КонецПроцедуры //СгенерироватьКнопкиУправленияГруппировкой()

Процедура СвернутьДоУровня(Элемент)

    Уровень = Число(Элемент.Заголовок); // здесь записан нужный уровень
	
	Имя = СтрЗаменить(Элемент.Имя, "_", Символы.ПС);
	Имя = СтрПолучитьСтроку(Имя, 2);
	
    ЭлементыФормы[Имя].ПоказатьУровеньГруппировокСтрок(Уровень - 1);

КонецПроцедуры //СвернутьДоУровня()

Процедура СвернутьДоУровняКолонки(Элемент)

    Уровень = Число(Элемент.Заголовок); // здесь записан нужный уровень
	
	Имя = СтрЗаменить(Элемент.Имя, "_", Символы.ПС);
	Имя = СтрПолучитьСтроку(Имя, 2);
	
    ЭлементыФормы[Имя].ПоказатьУровеньГруппировокКолонок(Уровень - 1);

КонецПроцедуры //СвернутьДоУровня()

Чтение файла XML в объект XDTO

Чтение файла XML в объект XDTO
acsent 82 15
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
	
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
	
ЧтениеXML.Закрыть();
	

Вывод данных СКД в таблицу значений (дерево)

Вывод данных СКД в таблицу значений (дерево)
acsent 82 15
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
	
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Таблица = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);

Вывод данных СКД в табличный документ

Вывод данных СКД в табличный документ
acsent 82 15
	ВнешниеНаборыДанных = Новый Структура;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
		
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
		
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
		
	ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);

Инициализация компоновщика настроек, упр формы

Инициализация компоновщика настроек, упр формы, обработка, СКД
acsent 82 15
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СхемаСКД = ОбработкаОбъект.ПолучитьМакет("СхемаСКД");
	
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаСКД, УникальныйИдентификатор);
ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы);
	
КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию);

Инициализация компоновщика настроек

Инициализация компоновщика настроек, обработка. СКД
acsent 82 15
СхемаСКД = ПолучитьМакет("СхемаСКД");
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаСКД));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию);