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