#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если Объект.Ссылка.Пустая() Тогда
Если Параметры.Свойство("ПоказательЗаполнения")
И ЗначениеЗаполнено(Параметры.ПоказательЗаполнения) Тогда
ДобавитьЭлементНаСервере(Параметры.ПоказательЗаполнения, Неопределено)
КонецЕсли;
КонецЕсли;
Если Параметры.Свойство("ДокументИсточник") Тогда
ДокументИсточник = Параметры.ДокументИсточник;
КонецЕсли;
ЭлементыДобавления = ДеревоКолонок.ПолучитьЭлементы();
НоваяСтрока = ЭлементыДобавления.Добавить();
НоваяСтрока.ИмяИзмерения = "ТабличнаяЧасть";
НоваяСтрока.Представление = НСтр("ru = 'Табличная часть'");
НоваяСтрока.ИндексКартинки = 21;
ЭлементыДобавления = НоваяСтрока.ПолучитьЭлементы();
Колонки = ЭлементыДобавления.Добавить();
Колонки.ИмяИзмерения = "Колонки";
Колонки.Представление = НСтр("ru = 'Колонки'");
Колонки.ИндексКартинки = 24;
ЭлементыДобавления = НоваяСтрока.ПолучитьЭлементы();
Строки = ЭлементыДобавления.Добавить();
Строки.ИмяИзмерения = "Строки";
Строки.Представление = НСтр("ru = 'Строки'");
Строки.ИндексКартинки = 27;
Элементы.ТолькоСовместимые.Пометка = Истина;
Элементы.ИерархическийПросмотр.Пометка = Истина;
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
УправлениеФормой();
Шаблоны = Справочники.НефинансовыеПоказателиБюджетов.ШаблоныСхемыКомпоновкиДанных();
ЭлементыУсловногоОформления = ЭтаФорма.УсловноеОформление.Элементы;
ПредставлениеЭлемента = НСтр("ru = 'Не заполнять'");
Элементы.ТаблицаЗаполненияСхемаКомпоновкиДанных.СписокВыбора.Добавить("НеЗаполнять", ПредставлениеЭлемента);
Элемент = ЭлементыУсловногоОформления.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаЗаполнения.СхемаКомпоновкиДанных");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = "НеЗаполнять";
ЗначениеПараметра = НСтр("ru = 'Не заполнять'");
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ЗначениеПараметра);
ОформляемоеПоле = Элемент.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаЗаполненияСхемаКомпоновкиДанных");
Элемент.Использование = Истина;
Для Каждого Шаблон Из Шаблоны Цикл
Элементы.ТаблицаЗаполненияСхемаКомпоновкиДанных.СписокВыбора.Добавить(Шаблон.Имя, Шаблон.Синоним);
Элемент = ЭлементыУсловногоОформления.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаЗаполнения.СхемаКомпоновкиДанных");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Шаблон.Имя;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Шаблон.Синоним);
ОформляемоеПоле = Элемент.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаЗаполненияСхемаКомпоновкиДанных");
Элемент.Использование = Истина;
КонецЦикла;
ПредставлениеСхемы = НСтр("ru = 'Произвольная'");
Элементы.ТаблицаЗаполненияСхемаКомпоновкиДанных.СписокВыбора.Добавить("", ПредставлениеСхемы);
Элемент = ЭлементыУсловногоОформления.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаЗаполнения.СхемаКомпоновкиДанных");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = "";
ЗначениеПараметра = НСтр("ru = 'Произвольная'");
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ЗначениеПараметра);
ОформляемоеПоле = Элемент.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаЗаполненияСхемаКомпоновкиДанных");
Элемент.Использование = Истина;
ИзмеренияБюджетирования = СтрРазделить("Сценарий,Подразделение,Организация", ",");
Для Каждого ИзмерениеБюджетирования Из ИзмеренияБюджетирования Цикл
Элемент = ЭлементыУсловногоОформления.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.РедактироватьВШапке.ИмяИзмерения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ИзмерениеБюджетирования;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст",
БюджетнаяОтчетностьКлиентСервер.ПредставлениеИзмеренияБюджетирования(ИзмерениеБюджетирования));
ОформляемоеПоле = Элемент.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элементы.РедактироватьВШапкеИмяИзмерения.Имя);
Элемент.Использование = Истина;
Элемент = ЭлементыУсловногоОформления.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.РедактироватьВСтроках.ИмяИзмерения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ИзмерениеБюджетирования;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст",
БюджетнаяОтчетностьКлиентСервер.ПредставлениеИзмеренияБюджетирования(ИзмерениеБюджетирования));
ОформляемоеПоле = Элемент.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элементы.РедактироватьВСтрокахИмяИзмерения.Имя);
Элемент.Использование = Истина;
КонецЦикла;
ПоказателиВТабличнойЧасти = Объект.ПоказателиВТабличнойЧасти;
ОбновитьСписокДоступныхПолей();
ОбновитьСписокЗаполнений();
ДоступностьКнопокДалееНазад(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Для Каждого СтрокаПоказатель Из ТекущийОбъект.ПоказателиШаблона Цикл
НоваяСтрока = ТаблицаЗаполнения.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаПоказатель, "Показатель, Заполнять, СхемаКомпоновкиДанных");
НоваяСтрока.ХранилищеСхемыКомпоновкиДанных = ПоместитьВоВременноеХранилище(
СтрокаПоказатель.ХранилищеСхемыКомпоновкиДанных.Получить(), УникальныйИдентификатор);
НоваяСтрока.ХранилищеНастроекКомпоновкиДанных = ПоместитьВоВременноеХранилище(
СтрокаПоказатель.ХранилищеНастроекКомпоновкиДанных.Получить(), УникальныйИдентификатор);
НоваяСтрока.Картинка = БиблиотекаКартинок.КонструкторНастроекКомпоновкиДанных;
НоваяСтрока.Настроить = "Настроить";
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Ошибки = Неопределено;
ОтразитьРасположениеПолейВДанныхОбъекта(ТекущийОбъект);
ПроверитьНаличиеПодПериодаВШапке(ТекущийОбъект, Ошибки);
Если ТекущийОбъект.РедактироватьВШапке.Найти("НомерПодПериода") <> Неопределено Тогда
ТекстОшибки = НСтр("ru = 'Номер периода должен редактироваться в строках или колонках'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"РедактироватьВШапке",
ТекстОшибки, "");
КонецЕсли;
Для Каждого СтрокаЗаполнения Из ТаблицаЗаполнения Цикл
НайденнаяСтрока = ТекущийОбъект.ПоказателиШаблона.Найти(СтрокаЗаполнения.Показатель, "Показатель");
Если НайденнаяСтрока = Неопределено Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(НайденнаяСтрока, СтрокаЗаполнения, "Показатель, СхемаКомпоновкиДанных");
НайденнаяСтрока.Заполнять = НайденнаяСтрока.СхемаКомпоновкиДанных <> "НеЗаполнять";
Если Не ПустаяСтрока(СтрокаЗаполнения.ХранилищеСхемыКомпоновкиДанных) Тогда
ХранилищеСхемыКомпоновкиДанных = ПолучитьИзВременногоХранилища(СтрокаЗаполнения.ХранилищеСхемыКомпоновкиДанных);
Если ХранилищеСхемыКомпоновкиДанных <> Неопределено
И ТипЗнч(ХранилищеСхемыКомпоновкиДанных) <> Тип("ХранилищеЗначения") Тогда
ХранилищеСхемыКомпоновкиДанных = Новый ХранилищеЗначения(ХранилищеСхемыКомпоновкиДанных);
КонецЕсли;
Иначе
ХранилищеСхемыКомпоновкиДанных = Неопределено;
КонецЕсли;
НайденнаяСтрока.ХранилищеСхемыКомпоновкиДанных = ХранилищеСхемыКомпоновкиДанных;
Если Не ПустаяСтрока(СтрокаЗаполнения.ХранилищеНастроекКомпоновкиДанных) Тогда
ХранилищеНастроекКомпоновкиДанных = ПолучитьИзВременногоХранилища(СтрокаЗаполнения.ХранилищеНастроекКомпоновкиДанных);
Если ХранилищеНастроекКомпоновкиДанных <> Неопределено
И ТипЗнч(ХранилищеНастроекКомпоновкиДанных) <> Тип("ХранилищеЗначения") Тогда
ХранилищеНастроекКомпоновкиДанных = Новый ХранилищеЗначения(ХранилищеНастроекКомпоновкиДанных);
КонецЕсли;
Иначе
ХранилищеНастроекКомпоновкиДанных = Неопределено;
КонецЕсли;
НайденнаяСтрока.ХранилищеНастроекКомпоновкиДанных = ХранилищеНастроекКомпоновкиДанных;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("ЗаписанШаблонВводаНФП", Объект.Ссылка, ДокументИсточник);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ВсеВШапкеПриИзменении(Элемент)
ТипФормыВводаПоказателейПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПростаяТаблицаПриИзменении(Элемент)
ТипФормыВводаПоказателейПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СложнаяТаблицаПриИзменении(Элемент)
ТипФормыВводаПоказателейПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СтраницыВводаПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ОтразитьИзмененияДерева Тогда
ОтразитьРасположениеПолейВДанныхОбъекта();
КонецЕсли;
Если ТекущаяСтраница = Элементы.СтраницаРасположениеПолей Тогда
ОбновитьСписокДоступныхПолей();
ИначеЕсли ТекущаяСтраница = Элементы.СтраницаНастройкиЗаполнения Тогда
ОбновитьСписокЗаполнений();
КонецЕсли;
ДоступностьКнопокДалееНазад(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПоложениеПоказателейПриИзменении(Элемент)
Объект.ПоказателиВТабличнойЧасти = ПоказателиВТабличнойЧасти;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийТаблицыФормы
&НаКлиенте
Процедура РедактироватьВШапкеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ИерархическийПросмотрПоказателейДляВыбора(Команда)
Элементы.ИерархическийПросмотр.Пометка =
Не Элементы.ИерархическийПросмотр.Пометка;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПоказателейВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НЕ РазрешеноИзменение Тогда
Возврат;
КонецЕсли;
ДобавитьВВыбранныеПоказатели(ВыбраннаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ПоказателиШаблонаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если НЕ РазрешеноИзменение Тогда
СтандартнаяОбработка = Ложь;
Возврат;
КонецЕсли;
ПеренестиВлево(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ПоказателиШаблонаПослеУдаления(Элемент)
УправлениеФормой();
ДоступностьКнопокДалееНазад(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьВСтрокахПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьВСтрокахПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
ПеренестиВТаблицу(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьВШапкеПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
Массив = ПараметрыПеретаскивания.Значение;
Если ТипЗнч(Массив[0]) = Тип("ДанныеФормыЭлементДерева") Тогда
ТочкаОтсчета = Массив[0].ПолучитьЭлементы();
Пока ТочкаОтсчета.Количество() Цикл
Массив.Добавить(ТочкаОтсчета[0]);
ТочкаОтсчета = ТочкаОтсчета[0].ПолучитьЭлементы();
КонецЦикла;
КонецЕсли;
ПеренестиВТаблицу(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьВСтрокахОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
ПеренестиИзТаблицы(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьВШапкеОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
ПеренестиИзТаблицы(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДеревоКолонокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
Массив = ПараметрыПеретаскивания.Значение;
Если ТипЗнч(Массив[0]) = Тип("Число") Тогда
ПереносимаяСтрока = ДеревоКолонок.НайтиПоИдентификатору(Массив[0]);
ТочкаОтсчета = ПереносимаяСтрока.ПолучитьЭлементы();
Пока ТочкаОтсчета.Количество() Цикл
Массив.Добавить(ТочкаОтсчета[0]);
ТочкаОтсчета = ТочкаОтсчета[0].ПолучитьЭлементы();
КонецЦикла;
КонецЕсли;
ПеренестиВДерево(ПараметрыПеретаскивания, СтандартнаяОбработка, Строка);
КонецПроцедуры
&НаКлиенте
Процедура ДеревоКолонокПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
Отказ = Ложь;
Если Строка = Неопределено Тогда
Отказ = Истина;
Иначе
СтрокаКуда = ДеревоКолонок.НайтиПоИдентификатору(Строка);
Если СтрокаКуда.ПолучитьРодителя() = Неопределено Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если Не Отказ Тогда
Для Каждого Значение Из ПараметрыПеретаскивания.Значение Цикл
Если ТипЗнч(Значение) <> Тип("Число") Тогда
Продолжить;
КонецЕсли;
ПеретаскиваемаяСтрока = ДеревоКолонок.НайтиПоИдентификатору(Значение);
Если ПеретаскиваемаяСтрока.ПолучитьРодителя() = Неопределено Тогда
Отказ = Истина;
Прервать;
КонецЕсли;
Если ПеретаскиваемаяСтрока.ИмяИзмерения = "Строки" ИЛИ
ПеретаскиваемаяСтрока.ИмяИзмерения = "Колонки" Тогда
Отказ = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Отказ Тогда
ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.НеОбрабатывать;
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.Перемещение;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоКолонокОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
ПеренестиИзДерева(ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьВШапкеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Если НЕ РазрешеноИзменение Тогда
Возврат;
КонецЕсли;
Строка = Объект.РедактироватьВШапке.НайтиПоИдентификатору(ВыбраннаяСтрока);
ПараметрыПеретаскивания = ПараметрыПеретаскивания(Строка);
Если Объект.ТипФормыВводаПоказателей =
ПредопределенноеЗначение("Перечисление.ТипыФормШаблоновНефинансовыхПоказателей.ПростаяТаблица") Тогда
ПеренестиВТаблицу(Элементы.РедактироватьВСтроках, ПараметрыПеретаскивания);
ПеренестиИзТаблицы(Элементы.РедактироватьВШапке, ПараметрыПеретаскивания);
ИначеЕсли Объект.ТипФормыВводаПоказателей =
ПредопределенноеЗначение("Перечисление.ТипыФормШаблоновНефинансовыхПоказателей.СложнаяТаблица") Тогда
СтрокаДобавления = ФинансоваяОтчетностьКлиент.ПодчиненныйЭлементЭлементаФормы(ДеревоКолонок,
"ИмяИзмерения", "Строки");
ПеренестиВДерево(ПараметрыПеретаскивания, Ложь, СтрокаДобавления.ПолучитьИдентификатор());
ПеренестиИзТаблицы(Элементы.РедактироватьВШапке, ПараметрыПеретаскивания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьВСтрокахВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Если НЕ РазрешеноИзменение Тогда
Возврат;
КонецЕсли;
Строка = Объект.РедактироватьВСтроках.НайтиПоИдентификатору(ВыбраннаяСтрока);
ПараметрыПеретаскивания = ПараметрыПеретаскивания(Строка);
ПеренестиВТаблицу(Элементы.РедактироватьВШапке, ПараметрыПеретаскивания);
ПеренестиИзТаблицы(Элементы.РедактироватьВСтроках, ПараметрыПеретаскивания);
КонецПроцедуры
&НаКлиенте
Процедура ДеревоКолонокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Если НЕ РазрешеноИзменение Тогда
Возврат;
КонецЕсли;
Строка = ДеревоКолонок.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Поле <> Неопределено И Поле.Имя = "ДеревоКолонокЗначения" Тогда
Если Строка.Значения = "" Тогда
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ИзменениеЗначенийПоУмолчанию", ЭтаФорма);
ПараметрыФормы = Новый Структура;
Если Строка.ИмяИзмерения = "Валюта" Тогда
ПараметрыФормы.Вставить("ТипЗначения", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ИначеЕсли Строка.ИмяИзмерения = "Подразделение" Тогда
ПараметрыФормы.Вставить("ТипЗначения", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
ИначеЕсли Строка.ИмяИзмерения = "Организация" Тогда
ПараметрыФормы.Вставить("ТипЗначения", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ИначеЕсли Строка.ИмяИзмерения = "Сценарий" Тогда
ПараметрыФормы.Вставить("ТипЗначения", Новый ОписаниеТипов("СправочникСсылка.Сценарии"));
ИначеЕсли Строка.ИмяИзмерения = "Аналитика" Тогда
ТипЗначения = ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(Строка.Аналитика, "ТипЗначения");
ПараметрыФормы.Вставить("ТипЗначения", ТипЗначения);
КонецЕсли;
ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Значения по-умолчанию'"));
Значения = Новый Массив;
СтруктураПоискаЗначений = Новый Структура("Аналитика, ИмяИзмерения");
ЗаполнитьЗначенияСвойств(СтруктураПоискаЗначений, Строка);
ЭлементыПоУмолчанию = Объект.ЗначенияСложнойТаблицыПоУмолчанию.НайтиСтроки(СтруктураПоискаЗначений);
Для Каждого Элемент Из ЭлементыПоУмолчанию Цикл
Значения.Добавить(Элемент.Значение);
КонецЦикла;
ПараметрыФормы.Вставить("Значения", Значения);
ОткрытьФорму("ОбщаяФорма.РедактированиеСпискаЗначений", ПараметрыФормы, , , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
Если Строка.ПолучитьРодителя() = Неопределено Тогда
Возврат;
КонецЕсли;
Если Строка.ИмяИзмерения = "Строки"
ИЛИ Строка.ИмяИзмерения = "Колонки" Тогда
Возврат;
КонецЕсли;
ПараметрыПеретаскивания = ПараметрыПеретаскивания(Строка);
ТочкаОтсчета = Строка.ПолучитьЭлементы();
Пока ТочкаОтсчета.Количество() Цикл
ПараметрыПеретаскивания.Значение.Добавить(ТочкаОтсчета[0]);
ТочкаОтсчета = ТочкаОтсчета[0].ПолучитьЭлементы();
КонецЦикла;
ПеренестиВТаблицу(Элементы.РедактироватьВШапке, ПараметрыПеретаскивания);
ПеренестиИзДерева(ПараметрыПеретаскивания, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПоказателейОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Для Каждого Значение Из ПараметрыПеретаскивания.Значение Цикл
ДобавитьВВыбранныеПоказатели(Значение);
КонецЦикла;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПоказателейПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
СтандартнаяОбработка = Ложь;
Для Каждого Значение Из ПараметрыПеретаскивания.Значение Цикл
Объект.ПоказателиШаблона.Удалить(Значение.ПолучитьИдентификатор());
КонецЦикла;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполненияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле.Имя <> "ТаблицаЗаполненияНастроить" Тогда
Возврат;
КонецЕсли;
Если НЕ РазрешеноИзменение Тогда
СтандартнаяОбработка = Ложь;
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные.СхемаКомпоновкиДанных = "НеЗаполнять" Тогда
ТекстПредупреждения = НСтр("ru = 'Выберите схему компоновки данных для заполнения'");
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат;
КонецЕсли;
ЗаголовокФормыНастройкиСхемыКомпоновкиДанных = НСтр("ru = 'Настройка схемы компоновки данных для нефинансового показателя ""%1""'");
ЗаголовокФормыНастройкиСхемыКомпоновкиДанных = СтрЗаменить(ЗаголовокФормыНастройкиСхемыКомпоновкиДанных, "%1", ТекущиеДанные.Показатель);
Адреса = БюджетированиеВызовСервера.ПолучитьАдресаСхемыКомпоновкиДанныхВоВременномХранилище(
ТекущиеДанные.СхемаКомпоновкиДанных,
ТекущиеДанные.ХранилищеСхемыКомпоновкиДанных,
ТекущиеДанные.ХранилищеНастроекКомпоновкиДанных,
УникальныйИдентификатор);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИндексСтроки", ТекущиеДанные.ПолучитьИдентификатор());
ДополнительныеПараметры.Вставить("Адреса", Адреса);
ОписаниеОповещения = Новый ОписаниеОповещения("ПриИзмененииКомпоновкиДанных", ЭтаФорма, ДополнительныеПараметры);
ПараметрыОткрываемойФормы = Новый Структура;
ПараметрыОткрываемойФормы.Вставить("НеПомещатьНастройкиВСхемуКомпоновкиДанных", Истина);
ПараметрыОткрываемойФормы.Вставить("НеРедактироватьСхемуКомпоновкиДанных", Ложь);
ПараметрыОткрываемойФормы.Вставить("НеЗагружатьСхемуКомпоновкиДанныхИзФайла", Ложь);
ПараметрыОткрываемойФормы.Вставить("НеНастраиватьУсловноеОформление", Истина);
ПараметрыОткрываемойФормы.Вставить("НеНастраиватьПараметры", Истина);
ПараметрыОткрываемойФормы.Вставить("НеНастраиватьВыбор", Истина);
ПараметрыОткрываемойФормы.Вставить("НеНастраиватьПорядок", Истина);
ПараметрыОткрываемойФормы.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
ПараметрыОткрываемойФормы.Вставить("АдресСхемыКомпоновкиДанных", Адреса.СхемаКомпоновкиДанных);
ПараметрыОткрываемойФормы.Вставить("АдресНастроекКомпоновкиДанных", Адреса.НастройкиКомпоновкиДанных);
ПараметрыОткрываемойФормы.Вставить("Заголовок", ЗаголовокФормыНастройкиСхемыКомпоновкиДанных);
ОткрытьФорму("ОбщаяФорма.УпрощеннаяНастройкаСхемыКомпоновкиДанных",
ПараметрыОткрываемойФормы, ,,,,ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОткрытьПоказатель(Команда)
ТекущаяСсылка = Элементы.ПоказателиШаблона.ТекущиеДанные;
Если ТекущаяСсылка = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура("Ключ", ТекущаяСсылка.Показатель);
ОткрытьФорму("Справочник.НефинансовыеПоказателиБюджетов.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура Далее(Команда)
Страницы = Элементы.СтраницыВвода.ПодчиненныеЭлементы;
Индекс = Страницы.Индекс(Элементы.СтраницыВвода.ТекущаяСтраница);
Если Индекс = 0
И НЕ ЗначениеЗаполнено(Объект.Наименование) Тогда
Объект.Наименование = НаименованиеПоУмолчанию();
КонецЕсли;
Индекс = Мин(Индекс + 1, Страницы.Количество() - 1);
Элементы.СтраницыВвода.ТекущаяСтраница = Элементы.СтраницыВвода.ПодчиненныеЭлементы[Индекс];
Если ОтразитьИзмененияДерева Тогда
ОтразитьРасположениеПолейВДанныхОбъекта();
КонецЕсли;
Если Элементы.СтраницыВвода.ТекущаяСтраница.Имя = "СтраницаРасположениеПолей" Тогда
ОбновитьСписокДоступныхПолей();
ИначеЕсли Элементы.СтраницыВвода.ТекущаяСтраница.Имя = "СтраницаНастройкиЗаполнения" Тогда
ОбновитьСписокЗаполнений();
КонецЕсли;
ДоступностьКнопокДалееНазад(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Назад(Команда)
Страницы = Элементы.СтраницыВвода.ПодчиненныеЭлементы;
Индекс = Страницы.Индекс(Элементы.СтраницыВвода.ТекущаяСтраница);
Индекс = Макс(Индекс - 1, 0);
Элементы.СтраницыВвода.ТекущаяСтраница = Элементы.СтраницыВвода.ПодчиненныеЭлементы[Индекс];
Если ОтразитьИзмененияДерева Тогда
ОтразитьРасположениеПолейВДанныхОбъекта();
КонецЕсли;
Если Элементы.СтраницыВвода.ТекущаяСтраница.Имя = "СтраницаРасположениеПолей" Тогда
ОбновитьСписокДоступныхПолей();
КонецЕсли;
ДоступностьКнопокДалееНазад(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиВправо(Команда)
Если Элементы.СтраницыВвода.ТекущаяСтраница =
Элементы.СтраницаРасположениеПолей Тогда
РедактироватьВШапкеВыбор(Элементы.РедактироватьВШапке,
Элементы.РедактироватьВШапке.ТекущаяСтрока,
Неопределено,
Неопределено);
ИначеЕсли Элементы.СтраницыВвода.ТекущаяСтраница =
Элементы.СтраницаПоказатели Тогда
ДобавитьВВыбранныеПоказатели(Элементы.ДеревоПоказателей.ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиВлево(Команда)
Если Элементы.СтраницыВвода.ТекущаяСтраница =
Элементы.СтраницаРасположениеПолей Тогда
Если Объект.ТипФормыВводаПоказателей = ПредопределенноеЗначение(
"Перечисление.ТипыФормШаблоновНефинансовыхПоказателей.ПростаяТаблица") Тогда
РедактироватьВСтрокахВыбор(Элементы.РедактироватьВСтроках,
Элементы.РедактироватьВСтроках.ТекущаяСтрока,
Неопределено,
Неопределено);
ИначеЕсли Объект.ТипФормыВводаПоказателей = ПредопределенноеЗначение(
"Перечисление.ТипыФормШаблоновНефинансовыхПоказателей.СложнаяТаблица") Тогда
ДеревоКолонокВыбор(Элементы.ДеревоКолонок,
Элементы.ДеревоКолонок.ТекущаяСтрока,
Неопределено,
Неопределено);
КонецЕсли;
ИначеЕсли Элементы.СтраницыВвода.ТекущаяСтраница =
Элементы.СтраницаПоказатели Тогда
ТекущаяСтрока = Элементы.ПоказателиШаблона.ТекущаяСтрока;
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.ПоказателиШаблона.Удалить(Объект.ПоказателиШаблона.НайтиПоИдентификатору(ТекущаяСтрока));
УправлениеФормой();
ДоступностьКнопокДалееНазад(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТолькоСовместимые(Команда)
Элементы.ТолькоСовместимые.Пометка = Не Элементы.ТолькоСовместимые.Пометка;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПросмотретьФормуДокумент(Команда)
Ошибки = Неопределено;
ОбновитьСписокДоступныхПолей();
Отказ = Ложь;
ПроверитьНаличиеПодПериодаВШапке(Объект, Ошибки);
Если Объект.ПоказателиШаблона.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru = 'Должен быть выбран хотя бы один показатель'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Объект.ПоказателиШаблона",
ТекстОшибки, "");
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура("Шаблон, Наименование", СтруктураОписанияШаблона(), Объект.Наименование);
ОткрытьФорму("Справочник.ШаблоныВводаНефинансовыхПоказателей.Форма.ФормаДемонстрации", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
ПараметрыПроцедуры = ОбщегоНазначенияУТКлиент.ПараметрыРазрешенияРедактированияРеквизитовОбъекта();
ПараметрыПроцедуры.ОповещениеОРазблокировке = Новый ОписаниеОповещения("РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект);
ОбщегоНазначенияУТКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтаФорма, ПараметрыПроцедуры);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ Результат = Неопределено Тогда
РазрешеноИзменение = Результат;
УправлениеФормой();
ДоступностьКнопокДалееНазад(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ТипФормыВводаПоказателейПриИзмененииНаСервере()
Если НЕ Объект.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.СложнаяТаблица Тогда
Объект.РедактироватьВКолонках.Очистить();
КонецЕсли;
Если НЕ Объект.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.ПростаяТаблица Тогда
Объект.РедактироватьВСтроках.Очистить();
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПроверитьНаличиеПодПериодаВШапке(Знач Объект, Ошибки)
СтруктураПоиска = Новый Структура("ИмяИзмерения", "НомерПодПериода");
Если Объект.РедактироватьВШапке.НайтиСтроки(СтруктураПоиска).Количество() Тогда
ТекстОшибки = НСтр("ru = 'Номер периода должен редактироваться в строках или колонках'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"РедактироватьВШапке",
ТекстОшибки, "");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДоступностьКнопокДалееНазад(Форма)
Элементы = Форма.Элементы;
ТекущаяСтраница = Элементы.СтраницыВвода.ТекущаяСтраница;
Страницы = Элементы.СтраницыВвода.ПодчиненныеЭлементы;
ИндексТекущейСтраницы = Страницы.Индекс(ТекущаяСтраница);
ПерваяСтраница = ИндексТекущейСтраницы = 0;
ПоследняяСтраница = ИндексТекущейСтраницы = (Страницы.Количество() - 1);
ВыполненыПроверки = ВыполненыПроверкиШага(Форма);
Элементы.Далее.Доступность = Не ПоследняяСтраница И ВыполненыПроверки;
Элементы.Назад.Доступность = Не ПерваяСтраница;
Элементы.ЗаписатьИЗакрыть.Доступность = ВыполненыПроверки И Форма.РазрешеноИзменение;
Элементы.Далее.КнопкаПоУмолчанию = Не ПоследняяСтраница;
Элементы.ЗаписатьИЗакрыть.КнопкаПоУмолчанию = ПоследняяСтраница;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ВыполненыПроверкиШага(Форма)
ПроверкиВыполнены = Истина;
Объект = Форма.Объект;
Если Объект.ПоказателиШаблона.Количество() = 0 Тогда
ПроверкиВыполнены = Ложь;
КонецЕсли;
Возврат ПроверкиВыполнены;
КонецФункции
&НаСервере
Функция НаименованиеПоУмолчанию()
Результат = "";
Для Каждого СтрокаПоказателя Из Объект.ПоказателиШаблона Цикл
Результат = Результат + ?(ПустаяСтрока(Результат), "", ", ") + Строка(СтрокаПоказателя.Показатель);
КонецЦикла;
Если Объект.ПоказателиШаблона.Количество() = 1 Тогда
Наименование = НСтр("ru = 'Ввод показателя: %1'");
Иначе
Наименование = НСтр("ru = 'Ввод показателей: %1'");
КонецЕсли;
Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Наименование, Результат);
Возврат Наименование;
КонецФункции
&НаСервере
Функция СписокСовместимых()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НефинансовыеПоказателиБюджетов.Ссылка КАК Ссылка
|ИЗ
| Справочник.НефинансовыеПоказателиБюджетов КАК НефинансовыеПоказателиБюджетов
|ГДЕ
| НЕ НефинансовыеПоказателиБюджетов.ЭтоГруппа
| И (НефинансовыеПоказателиБюджетов.ПоСценариям
| ИЛИ НЕ НефинансовыеПоказателиБюджетов.ЗагружатьИзДругихПодсистем)";
Если Объект.ПоказателиШаблона.Количество() Тогда
ЭталонныйПоказатель = Объект.ПоказателиШаблона[0].Показатель;
ТребуемыеПоля = "ВидПоказателя, Периодичность, ПериодичностьПодпериодов,
|ПоОрганизациям, ПоПериодам, ПоПодразделениям,
|ПоСценариям, ЗагружатьИзДругихПодсистем,
|УстанавливатьЗначениеНаКаждыйПериод";
МаксимальноеКоличествоАналитик = БюджетированиеКлиентСервер.МаксимальноеКоличествоАналитик();
Для НомерАналитики = 1 По МаксимальноеКоличествоАналитик Цикл
ТребуемыеПоля = ТребуемыеПоля + ", ВидАналитики" + НомерАналитики;
КонецЦикла;
Поля = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭталонныйПоказатель, ТребуемыеПоля);
Запрос.Текст = Запрос.Текст + "
| И НефинансовыеПоказателиБюджетов.ВидПоказателя = &ВидПоказателя
| И &ТекстУсловиеВидыАналитик
| И НефинансовыеПоказателиБюджетов.Периодичность = &Периодичность
| И ВЫБОР
| КОГДА НефинансовыеПоказателиБюджетов.ПоПериодам
| ТОГДА НефинансовыеПоказателиБюджетов.ПериодичностьПодпериодов = &ПериодичностьПодпериодов
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И НефинансовыеПоказателиБюджетов.ПоОрганизациям = &ПоОрганизациям
| И НефинансовыеПоказателиБюджетов.ПоПериодам = &ПоПериодам
| И НефинансовыеПоказателиБюджетов.ПоПодразделениям = &ПоПодразделениям
| И НефинансовыеПоказателиБюджетов.ПоСценариям = &ПоСценариям
| И НефинансовыеПоказателиБюджетов.ЗагружатьИзДругихПодсистем = &ЗагружатьИзДругихПодсистем
| И НефинансовыеПоказателиБюджетов.УстанавливатьЗначениеНаКаждыйПериод = &УстанавливатьЗначениеНаКаждыйПериод
| И Не НефинансовыеПоказателиБюджетов.Ссылка В (&Ссылка)";
ТекстУсловиеВидыАналитик = "";
Для НомерАналитики = 1 По МаксимальноеКоличествоАналитик Цикл
ТекстУсловиеВидыАналитик = ТекстУсловиеВидыАналитик
+ ?(ТекстУсловиеВидыАналитик = "", "", Символы.ПС + Символы.Таб + "И ")
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
" НефинансовыеПоказателиБюджетов.ВидАналитики%1 = &ВидАналитики%1",
НомерАналитики);
КонецЦикла;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстУсловиеВидыАналитик", ТекстУсловиеВидыАналитик);
Для Каждого КлючИЗначение Из Поля Цикл
Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
Список = Новый СписокЗначений;
Для Каждого СтрокаПоказателя Из Объект.ПоказателиШаблона Цикл
Список.Добавить(СтрокаПоказателя.Показатель);
КонецЦикла;
Запрос.УстановитьПараметр("Ссылка", Список);
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Список = Новый СписокЗначений;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Список.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
Возврат Список;
КонецФункции
&НаСервере
Процедура УправлениеФормой()
РазрешеноИзменение = НЕ Элементы.ВсеВШапке.ТолькоПросмотр;
Элементы.ДеревоПоказателей.ТолькоПросмотр = НЕ РазрешеноИзменение;
Элементы.ПоказателиШаблона.ТолькоПросмотр = НЕ РазрешеноИзменение;
Элементы.ПоложениеПоказателей.ТолькоПросмотр = НЕ РазрешеноИзменение;
Элементы.РедактироватьВШапке.ТолькоПросмотр = НЕ РазрешеноИзменение;
Элементы.РедактироватьВСтроках.ТолькоПросмотр = НЕ РазрешеноИзменение;
Элементы.ДеревоКолонок.ТолькоПросмотр = НЕ РазрешеноИзменение;
Элементы.ТаблицаЗаполнения.ТолькоПросмотр = НЕ РазрешеноИзменение;
Элементы.ЗаписатьИЗакрыть.Доступность = РазрешеноИзменение;
Элементы.ПеренестиВправоШаг1.Доступность = РазрешеноИзменение;
Элементы.ПеренестиВправоШаг3.Доступность = РазрешеноИзменение;
Элементы.ПеренестиВлевоШаг1.Доступность = РазрешеноИзменение;
Элементы.ПеренестиВлевоШаг3.Доступность = РазрешеноИзменение;
Элементы.Наименование.СписокВыбора.Очистить();
Элементы.Наименование.СписокВыбора.Добавить(НаименованиеПоУмолчанию());
СписокСовместимых = СписокСовместимых();
ОтборыСписковКлиентСервер.УдалитьЭлементОтбораСписка(ДеревоПоказателей, "Ссылка");
ЭлементыУсловногоОформления = ЭтаФорма.УсловноеОформление.Элементы;
УсловноеОформлениеКУдалению = Новый Массив;
Для Каждого ЭлементУО Из ЭлементыУсловногоОформления Цикл
Если СтрНайти(ЭлементУО.Представление, "ДобавленноеУОДереваПоказателей") Тогда
УсловноеОформлениеКУдалению.Добавить(ЭлементУО);
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементУО Из УсловноеОформлениеКУдалению Цикл
УсловноеОформление.Элементы.Удалить(ЭлементУО);
КонецЦикла;
Если Элементы.ТолькоСовместимые.Пометка Тогда
ОтборыСписковКлиентСервер.УстановитьЭлементОтбораСписка(ДеревоПоказателей,
"Ссылка",
СписокСовместимых,
ВидСравненияКомпоновкиДанных.ВСписке);
Иначе
Элемент = ЭлементыУсловногоОформления.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоПоказателей.Ссылка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = СписокСовместимых;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоПоказателей.ЭтоГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
ОформляемоеПоле = Элемент.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоПоказателейНаименование");
Элемент.Использование = Истина;
Элемент.Представление = "ДобавленноеУОДереваПоказателей";
КонецЕсли;
Если Элементы.ИерархическийПросмотр.Пометка Тогда
Элементы.ДеревоПоказателей.Отображение = ОтображениеТаблицы.Дерево;
Иначе
Элементы.ДеревоПоказателей.Отображение = ОтображениеТаблицы.Список;
КонецЕсли;
ПоПериодам = Ложь;
Если Объект.ПоказателиШаблона.Количество() Тогда
ПоПериодам = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ПоказателиШаблона[0].Показатель, "ПоПериодам");
Элементы.ПоложениеПоказателей.Доступность = Не ПоПериодам;
КонецЕсли;
Элементы.ПоложениеПоказателей.Видимость = Не ПоПериодам;
Если Объект.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.ПростаяТаблица Тогда
Элементы.ПоложениеПоказателей.Доступность = Истина;
Иначе
Элементы.ПоложениеПоказателей.Доступность = Ложь;
КонецЕсли;
Если Объект.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.ПростаяТаблица Тогда
Элементы.СтраницыТабличнойЧасти.ТекущаяСтраница = Элементы.ТабличнаяЧастьПростаяТаблица;
ИначеЕсли Объект.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.СложнаяТаблица Тогда
Элементы.СтраницыТабличнойЧасти.ТекущаяСтраница = Элементы.ТабличнаяЧастьСложнаяТаблица;
Иначе
Элементы.СтраницыТабличнойЧасти.ТекущаяСтраница = Элементы.НетТаблицы;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДобавитьЭлементНаСервере(СсылкаНаЭлемент, Ошибка)
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаЭлемент, "ЭтоГруппа, Ссылка, ПоПериодам");
Если Реквизиты.ЭтоГруппа Тогда
Ошибка = НСтр("ru = 'Группы не могут быть выбраны в шаблоне'");
Возврат Ложь;
КонецЕсли;
СтруктураПоиска = Новый Структура("Показатель", Реквизиты.Ссылка);
Если Объект.ПоказателиШаблона.НайтиСтроки(СтруктураПоиска).Количество() Тогда
Возврат Истина;
КонецЕсли;
Список = СписокСовместимых();
Если Список.НайтиПоЗначению(СсылкаНаЭлемент) = Неопределено Тогда
Ошибка = НСтр("ru = 'Элемент не может быть выбран'");
Возврат Ложь;
КонецЕсли;
НоваяСтрока = Объект.ПоказателиШаблона.Добавить();
НоваяСтрока.Показатель = Реквизиты.Ссылка;
Если Реквизиты.ПоПериодам Тогда
ПоказателиВТабличнойЧасти = Истина;
КонецЕсли;
УправлениеФормой();
ДоступностьКнопокДалееНазад(ЭтотОбъект);
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ДобавитьВВыбранныеПоказатели(ВыбраннаяСтрока)
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Ошибка = "";
Если Не ДобавитьЭлементНаСервере(ВыбраннаяСтрока, Ошибка) Тогда
ПоказатьПредупреждение(, Ошибка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСписокЗаполнений()
Для Каждого СтрокаПоказателя Из Объект.ПоказателиШаблона Цикл
СтруктураПоиска = Новый Структура("Показатель", СтрокаПоказателя.Показатель);
Если ТаблицаЗаполнения.НайтиСтроки(СтруктураПоиска).Количество() Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = ТаблицаЗаполнения.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаПоказателя);
НоваяСтрока.СхемаКомпоновкиДанных = "НеЗаполнять";
НоваяСтрока.Картинка = БиблиотекаКартинок.КонструкторНастроекКомпоновкиДанных;
НоваяСтрока.Настроить = НСтр("ru = 'Настроить'");
КонецЦикла;
КУдалению = Новый Массив;
Для Каждого СтрокаПоказателя Из ТаблицаЗаполнения Цикл
СтруктураПоиска = Новый Структура("Показатель", СтрокаПоказателя.Показатель);
Если Объект.ПоказателиШаблона.НайтиСтроки(СтруктураПоиска).Количество() Тогда
Продолжить;
КонецЕсли;
КУдалению.Добавить(СтрокаПоказателя);
КонецЦикла;
Для Каждого Удалить Из КУдалению Цикл
ТаблицаЗаполнения.Удалить(Удалить);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОтразитьРасположениеПолейВДанныхОбъекта(ОбъектПомещения = Неопределено)
Если ОбъектПомещения = Неопределено Тогда
ОбъектПомещения = Объект;
КонецЕсли;
Если ОбъектПомещения.ТипФормыВводаПоказателей <> Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.СложнаяТаблица Тогда
Реквизиты = РеквизитыПоказателяШаблона();
КонецЕсли;
Если ОбъектПомещения.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.ПростаяТаблица Тогда
ОбъектПомещения.РедактироватьВКолонках.Очистить();
Если ОбъектПомещения.ПоказателиВТабличнойЧасти Тогда
Если Реквизиты.УстанавливатьЗначениеНаКаждыйПериод Тогда
ОбъектПомещения.РедактироватьВКолонках.Добавить().ИмяИзмерения = "Период";
КонецЕсли;
КонецЕсли;
Если Реквизиты.ПоПериодам Тогда
ОбъектПомещения.РедактироватьВСтроках.Добавить().ИмяИзмерения = "НомерПодПериода";
КонецЕсли;
Возврат;
КонецЕсли;
ОбъектПомещения.РедактироватьВКолонках.Очистить();
ОбъектПомещения.РедактироватьВСтроках.Очистить();
Если ОбъектПомещения.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.ВсеВШапке Тогда
Если Реквизиты.ПоПериодам Тогда
ОбъектПомещения.РедактироватьВСтроках.Добавить().ИмяИзмерения = "НомерПодПериода";
КонецЕсли;
Возврат;
КонецЕсли;
Строки = ФинансоваяОтчетностьСервер.ПодчиненныйЭлемент(ДеревоКолонок, "ИмяИзмерения", "Строки");
МассивСтрок = Новый Массив;
ТочкаОтсчета = Строки.ПолучитьЭлементы();
Пока ТочкаОтсчета.Количество() Цикл
МассивСтрок.Добавить(ТочкаОтсчета[0]);
ТочкаОтсчета = ТочкаОтсчета[0].ПолучитьЭлементы();
КонецЦикла;
Колонки = ФинансоваяОтчетностьСервер.ПодчиненныйЭлемент(ДеревоКолонок, "ИмяИзмерения", "Колонки");
МассивКолонок = Новый Массив;
ТочкаОтсчета = Колонки.ПолучитьЭлементы();
Пока ТочкаОтсчета.Количество() Цикл
МассивКолонок.Добавить(ТочкаОтсчета[0]);
ТочкаОтсчета = ТочкаОтсчета[0].ПолучитьЭлементы();
КонецЦикла;
Для Каждого Строка Из МассивСтрок Цикл
ЗаполнитьЗначенияСвойств(ОбъектПомещения.РедактироватьВСтроках.Добавить(), Строка);
КонецЦикла;
Для Каждого Колонка Из МассивКолонок Цикл
ЗаполнитьЗначенияСвойств(ОбъектПомещения.РедактироватьВКолонках.Добавить(), Колонка);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьГиперссылкуЗначения(СтрокаТаблицы)
Если СтрокаТаблицы.ИмяИзмерения = "Период"
ИЛИ СтрокаТаблицы.ИмяИзмерения = "НомерПодПериода" Тогда
СтрокаТаблицы.Значения = "";
Возврат;
КонецЕсли;
СтруктураПоискаЗначений = Новый Структура("Аналитика, ИмяИзмерения");
ЗаполнитьЗначенияСвойств(СтруктураПоискаЗначений, СтрокаТаблицы);
Элементов = Объект.ЗначенияСложнойТаблицыПоУмолчанию.НайтиСтроки(СтруктураПоискаЗначений);
Если Элементов.Количество() Тогда
ТекстЯчейки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'По-умолчанию (%1)'"),
Элементов.Количество());
Иначе
ТекстЯчейки = НСтр("ru = 'Выбрать'");
КонецЕсли;
СтрокаТаблицы.Значения = ТекстЯчейки;
КонецПроцедуры
&НаСервере
Процедура УстановитьГиперссылкиЗначенийВДобавленныхСтроках(Массив)
Для Каждого Значение Из Массив Цикл
УстановитьГиперссылкуЗначения(ДеревоКолонок.НайтиПоИдентификатору(Значение));
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВосстановитьДеревоПоПолям()
Строки = ФинансоваяОтчетностьСервер.ПодчиненныйЭлемент(ДеревоКолонок, "ИмяИзмерения", "Строки");
Куда = Строки.ПолучитьЭлементы();
Куда.Очистить();
Для Каждого Строка Из Объект.РедактироватьВСтроках Цикл
НоваяСтрока = Куда.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Если НЕ ЗначениеЗаполнено(НоваяСтрока.Аналитика) Тогда
НоваяСтрока.Представление = БюджетнаяОтчетностьКлиентСервер.ПредставлениеИзмеренияБюджетирования(НоваяСтрока.ИмяИзмерения);
КонецЕсли;
НоваяСтрока.ИндексКартинки = 30;
УстановитьГиперссылкуЗначения(НоваяСтрока);
Куда = НоваяСтрока.ПолучитьЭлементы();
КонецЦикла;
Колонки = ФинансоваяОтчетностьСервер.ПодчиненныйЭлемент(ДеревоКолонок, "ИмяИзмерения", "Колонки");
Куда = Колонки.ПолучитьЭлементы();
Куда.Очистить();
Для Каждого Строка Из Объект.РедактироватьВКолонках Цикл
НоваяСтрока = Куда.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Если НЕ ЗначениеЗаполнено(НоваяСтрока.Аналитика) Тогда
НоваяСтрока.Представление = БюджетнаяОтчетностьКлиентСервер.ПредставлениеИзмеренияБюджетирования(НоваяСтрока.ИмяИзмерения);
КонецЕсли;
НоваяСтрока.ИндексКартинки = 30;
УстановитьГиперссылкуЗначения(НоваяСтрока);
Куда = НоваяСтрока.ПолучитьЭлементы();
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция РеквизитыПоказателяШаблона()
ЭталонныйПоказатель = Объект.ПоказателиШаблона[0].Показатель;
ТребуемыеПоля = "ВидПоказателя, ПоОрганизациям, ПоПериодам, ПоПодразделениям,
|ПоСценариям, УстанавливатьЗначениеНаКаждыйПериод";
МаксимальноеКоличествоАналитик = БюджетированиеКлиентСервер.МаксимальноеКоличествоАналитик();
Для НомерАналитики = 1 По МаксимальноеКоличествоАналитик Цикл
ТребуемыеПоля = ТребуемыеПоля + ", ВидАналитики" + НомерАналитики;
КонецЦикла;
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭталонныйПоказатель, ТребуемыеПоля);
Возврат Реквизиты;
КонецФункции
&НаСервере
Процедура ОбновитьСписокДоступныхПолей()
ДоступныеПоля = Объект.РедактироватьВШапке.Выгрузить(Новый Массив);
Если Объект.ПоказателиШаблона.Количество() Тогда
Реквизиты = РеквизитыПоказателяШаблона();
Если Объект.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.СложнаяТаблица Тогда
Если Реквизиты.УстанавливатьЗначениеНаКаждыйПериод Тогда
ДоступныеПоля.Добавить().ИмяИзмерения = "Период";
КонецЕсли;
Если Реквизиты.ПоПериодам Тогда
ДоступныеПоля.Добавить().ИмяИзмерения = "НомерПодПериода";
КонецЕсли;
КонецЕсли;
Если Реквизиты.ПоОрганизациям Тогда
ДоступныеПоля.Добавить().ИмяИзмерения = "Организация";
КонецЕсли;
Если Реквизиты.ПоПодразделениям Тогда
ДоступныеПоля.Добавить().ИмяИзмерения = "Подразделение";
КонецЕсли;
Если Реквизиты.ПоСценариям Тогда
ДоступныеПоля.Добавить().ИмяИзмерения = "Сценарий";
КонецЕсли;
МаксимальноеКоличествоАналитик = БюджетированиеКлиентСервер.МаксимальноеКоличествоАналитик();
Для НомерАналитики = 1 По МаксимальноеКоличествоАналитик Цикл
Если ЗначениеЗаполнено(Реквизиты["ВидАналитики" + НомерАналитики]) Тогда
НоваяСтрока = ДоступныеПоля.Добавить();
НоваяСтрока.ИмяИзмерения = "Аналитика";
НоваяСтрока.Аналитика = Реквизиты["ВидАналитики" + НомерАналитики];
КонецЕсли;
КонецЦикла;
КонецЕсли;
ГдеИскать = Новый Структура("Шапка", Объект.РедактироватьВШапке);
Если ОтразитьИзмененияДерева = Истина Тогда
ОтразитьИзмененияДерева = Ложь;
ОтразитьРасположениеПолейВДанныхОбъекта();
КонецЕсли;
Если Объект.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.СложнаяТаблица Тогда
ГдеИскать.Вставить("Строки", Объект.РедактироватьВСтроках);
ГдеИскать.Вставить("Колонки", Объект.РедактироватьВКолонках);
ИначеЕсли Объект.ТипФормыВводаПоказателей = Перечисления.ТипыФормШаблоновНефинансовыхПоказателей.ПростаяТаблица Тогда
ГдеИскать.Вставить("Строки", Объект.РедактироватьВСтроках);
КонецЕсли;
СтруктураПоиска = Новый Структура("ИмяИзмерения, Аналитика");
Для Каждого ДоступноеПоле Из ДоступныеПоля Цикл
Найдено = Ложь;
Для Каждого КлючИЗначение Из ГдеИскать Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ДоступноеПоле);
Строка = КлючИЗначение.Значение.НайтиСтроки(СтруктураПоиска);
Если Строка.Количество() Тогда
Найдено = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не Найдено Тогда
ЗаполнитьЗначенияСвойств(Объект.РедактироватьВШапке.Добавить(), ДоступноеПоле);
КонецЕсли;
КонецЦикла;
Для Каждого КлючИЗначение Из ГдеИскать Цикл
КУдалению = Новый Массив;
Для Каждого Строка Из КлючИЗначение.Значение Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, Строка);
Если Не ДоступныеПоля.НайтиСтроки(СтруктураПоиска).Количество() Тогда
КУдалению.Добавить(Строка);
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из КУдалению Цикл
КлючИЗначение.Значение.Удалить(Строка);
КонецЦикла;
КонецЦикла;
ВосстановитьДеревоПоПолям();
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиВТаблицу(ЭлементКуда, ПараметрыПеретаскивания, СтандартнаяОбработка = Ложь)
СтандартнаяОбработка = Ложь;
Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена Тогда
Возврат;
КонецЕсли;
Для Каждого Значение Из ПараметрыПеретаскивания.Значение Цикл
Если ТипЗнч(Значение) = Тип("Число") Тогда
Строка = Объект[ЭлементКуда.Имя].НайтиПоИдентификатору(Значение);
Иначе
Строка = Значение;
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект[ЭлементКуда.Имя].Добавить(), Строка);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиИзТаблицы(ЭлементОткуда, ПараметрыПеретаскивания, СтандартнаяОбработка = Ложь)
СтандартнаяОбработка = Ложь;
Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена Тогда
Возврат;
КонецЕсли;
Для Каждого Значение Из ПараметрыПеретаскивания.Значение Цикл
Объект[ЭлементОткуда.Имя].Удалить(Значение);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиВДерево(ПараметрыПеретаскивания, СтандартнаяОбработка, Строка)
СтандартнаяОбработка = Ложь;
Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена Тогда
Возврат;
КонецЕсли;
Если Строка = Неопределено Тогда
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
Возврат;
КонецЕсли;
СтрокаДерева = ДеревоКолонок.НайтиПоИдентификатору(Строка);
Куда = СтрокаДерева.ПолучитьЭлементы();
СтрокаДобавления = СтрокаДерева;
Пока Куда.Количество() Цикл
СтрокаДобавления = Куда[0];
Куда = Куда[0].ПолучитьЭлементы();
КонецЦикла;
ДобавленныеСтроки = Новый Массив;
Для Каждого Значение Из ПараметрыПеретаскивания.Значение Цикл
Если ТипЗнч(Значение) = Тип("Число") Тогда
Строка = ДеревоКолонок.НайтиПоИдентификатору(Значение);
ТочкаОтсчета = СтрокаДобавления;
Пока ТочкаОтсчета <> Неопределено Цикл
Если Строка.ПолучитьИдентификатор() =
ТочкаОтсчета.ПолучитьИдентификатор() Тогда
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
Возврат;
КонецЕсли;
ТочкаОтсчета = ТочкаОтсчета.ПолучитьРодителя();
КонецЦикла;
Иначе
Строка = Значение;
КонецЕсли;
НоваяСтрока = Куда.Добавить();
ДобавленныеСтроки.Добавить(НоваяСтрока.ПолучитьИдентификатор());
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Если НЕ ЗначениеЗаполнено(НоваяСтрока.Аналитика) Тогда
НоваяСтрока.Представление = БюджетнаяОтчетностьКлиентСервер.ПредставлениеИзмеренияБюджетирования(
НоваяСтрока.ИмяИзмерения);
КонецЕсли;
НоваяСтрока.ИндексКартинки = 30;
Куда = НоваяСтрока.ПолучитьЭлементы();
КонецЦикла;
Родитель = НоваяСтрока.ПолучитьРодителя();
Пока Родитель <> Неопределено Цикл
Элементы.ДеревоКолонок.Развернуть(Родитель.ПолучитьИдентификатор());
Родитель = Родитель.ПолучитьРодителя();
КонецЦикла;
Элементы.ДеревоКолонок.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
УстановитьГиперссылкиЗначенийВДобавленныхСтроках(ДобавленныеСтроки);
ОтразитьИзмененияДерева = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиИзДерева(ПараметрыПеретаскивания, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена Тогда
Возврат;
КонецЕсли;
Для Каждого Значение Из ПараметрыПеретаскивания.Значение Цикл
Родитель = Значение.ПолучитьРодителя();
Если Родитель = Неопределено Тогда
Продолжить;
КонецЕсли;
КоллекцияЗначения = Родитель.ПолучитьЭлементы();
КоллекцияЗначения.Удалить(Значение);
ОтразитьИзмененияДерева = Истина;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ИзменениеЗначенийПоУмолчанию(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Строка = Элементы.ДеревоКолонок.ТекущаяСтрока;
Строка = ДеревоКолонок.НайтиПоИдентификатору(Строка);
СтруктураПоискаЗначений = Новый Структура("Аналитика, ИмяИзмерения");
ЗаполнитьЗначенияСвойств(СтруктураПоискаЗначений, Строка);
ЭлементыПоУмолчанию = Объект.ЗначенияСложнойТаблицыПоУмолчанию.НайтиСтроки(СтруктураПоискаЗначений);
Для Каждого Элемент Из ЭлементыПоУмолчанию Цикл
Объект.ЗначенияСложнойТаблицыПоУмолчанию.Удалить(Элемент);
КонецЦикла;
СтруктураПоискаЗначений.Вставить("Значение");
Для Каждого Элемент Из Результат Цикл
СтруктураПоискаЗначений.Значение = Элемент;
Если Объект.ЗначенияСложнойТаблицыПоУмолчанию.НайтиСтроки(СтруктураПоискаЗначений).Количество() Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Объект.ЗначенияСложнойТаблицыПоУмолчанию.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
НоваяСтрока.Значение = Элемент;
КонецЦикла;
Если Результат.Количество() Тогда
Строка.Значения = НСтр("ru = 'По-умолчанию (%1)'");
Строка.Значения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Строка.Значения,
Результат.Количество());
Иначе
Строка.Значения = НСтр("ru = 'Выбрать'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПараметрыПеретаскивания(Значение)
Результат = Новый Структура;
Результат.Вставить("Действие", ДействиеПеретаскивания.Перемещение);
ЗначениеРезультат = Новый Массив;
ЗначениеРезультат.Добавить(Значение);
Результат.Вставить("Значение", ЗначениеРезультат);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ПриИзмененииКомпоновкиДанных(АдресХранилищаНастройкиКомпоновщика, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресХранилищаНастройкиКомпоновщика) Тогда
Адреса = ДополнительныеПараметры.Адреса;
ТекущиеДанные = ТаблицаЗаполнения.НайтиПоИдентификатору(ДополнительныеПараметры.ИндексСтроки);
РезультатОтражения =
БюджетированиеВызовСервера.ПрименитьИзмененияКСхемеКомпоновкиДанных(ТекущиеДанные.СхемаКомпоновкиДанных,
Адреса.СхемаКомпоновкиДанных,
АдресХранилищаНастройкиКомпоновщика,
Истина,
УникальныйИдентификатор);
ТекущиеДанные.СхемаКомпоновкиДанных = РезультатОтражения.СхемаКомпоновкиДанных;
ТекущиеДанные.ХранилищеСхемыКомпоновкиДанных = РезультатОтражения.ХранилищеСхемыКомпоновкиДанных;
ТекущиеДанные.ХранилищеНастроекКомпоновкиДанных = РезультатОтражения.ХранилищеНастроекКомпоновкиДанных;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СтруктураОписанияШаблона()
СтруктураОписания = Новый Структура;
Для Каждого Реквизит Из Метаданные.Справочники.ШаблоныВводаНефинансовыхПоказателей.Реквизиты Цикл
СтруктураОписания.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]);
КонецЦикла;
Для Каждого Реквизит Из Метаданные.Справочники.ШаблоныВводаНефинансовыхПоказателей.ТабличныеЧасти Цикл
СтруктураОписания.Вставить(Реквизит.Имя, Объект[Реквизит.Имя].Выгрузить());
КонецЦикла;
Возврат ПоместитьВоВременноеХранилище(СтруктураОписания, УникальныйИдентификатор);
КонецФункции
#КонецОбласти