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