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