Публикации

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

Найдено результатов: 22


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

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

ПередЗагрузкойНастроекВКомпоновщик

ОбщийМодуль.ОтчетыКлиентСервер
Автор: 1С
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт
//               	// Обработка события.
//               КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

Инициализирует компоновщик настроек компоновки данных, с обработкой исключения.
ОбщийМодуль.ОтчетыСервер
Автор: 1С
// Инициализирует компоновщик настроек компоновки данных, с обработкой исключения.
//
// Параметры:
//  КомпоновщикНастроек - КомпоновщикНастроекКомпоновкиДанных - компоновщик настроек, который необходимо инициализировать.
//  Схема - СхемаКомпоновкиДанных, URL - см. синтакс-помощник: ИсточникДоступныхНастроекКомпоновкиДанных.
//  Отчет - ОтчетОбъект, Неопределено - отчет, чей компоновщик инициализируется.
//  ВариантОтчета - СправочникСсылка.ВариантыОтчета, Неопределено - хранилище варианта отчета.
//
Процедура ИнициализироватьКомпоновщикНастроек(КомпоновщикНастроек, Схема, Отчет = Неопределено, ВариантОтчета = Неопределено) Экспорт 
	Попытка
		КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
	Исключение
		ИмяСобытия = НСтр("ru = 'Ошибка инициализации компоновщика настроек компоновки данных.'",
			ОбщегоНазначения.КодОсновногоЯзыка());
		
		ОбъектМетаданных = Неопределено;
		Если Отчет <> Неопределено Тогда 
			ОбъектМетаданных = Отчет.Метаданные();
		ИначеЕсли ВариантОтчета <> Неопределено Тогда 
			ОбъектМетаданных = ВариантОтчета.Метаданные();
		КонецЕсли;
		
		Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
		
		ЗаписьЖурналаРегистрации(
			ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, ОбъектМетаданных, ВариантОтчета, Комментарий);
		
		ВызватьИсключение;
	КонецПопытки;
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

РасширеннаяИнформацияОНастройках

Возвращает информацию о настройках компоновщика.
ОбщийМодуль.ОтчетыСервер
Автор: 1С
// Возвращает информацию о настройках компоновщика.
//  После завершения работы с настройками следует вызвать ОчиститьРасширеннуюИнформациюОНастройках
//  для очистки от цикличных ссылок для корректного освобождение памяти.
//
// Вызовы (6):
//  1. ОбщийМодуль.ВариантыОтчетов.УменьшитьКоличествоБыстрыхНастроек()
//     * Используется только свойство ПользовательскиеНастройки;
//     * Является параметром вызываемого метода ОтчетыСервер.ОчиститьРасширеннуюИнформациюОНастройках().
//  2. ХранилищеНастроек.ХранилищеВариантовОтчетов.Форма.УсловияОтборовОтчета.ПриСозданииНаСервере()
//     * Используется только свойство ПользовательскиеНастройки;
//     * Является параметром вызываемого метода ОтчетыСервер.ОчиститьРасширеннуюИнформациюОНастройках().
//  3. ОбщаяФорма.ФормаНастроекОтчета:
//    3.1. БыстрыеНастройкиЗаполнить()
//         * Используется наиболее полно.
//    3.2. ОчиститьНастройкиОтНесуществующихПолейНаСервере()
//         * Используются свойства: ДеревоВарианта, НастройкиВарианта.
//  4. ОбщаяФорма.ФормаОтчета.БыстрыеНастройкиЗаполнить()
//     * Используются свойства: СоответствиеИменОбъектовМетаданных, Связи, ПользовательскиеНастройки.
//  5. Отчет.БыстрыеНастройкиОтчетов.МодульОбъекта.ПроанализироватьПользовательскиеНастройки()
//     * Используется только свойство ПользовательскиеНастройки;
//
// Параметры:
//  КомпоновщикНастроекКД - КомпоновщикНастроекКомпоновкиДанных - Отчет.КомпоновщикНастроек.
//                          Свойство отчета.
//  НастройкиОтчета - Структура - см. ВариантыОтчетов.НастройкиФормыОтчета().
//                    Содержит свойства отчета. Хранится в реквизите формы (отчета, настроек).
//  ОтчетОбъектИлиПолноеИмя - ОтчетОбъект, Строка - объект компонуемого отчета или его полное имя метаданных.
//  УсловияВывода - Структура, Неопределено - дополнительные признаки:
//                  * ТолькоПользовательские - Булево.
//                  * ТолькоБыстрые - Булево.
//                  * ИдентификаторТекущегоУзлаКД - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор текущей настройки.
//
// Возвращаемое значение:
//   Структура - содержит:
//               * ТолькоПользовательские - Булево.
//               * ТолькоБыстрые - Булево.
//               * ИдентификаторТекущегоУзлаКД - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор текущей настройки.
//               * НастройкиКД - НастройкиКомпоновкиДанных - см. Синтакс-помощник: КомпоновщикНастроекКомпоновкиДанных.Настройки.
//               * НастройкиОтчета - Структура - см. ВариантыОтчетов.НастройкиФормыОтчета().
//               * ОтчетОбъектИлиПолноеИмя - ОтчетОбъект, Строка - объект компонуемого отчета или его полное имя метаданных.
//               * ДеревоВарианта - ДеревоЗначений - см. ОтчетыСервер.ДеревоВарианта().
//                                  Хранит свойства и признаки настройки компоновки данных и всей иерархии ее структуры.
//               * НастройкиВарианта - ДеревоЗначений - см. ОтчетыСервер.ТаблицаНастроекВарианта().
//                                     Хранит ссылку на каждую строку раннее инициализированного дерева ДеревоВарианта,
//                                     а также свойства и признаки соответствующих коллекций настроек: Отбор, Порядок и т.д.
//               * ПользовательскиеНастройки - ТаблицыЗначений - см. ОтчетыСервер.ТаблицаПользовательскихНастроек().
//                                             Хранит ссылку на каждую строку раннее инициализированного дерева
//                                             ДеревоВарианта, а также свойства и признаки по каждой из пользовательских
//                                             настроек.
//               * ОтключаемыеСвязи - Массив:
//                                    * ПоТипу - ТаблицыЗначений - см. ОтчетыСервер.ТаблицаСвязейПоТипу().
//                                               Хранит ссылку на строку дерева раннее инициализированного свойства ДеревоВарианта,
//                                               а также значения свойств параметра редактирования СвязьПоТипу
//                                               доступных полей отбора и параметров данных настроек компоновки данных.
//                                    * ПараметровВыбора - ТаблицыЗначений - см. ОтчетыСервер.ТаблицаСвязейПараметровВыбора().
//                                                         Хранит ссылку на строку дерева раннее инициализированного
//                                                         свойства ДеревоВарианта, а также значения свойств параметра
//                                                         редактирования СвязиПараметровВыбора доступных полей отбора и
//                                                         параметров данных настроек компоновки данных.
//                                    * ОбъектовМетаданных - ТаблицыЗначений - см. ОтчетыСервер.ТаблицаСвязейОбъектовМетаданных().
//               * ДополнительныеНастройкиЭлементов - Соответствие - хранится в КомпоновщикНастроекКомпоновкиДанных.ПользовательскиеНастройки.ДополнительныеСвойства,
//                                                    по ключу ЭлементыФормы:
//                                                    * Ключ - Строка - производная от универсального идентификатора
//                                                             пользовательской настройки - составная часть элемента
//                                                             управления, ссылающегося на пользовательскую настройку.
//                                                    * Значение - Структура - свойства пользовательских настроек.
//               * СоответствиеИменОбъектовМетаданных - Соответствие - содержит:
//                                                      * Ключ - Тип - ссылочный тип.
//                                                      * Значение - Строка - полное имя объекта метаданных
//                                                                            соответствующего текущему ключу.
//               * Поиск - Структура - содержит:
//                         * НастройкиВариантаПоПолюКД - Соответствие:
//                                                       * Ключ - ПолеКомпоновкиДанных.
//                                                       * Значение - СтрокаДереваЗначений - ссылка на строку дерева
//                                                           раннее инициализированного свойства ДеревоВарианта.
//                         * ПользовательскиеНастройки - Соответствие.
//                                                       * Ключ - Строка - производная от универсального идентификатора
//                                                                пользовательской настройки - составная часть элемента
//                                                                управления, ссылающегося на пользовательскую настройку.
//                                                       * Значение - СтрокаТаблицыЗначений - ссылка на строку таблицы
//                                                                    значений раннее инициализированного свойства ПользовательскиеНастройки.
//               * ЕстьБыстрыеНастройки - Булево - Истина, если хотя бы для одной из пользовательских настроек
//                                        РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ
//                                        или РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто.
//               * ЕстьОбычныеНастройки - Булево - Истина, если хотя бы для одной из пользовательских настроек
//                                        РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный.
//               * ЕстьНесуществующиеПоля - Булево - признак того, что поле отсутствует в доступных полях.
//               * ЕстьВложенныеОтчеты - Булево - признак того, что тип хотя бы одного из элементов настроек - НастройкиВложенногоОбъектаКомпоновкиДанных.
//               * ЕстьВложенноеОформление - Булево - см. Синтакс-помощник - НастройкиКомпоновкиДанных.НаличиеУсловногоОформленияУЭлемента().
//               * ЕстьВложенныеПоля - Булево - см. Синтакс-помощник - НастройкиКомпоновкиДанных.НаличиеВыбораУЭлемента().
//               * ЕстьВложенныеСортировки - Булево - см. Синтакс-помощник - НастройкиКомпоновкиДанных.НаличиеПорядкаУЭлемента().
//               * СвойстваГруппЭлементов - Структура - см. ОтчетыСервер.СвойстваГруппыЭлементовФормы() -
//                                          настройки группы элементов быстрых (выводимых на форму) настроек по умолчанию.
//               * ГруппыЭлементов - Соответствие - коллекция для установки частных свойств групп элементов быстрых настроек.
//               * ДеревоВариантаКорневаяСтрока - СтрокаДереваЗначений - ссылка на строку раннее инициализированного
//                                                дерева ДеревоВарианта, соответствующую текущему элементу настройки.
//
Функция РасширеннаяИнформацияОНастройках(КомпоновщикНастроекКД, НастройкиОтчета, ОтчетОбъектИлиПолноеИмя, УсловияВывода = Неопределено) Экспорт
	НастройкиКД = КомпоновщикНастроекКД.Настройки;
	ПользовательскиеНастройкиКД = КомпоновщикНастроекКД.ПользовательскиеНастройки;
	
	ДополнительныеНастройкиЭлементов = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПользовательскиеНастройкиКД.ДополнительныеСвойства, "ЭлементыФормы");
	Если ДополнительныеНастройкиЭлементов = Неопределено Тогда
		ДополнительныеНастройкиЭлементов = Новый Соответствие;
	КонецЕсли;
	
	Информация = Новый Структура;
	Информация.Вставить("ТолькоПользовательские", Ложь);
	Информация.Вставить("ТолькоБыстрые", Ложь);
	Информация.Вставить("ИдентификаторТекущегоУзлаКД", Неопределено);
	Если УсловияВывода <> Неопределено Тогда
		ЗаполнитьЗначенияСвойств(Информация, УсловияВывода);
	КонецЕсли;
	
	Информация.Вставить("НастройкиКД", НастройкиКД);
	
	Информация.Вставить("НастройкиОтчета",           НастройкиОтчета);
	Информация.Вставить("ОтчетОбъектИлиПолноеИмя",   ОтчетОбъектИлиПолноеИмя);
	Информация.Вставить("ДеревоВарианта",            ДеревоВарианта());
	Информация.Вставить("НастройкиВарианта",         ТаблицаНастроекВарианта());
	Информация.Вставить("ПользовательскиеНастройки", ТаблицаПользовательскихНастроек());
	
	Информация.Вставить("ОтключаемыеСвязи", Новый Массив);
	Информация.Вставить("Связи", Новый Структура);
	Информация.Связи.Вставить("ПоТипу",             ТаблицаСвязейПоТипу());
	Информация.Связи.Вставить("ПараметровВыбора",   ТаблицаСвязейПараметровВыбора());
	Информация.Связи.Вставить("ОбъектовМетаданных", ТаблицаСвязейОбъектовМетаданных(НастройкиОтчета, Информация.ОтчетОбъектИлиПолноеИмя));
	
	Информация.Вставить("ДополнительныеНастройкиЭлементов",   ДополнительныеНастройкиЭлементов);
	Информация.Вставить("СоответствиеИменОбъектовМетаданных", Новый Соответствие);
	Информация.Вставить("Поиск", Новый Структура);
	Информация.Поиск.Вставить("НастройкиВариантаПоПолюКД", Новый Соответствие);
	Информация.Поиск.Вставить("ПользовательскиеНастройки", Новый Соответствие);
	Информация.Вставить("ЕстьБыстрыеНастройки", Ложь);
	Информация.Вставить("ЕстьОбычныеНастройки", Ложь);
	Информация.Вставить("ЕстьНесуществующиеПоля", Ложь);
	
	Информация.Вставить("ЕстьВложенныеОтчеты", Ложь);
	Информация.Вставить("ЕстьВложенныеОтборы", Ложь);
	Информация.Вставить("ЕстьВложенноеОформление", Ложь);
	Информация.Вставить("ЕстьВложенныеПоля", Ложь);
	Информация.Вставить("ЕстьВложенныеСортировки", Ложь);
	
	// Настройки группы элементов быстрых (выводимых на форму) настроек по умолчанию.
	Информация.Вставить("СвойстваГруппЭлементов", СвойстваГруппыЭлементовФормы());
	// Коллекция для установки частных свойств групп элементов быстрых настроек.
	Информация.Вставить("ГруппыЭлементов", Новый Соответствие);
	
	Для Каждого ПользовательскаяНастройкаКД Из ПользовательскиеНастройкиКД.Элементы Цикл
		СвойстваНастройки = Информация.ПользовательскиеНастройки.Добавить();
		СвойстваНастройки.ПользовательскаяНастройкаКД = ПользовательскаяНастройкаКД;
		СвойстваНастройки.Идентификатор               = ПользовательскаяНастройкаКД.ИдентификаторПользовательскойНастройки;
		СвойстваНастройки.ИндексВКоллекции = ПользовательскиеНастройкиКД.Элементы.Индекс(ПользовательскаяНастройкаКД);
		СвойстваНастройки.ИдентификаторКД  = ПользовательскиеНастройкиКД.ПолучитьИдентификаторПоОбъекту(ПользовательскаяНастройкаКД);
		СвойстваНастройки.Тип              = ОтчетыКлиентСервер.ТипНастройкиСтрокой(ТипЗнч(ПользовательскаяНастройкаКД));
		Информация.Поиск.ПользовательскиеНастройки.Вставить(СвойстваНастройки.Идентификатор, СвойстваНастройки);
		
		// Положение заголовка по умолчанию.
		СвойстваНастройки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
	КонецЦикла;
	
	СтрокаДерева = ЗарегистрироватьУзелДереваВарианта(Информация, НастройкиКД, НастройкиКД, Информация.ДеревоВарианта.Строки, "Отчет");
	СтрокаДерева.Глобальная = Истина;
	Информация.Вставить("ДеревоВариантаКорневаяСтрока", СтрокаДерева);
	Если Информация.ИдентификаторТекущегоУзлаКД = Неопределено Тогда
		Информация.ИдентификаторТекущегоУзлаКД = СтрокаДерева.ИдентификаторКД;
		Если Не Информация.ТолькоПользовательские Тогда
			СтрокаДерева.ВыводРазрешен = Истина;
		КонецЕсли;
	КонецЕсли;
	
	ЗарегистрироватьНастройкиВарианта(НастройкиКД, Информация);
	ЗарегистрироватьСвязиОтВедущих(Информация);
	
	Возврат Информация;
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

СКД. Повторение шапки отчета на каждой странице

Как вывести шапку отчёта на каждой странице средствами СКД? То есть не формируя отчёт программно. О программных решениях есть достаточно информации, но хочется знать как это сделать самим компоновщиком. Отвечал на подобный вопрос на Инфостарте, настройки к...
bolsun 37 4

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

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

ПодключитьСхему

Устанавливает отчету переданную схему и на основании нее, инициализирует компоновщик настроек.
ОбщийМодуль.ОтчетыСервер
Автор: 1С
// Устанавливает отчету переданную схему и на основании нее, инициализирует компоновщик настроек.
// Если контекстом является форма отчета (настроек), то обновляет основной реквизит формы - Отчет.
// В результате, контекст объекта и формы отчета синхронизируются.
// Вызывается например, из обработчика ПередЗагрузкойНастроекВКомпоновщик объекта универсального отчета
// для установки схемы, программно сформированной на основании другого объекта метаданных.
//
// Параметры:
//  Отчет - ОтчетОбъект, ВнешнийОтчетОбъект - отчет, которому необходимо установить схему.
//  Контекст - ФормаКлиентскогоПриложения - форма отчета или форма настройки отчета.
//                                Передается "как есть" из одноименного параметра события 
//                                ПередЗагрузкойНастроекВКомпоновщик.
//           - Структура - параметры отчета: см. ВариантыОтчетов.ПодключитьОтчетИЗагрузитьНастройки.
//  Схема - СхемаКомпоновкиДанных - схема, которую необходимо установить отчету.
//  КлючСхемы - Строка - идентификатор новой схемы, который будет записан в дополнительные свойства 
//                       пользовательских настроек.
//
// Пример:
//  // В обработчике объекта отчета ПередЗагрузкойНастроекВКомпоновщик компоновщик настроек
//  // инициализируется на основании схемы из общих макетов:
//  Если КлючСхемы <> "1" Тогда
//  	КлючСхемы = "1";
//  	Схема = ПолучитьОбщийМакет("МояОбщаяСхемаКомпоновки");
//  	ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, Схема, КлючСхемы);
//  КонецЕсли;
//
Процедура ПодключитьСхему(Отчет, Контекст, Схема, КлючСхемы) Экспорт
	СобытиеФормы = (ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения"));
	
	Отчет.СхемаКомпоновкиДанных = Схема;
	Если СобытиеФормы Тогда
		НастройкиОтчета = Контекст.НастройкиОтчета;
		АдресСхемы = НастройкиОтчета.АдресСхемы;
		НастройкиОтчета.Вставить("СхемаМодифицирована", Истина);
	Иначе
		АдресСхемыЗаполнен = (ТипЗнч(Контекст.АдресСхемы) = Тип("Строка") И ЭтоАдресВременногоХранилища(Контекст.АдресСхемы));
		Если Не АдресСхемыЗаполнен Тогда
			ИдентификаторФормы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Контекст, "ИдентификаторФормы");
			Если ТипЗнч(ИдентификаторФормы) = Тип("УникальныйИдентификатор") Тогда
				АдресСхемыЗаполнен = Истина;
				Контекст.АдресСхемы = ПоместитьВоВременноеХранилище(Схема, ИдентификаторФормы);
			КонецЕсли;
		КонецЕсли;
		Если АдресСхемыЗаполнен Тогда
			АдресСхемы = Контекст.АдресСхемы;
		Иначе
			АдресСхемы = ПоместитьВоВременноеХранилище(Схема);
		КонецЕсли;
		Контекст.СхемаМодифицирована = Истина;
	КонецЕсли;
	ПоместитьВоВременноеХранилище(Схема, АдресСхемы);
	
	ВариантОтчета = ?(СобытиеФормы, НастройкиОтчета.ВариантСсылка, Неопределено);
	ИнициализироватьКомпоновщикНастроек(Отчет.КомпоновщикНастроек, АдресСхемы, Отчет, ВариантОтчета);
	
	Если СобытиеФормы Тогда
		ЗначениеВДанныеФормы(Отчет, Контекст.Отчет);
	КонецЕсли;
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЗагрузитьНастройки

Загружает новые настройки в компоновщик без сброса пользовательских настроек.
ОбщийМодуль.ОтчетыКлиентСервер
Автор: 1С
// Загружает новые настройки в компоновщик без сброса пользовательских настроек.
//
// Параметры:
//  КомпоновщикНастроек - КомпоновщикНастроекКомпоновкиДанных - Куда надо загрузить настройки.
//  Настройки - НастройкиКомпоновкиДанных - Загружаемые настройки варианта.
//  ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных, Неопределено - Загружаемые пользовательские настройки.
//                              Если не указан, то пользовательские настройки не загружаются.
//  ФиксированныеНастройки - НастройкиКомпоновкиДанных, Неопределено - Загружаемые фиксированные настройки.
//                           Если не указан, то фиксированные настройки не загружаются.
//
Функция ЗагрузитьНастройки(КомпоновщикНастроек, Настройки, ПользовательскиеНастройки = Неопределено, ФиксированныеНастройки = Неопределено) Экспорт
	НастройкиЗагружены = (ТипЗнч(Настройки) = Тип("НастройкиКомпоновкиДанных")
		И Настройки <> КомпоновщикНастроек.Настройки);
	
	Если НастройкиЗагружены Тогда
		Если ТипЗнч(ПользовательскиеНастройки) <> Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда
			ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
		КонецЕсли;
		
		Если ТипЗнч(ФиксированныеНастройки) <> Тип("НастройкиКомпоновкиДанных") Тогда 
			ФиксированныеНастройки = КомпоновщикНастроек.ФиксированныеНастройки;
		КонецЕсли;
		
		ДоступныеЗначения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
			КомпоновщикНастроек.Настройки.ДополнительныеСвойства, "ДоступныеЗначения");
		
		Если ДоступныеЗначения <> Неопределено Тогда 
			Настройки.ДополнительныеСвойства.Вставить("ДоступныеЗначения", ДоступныеЗначения);
		КонецЕсли;
		
		КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
	КонецЕсли;
	
	Если ТипЗнч(ПользовательскиеНастройки) = Тип("ПользовательскиеНастройкиКомпоновкиДанных")
		И ПользовательскиеНастройки <> КомпоновщикНастроек.ПользовательскиеНастройки Тогда
		КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПользовательскиеНастройки);
	КонецЕсли;
	
	Если ТипЗнч(ФиксированныеНастройки) = Тип("НастройкиКомпоновкиДанных")
		И ФиксированныеНастройки <> КомпоновщикНастроек.ФиксированныеНастройки Тогда
		КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ФиксированныеНастройки);
	КонецЕсли;
	
	Возврат НастройкиЗагружены;
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ИнтерактивноеИзменениеВыгрузкиОписаниеДополненияОбщегоОтбора

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ИнтерактивноеИзменениеВыгрузкиОчисткаОбщегоОтбора

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ОткрытьФормуДополненияВыгрузкиСохранениеНастроек

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

УстановитьУсловноеОформлениеПоляДата

Устанавливает представление поля Дата в списках, содержащих реквизит с составом даты Дата и время.
ОбщийМодуль.СтандартныеПодсистемыСервер
Автор: 1С
// Устанавливает представление поля Дата в списках, содержащих реквизит с составом даты Дата и время.
// Подробнее см. стандарт "Поле "Дата" в списках".
//
// Параметры:
//   ЭтотОбъект - ФормаКлиентскогоПриложения - форма со списком.
//   ПолноеИмяРеквизита - Строка - полный путь к реквизиту типа "Дата" в формате "<ИмяСписка>.<ИмяПоля>".
//   ИмяЭлемента - Строка - имя элемента формы, связанного с реквизитом списка типа "Дата".
//
// Пример:
//
//	Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//		СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект);
//
Процедура УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, 
	ПолноеИмяРеквизита = "Список.Дата", ИмяЭлемента = "Дата") Экспорт
	
	ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
		"СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата",
		"ЭтотОбъект", 
		ЭтотОбъект, 
		Тип("ФормаКлиентскогоПриложения"));
	
	ЧастиПолногоИмени = СтрРазделить(ПолноеИмяРеквизита, ".");
	
	Если ЧастиПолногоИмени.Количество() <> 2 Тогда 
		// Недопустимое значение параметра ПолноеИмяРеквизита.
		// Имя реквизита должно быть в формате ""<ИмяСписка>.<ИмяПоля>""'");
		Возврат;
	КонецЕсли;
	
	ИмяСписка = ЧастиПолногоИмени[0];
	РеквизитСписок = ЭтотОбъект[ИмяСписка];
	
	Если ТипЗнч(РеквизитСписок) = Тип("ДинамическийСписок") Тогда 
		// ДинамическийСписок позволяет установить условное оформление с помощью собственного компоновщика.
		// При этом параметр ИмяЭлемента игнорируется, потому что компоновщик динамического списка
		// не знает как будут отображены реквизиты списка, потому путем к реквизиту и значения отбора и оформления 
		// является имя реквизита динамического списка.
		УсловноеОформление = РеквизитСписок.УсловноеОформление;
		ПутьКРеквизиту = ЧастиПолногоИмени[1];
		ИмяОформляемогоПоля = ПутьКРеквизиту;
	Иначе 
		// Остальные списки, например, ДанныеФормыДерево:
		// не имеют собственного компоновщика, потому используют компоновщик самой формы.
		УсловноеОформление = ЭтотОбъект.УсловноеОформление;
		ПутьКРеквизиту = ПолноеИмяРеквизита;
		ИмяОформляемогоПоля = ИмяЭлемента;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(УсловноеОформление.ИдентификаторПользовательскойНастройки) Тогда
		УсловноеОформление.ИдентификаторПользовательскойНастройки = "ОсновноеОформление";
	КонецЕсли;
	
	// По умолчанию используется представление "10.06.2012".
	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	ЭлементОформления.Использование = Истина;
	ЭлементОформления.Представление = НСтр("ru = 'Представление даты: ""10.06.2012""'");
	ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Формат", "ДЛФ=D");
	
	ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяОформляемогоПоля);
	
	// Для сегодняшнего дня используется представления "09:46".
	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	ЭлементОформления.Использование = Истина;
	ЭлементОформления.Представление = НСтр("ru = 'Представление даты сегодня: ""09:46""'");
	ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Формат", "ДФ=ЧЧ:мм");
	
	ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяОформляемогоПоля);
	
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных(ПутьКРеквизиту);
	ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
	ЭлементОтбора.ПравоеЗначение = Новый СтандартнаяДатаНачала(ВариантСтандартнойДатыНачала.НачалоЭтогоДня);
	
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных(ПутьКРеквизиту);
	ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Меньше;
	ЭлементОтбора.ПравоеЗначение = Новый СтандартнаяДатаНачала(ВариантСтандартнойДатыНачала.НачалоСледующегоДня);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ИнтерактивноеИзменениеВыгрузкиСохранитьНастройки

Сохраняет настройки с указанным именем по данным ДополнениеВыгрузки.
ОбщийМодуль.ОбменДаннымиСервер
Автор: 1С
// Сохраняет настройки с указанным именем по данным ДополнениеВыгрузки.
//
// Параметры:
//     ДополнениеВыгрузки     - Структура, РеквизитФормыКоллекция - описание параметров выгрузки.
//     ПредставлениеНастройки - Строка                            - название сохраняемой настройки.
//
Процедура ИнтерактивноеИзменениеВыгрузкиСохранитьНастройки(ДополнениеВыгрузки, Знач ПредставлениеНастройки) Экспорт
	
	ОбработкаДополнения = Обработки.ИнтерактивноеИзменениеВыгрузки.Создать();
	ЗаполнитьЗначенияСвойств(ОбработкаДополнения, ДополнениеВыгрузки, ,
		"ДополнительнаяРегистрация, ДополнительнаяРегистрацияСценарияУзла");
	
	ЗаполнитьТаблицуЗначений(ОбработкаДополнения.ДополнительнаяРегистрация,             ДополнениеВыгрузки.ДополнительнаяРегистрация);
	ЗаполнитьТаблицуЗначений(ОбработкаДополнения.ДополнительнаяРегистрацияСценарияУзла, ДополнениеВыгрузки.ДополнительнаяРегистрацияСценарияУзла);
	
	// Компоновщик настроек собираем заново.
	Данные = ОбработкаДополнения.КомпоновщикНастроекОбщегоОтбора();
	
	Если ПустаяСтрока(ДополнениеВыгрузки.АдресКомпоновщикаВсехДокументов) Тогда
		ИсточникНастроек = ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов.Настройки;
	Иначе
		СтруктураКомпоновщика = ПолучитьИзВременногоХранилища(ДополнениеВыгрузки.АдресКомпоновщикаВсехДокументов);
		ИсточникНастроек = СтруктураКомпоновщика.Настройки;
	КонецЕсли;
		
	ОбработкаДополнения.КомпоновщикОтбораВсехДокументов = Новый КомпоновщикНастроекКомпоновкиДанных;
	ОбработкаДополнения.КомпоновщикОтбораВсехДокументов.Инициализировать( Новый ИсточникДоступныхНастроекКомпоновкиДанных(Данные.СхемаКомпоновки) );
	ОбработкаДополнения.КомпоновщикОтбораВсехДокументов.ЗагрузитьНастройки(ИсточникНастроек);
	
	// Собственно сохранение
	ОбработкаДополнения.СохранитьТекущееВНастройки(ПредставлениеНастройки);
	
	// Текущее представление запомненных настроек.
	ДополнениеВыгрузки.ПредставлениеТекущейНастройки = ПредставлениеНастройки;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПриНажатииКнопкиВыбораПериода

Обработчик нажатия на кнопку выбора периода в отдельной форме.
ОбщийМодуль.ОтчетыКлиентПереопределяемый
Автор: 1С
// Обработчик нажатия на кнопку выбора периода в отдельной форме.
//
// Параметры:
//   ФормаОтчета - ФормаКлиентскогоПриложения - форма отчета.
//   Период - СтандартныйПериод - значение настройки компоновщика, соответствующей выбранному периоду.
//   СтандартнаяОбработка - Булево - если Истина, то будет использован стандартный диалог выбора периода.
//       Если установить в Ложь то стандартный диалог не откроется.
//   ОбработчикРезультата - ОписаниеОповещения - обработчик результата выбора периода.
//       В качестве результата в ОбработчикРезультата могут быть переданы значения типов:
//       Неопределено - пользователь отказался от ввода периода.
//       СтандартныйПериод - выбранный период.
//
//  Если в конфигурации используется собственный диалог выбора периода,
//      тогда параметр СтандартнаяОбработка следует установить в Ложь,
//      а выбранный период следует вернуть в ОбработчикРезультата.
//
Процедура ПриНажатииКнопкиВыбораПериода(ФормаОтчета, Период, СтандартнаяОбработка, ОбработчикРезультата) Экспорт
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ОбработчикиОбновленияВИнтервале

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ИнтерактивноеИзменениеВыгрузкиВосстановитьНастройки

Восстанавливает настройки в реквизитах ДополнениеВыгрузки по названию сохраненной настройки.
ОбщийМодуль.ОбменДаннымиСервер
Автор: 1С
// Восстанавливает настройки в реквизитах ДополнениеВыгрузки по названию сохраненной настройки.
//
// Параметры:
//     ДополнениеВыгрузки     - Структура, РеквизитФормыКоллекция - описание параметров выгрузки.
//     ПредставлениеНастройки - Строка                            - название восстанавливаемой настройки.
//
// Возвращаемое значение:
//     Булево - Истина - успешно восстановлено, Ложь - настройка не найдена.
//
Функция ИнтерактивноеИзменениеВыгрузкиВосстановитьНастройки(ДополнениеВыгрузки, Знач ПредставлениеНастройки) Экспорт
	
	ОбработкаДополнения = Обработки.ИнтерактивноеИзменениеВыгрузки.Создать();
	ЗаполнитьЗначенияСвойств(ОбработкаДополнения, ДополнениеВыгрузки);
	
	ФильтрВарианта = ИнтерактивноеИзменениеВыгрузкиФильтрВарианта(ДополнениеВыгрузки);
	
	// Восстанавливаем состояние объекта.
	Результат = ОбработкаДополнения.ВосстановитьТекущееИзНастроек(ПредставлениеНастройки, ФильтрВарианта, ДополнениеВыгрузки.АдресХранилищаФормы);
	
	Если Результат Тогда
		ЗаполнитьЗначенияСвойств(ДополнениеВыгрузки, ОбработкаДополнения, "ВариантВыгрузки, ПериодОтбораВсехДокументов, КомпоновщикОтбораВсехДокументов");
		
		// Обновляем адрес компоновщика всегда.
		Данные = ОбработкаДополнения.КомпоновщикНастроекОбщегоОтбора();
		Данные.Настройки = ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов.Настройки;
		ДополнениеВыгрузки.АдресКомпоновщикаВсехДокументов = ПоместитьВоВременноеХранилище(Данные, ДополнениеВыгрузки.АдресХранилищаФормы);
		
		ЗаполнитьТаблицуЗначений(ДополнениеВыгрузки.ДополнительнаяРегистрация, ОбработкаДополнения.ДополнительнаяРегистрация);
		
		// Настройки по сценарию узла обновляем только если они определены в прочитанном. Иначе оставляем текущее.
		Если ОбработкаДополнения.ДополнительнаяРегистрацияСценарияУзла.Количество() > 0 Тогда
			ЗаполнитьЗначенияСвойств(ДополнениеВыгрузки, ОбработкаДополнения, "ПериодОтбораСценарияУзла, ПредставлениеОтбораСценарияУзла");
			ЗаполнитьТаблицуЗначений(ДополнениеВыгрузки.ДополнительнаяРегистрацияСценарияУзла, ОбработкаДополнения.ДополнительнаяРегистрацияСценарияУзла);
			// Нормализуем установки периода.
			ИнтерактивноеИзменениеВыгрузкиУстановитьПериодаСценарияУзла(ДополнениеВыгрузки);
		КонецЕсли;
		
		// Текущее представление ранее запомненных настроек.
		ДополнениеВыгрузки.ПредставлениеТекущейНастройки = ПредставлениеНастройки;
	КонецЕсли;

	Возврат Результат;
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПередЗагрузкойВариантаНаСервере

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

КоличествоДоступныхНастроек

Собирает статистику по количеству пользовательских настроек в разрезе режимов отображения.
ОбщийМодуль.ОтчетыСервер
Автор: 1С
// Собирает статистику по количеству пользовательских настроек в разрезе режимов отображения.
//
// Параметры:
//  КомпоновщикНастроек - КомпоновщикНастроекКомпоновкиДанных - актуальный компоновщик.
//
// Возвращаемое значение:
//   Структура - количество пользовательских настроек в разрезе режимов отображения:
//             - БыстрогоДоступа - количество настроек с режимом отображения БыстрыйДоступ или Авто;
//             - Обычных - количество настроек с режимом отображения Обычный;
//             - Итог - общее количество доступных настроек.
//
Функция КоличествоДоступныхНастроек(КомпоновщикНастроек) Экспорт 
	ДоступныеНастройки = Новый Структура;
	ДоступныеНастройки.Вставить("БыстрогоДоступа", 0);
	ДоступныеНастройки.Вставить("Обычных", 0);
	ДоступныеНастройки.Вставить("Итог", 0);
	
	ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
	Для Каждого ЭлементПользовательскойНастройки Из ПользовательскиеНастройки.Элементы Цикл 
		ЭлементНастройки = ОтчетыКлиентСервер.ПолучитьОбъектПоПользовательскомуИдентификатору(
			КомпоновщикНастроек.Настройки,
			ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки,,
			ПользовательскиеНастройки);
		
		РежимОтображения = ?(ЭлементНастройки = Неопределено,
			ЭлементПользовательскойНастройки.РежимОтображения, ЭлементНастройки.РежимОтображения);
		
		Если РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто
			Или РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ Тогда 
			ДоступныеНастройки.БыстрогоДоступа = ДоступныеНастройки.БыстрогоДоступа + 1;
		ИначеЕсли РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный Тогда 
			ДоступныеНастройки.Обычных = ДоступныеНастройки.Обычных + 1;
		КонецЕсли;
	КонецЦикла;
	
	ДоступныеНастройки.Итог = ДоступныеНастройки.БыстрогоДоступа + ДоступныеНастройки.Обычных;
	
	Возврат ДоступныеНастройки;
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПриОпределенииПараметровВыбора

Вызывается в форме отчета и в форме настройки отчета перед выводом настройки
ОбщийМодуль.ОтчетыПереопределяемый
Автор: 1С
// Вызывается в форме отчета и в форме настройки отчета перед выводом настройки 
// для указания дополнительных параметров выбора.
//
// Параметры:
//  Форма - ФормаКлиентскогоПриложения, Неопределено - форма отчета.
//  СвойстваНастройки - Структура - описание настройки отчета, которая будет выведена в форме отчета.
//      * ПолеКД - ПолеКомпоновкиДанных - выводимая настройка.
//      * ОписаниеТипов - ОписаниеТипов - тип выводимой настройки.
//      * ЗначенияДляВыбора - СписокЗначений - указать объекты, которые будут предложены пользователю в списке выбора.
//                            Дополняет список объектов, уже выбранных пользователем ранее.
//                            При этом не следует присваивать в этот параметр новый список значений.
//      * ЗапросЗначенийВыбора - Запрос - указать запрос для выборки объектов, которыми необходимо дополнить 
//                               ЗначенияДляВыбора. Первой колонкой (с индексом 0) должен выбираться объект,
//                               который следует добавить в ЗначенияДляВыбора.Значение.
//                               Для отключения автозаполнения в свойство ЗапросЗначенийВыбора.Текст следует записать
//                               пустую строку.
//      * ОграничиватьВыборУказаннымиЗначениями - Булево - указать Истина, чтобы ограничить выбор пользователя
//                                                значениями, указанными в ЗначенияДляВыбора (его конечным состоянием).
//      * Тип - Строка - краткий идентификатор типа свойства настроек компоновщика настроек компоновки данных.
//              См. ОтчетыСервер.ТипНастройкиСтрокой.
//
// Пример:
//   1. Для всех настроек типа СправочникСсылка.Пользователи скрыть и не разрешать выбирать помеченных на удаление, 
//   недействительных и служебных пользователей.
//
//   Если СвойстваНастройки.ОписаниеТипов.СодержитТип(Тип("СправочникСсылка.Пользователи")) Тогда
//     СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями = Истина;
//     СвойстваНастройки.ЗначенияДляВыбора.Очистить();
//     СвойстваНастройки.ЗапросЗначенийВыбора.Текст =
//       "ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи
//       |ГДЕ НЕ ПометкаУдаления И НЕ Недействителен И НЕ Служебный";
//   КонецЕсли;
//
//   2. Для настройки "Размер" предусмотреть дополнительное значение для выбора.
//
//   Если СвойстваНастройки.ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных.Размер") Тогда
//     СвойстваНастройки.ЗначенияДляВыбора.Добавить(10000000, НСтр("ru = 'Больше 10 Мб'"));
//   КонецЕсли;
//
Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////