#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
Результат = Новый Массив;
Результат.Добавить("УчетДоходов");
Результат.Добавить("УчетЗатрат");
Результат.Добавить("ДопускаетсяОбособлениеСверхПотребности");
Результат.Добавить("УчетРасчетовСПоставщиками");
Результат.Добавить("УчетВнеоборотныхАктивов");
Результат.Добавить("УчетДенежныхСредств;ГруппаУчетДС");
Результат.Добавить("НалогообложениеНДС;НалогообложениеНДС");
Результат.Добавить("НалогообложениеНДСОпределяетсяВДокументе;РежимНалогообложенияОпределяетсяЗначением,РежимНалогообложенияОпределяетсяВДокументе");
Результат.Добавить("ИсполнениеГосударственныхКонтрактов");
НаправленияДеятельностиЛокализация.ДополнитьБлокируемыеРеквизитыОбъекта(Результат);
Возврат Результат;
КонецФункции
Функция ИспользуетсяУчетПоНаправлениям() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетРасчетовСПоставщикамиПоНаправлениямДеятельности")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДСпоНаправлениямДеятельностиРаздельно")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДСпоНаправлениямДеятельностиПоКорреспонденции");
КонецФункции
Функция ПараметрыЗаполненияНалогообложениеНДСПродажи() Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
ПараметрыЗаполнения.Дата = ТекущаяДатаСеанса();
ПараметрыЗаполнения.РеализацияТоваров = Истина;
ПараметрыЗаполнения.РеализацияРаботУслуг = Истина;
ПараметрыЗаполнения.ЭтоЗаказ = Истина;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
Если Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы Тогда
СтрокаОтбора = " И НаправленияДеятельности.Статус = &Статус";
ИначеЕсли Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда
СтрокаОтбора = " И НаправленияДеятельности.ЭтоГруппа";
Иначе
СтрокаОтбора = " И (НаправленияДеятельности.Статус = &Статус ИЛИ НаправленияДеятельности.ЭтоГруппа)";
КонецЕсли;
Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыНаправленияДеятельности.Используется);
Если Параметры.Свойство("Отбор") Тогда
Если Параметры.Отбор.Свойство("УчетЗатратИлиРасчетовСПоставщиками") И Параметры.Отбор.УчетЗатратИлиРасчетовСПоставщиками Тогда
СтрокаОтбора = СтрокаОтбора + " И (НаправленияДеятельности.УчетЗатрат = ИСТИНА
|ИЛИ НаправленияДеятельности.УчетРасчетовСПоставщиками = ИСТИНА)";
КонецЕсли;
Если Параметры.Отбор.Свойство("УчетЗатратИлиРасчетовСКлиентами")
И Параметры.Отбор.УчетЗатратИлиРасчетовСКлиентами Тогда
СтрокаОтбора = СтрокаОтбора + " И (НаправленияДеятельности.УчетЗатрат = ИСТИНА
|ИЛИ НаправленияДеятельности.УчетДоходов = ИСТИНА)";
КонецЕсли;
Если Параметры.Отбор.Свойство("ТипНаправленияДеятельности") Тогда
СтрокаОтбора = СтрокаОтбора + " И НаправленияДеятельности.ТипНаправленияДеятельности В (&ТипНаправленияДеятельности)";
Запрос.УстановитьПараметр("ТипНаправленияДеятельности", Параметры.Отбор.ТипНаправленияДеятельности);
КонецЕсли;
МетаРеквизиты = Метаданные.Справочники.НаправленияДеятельности.Реквизиты;
ТипБулево = Тип("Булево");
Для Каждого КлючИЗначение Из Параметры.Отбор Цикл
Если ТипЗнч(КлючИЗначение.Значение) = ТипБулево Тогда
МетаРеквизит = МетаРеквизиты.Найти(КлючИЗначение.Ключ);
Если МетаРеквизит <> Неопределено И МетаРеквизит.Тип.СодержитТип(ТипБулево) Тогда
СтрокаОтбора = СтрокаОтбора + "
| И НаправленияДеятельности." + КлючИЗначение.Ключ + " = " + ?(КлючИЗначение.Значение, "ИСТИНА", "ЛОЖЬ") + "
|";
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Параметры.Свойство("Ссылка") Тогда
Если ТипЗнч(Параметры.Ссылка) = Тип("СправочникСсылка.ДоговорыКонтрагентов")
И Параметры.Свойство("ТипДоговора") Тогда
Если Параметры.ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем
ИЛИ Параметры.ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером Тогда
СтрокаОтбора = СтрокаОтбора + " И НаправленияДеятельности.УчетДоходов = ИСТИНА";
ИначеЕсли Параметры.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком
ИЛИ Параметры.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентом
ИЛИ Параметры.ТипДоговора = Перечисления.ТипыДоговоров.Импорт
ИЛИ Параметры.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС
ИЛИ Параметры.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком
ИЛИ Параметры.ТипДоговора = Перечисления.ТипыДоговоров.СПоклажедателем Тогда
СтрокаОтбора = СтрокаОтбора + " И (НаправленияДеятельности.УчетЗатрат = ИСТИНА
|ИЛИ НаправленияДеятельности.УчетРасчетовСПоставщиками = ИСТИНА)";
Иначе
СтрокаОтбора = СтрокаОтбора + " И НаправленияДеятельности.УчетЗатрат = ИСТИНА";
КонецЕсли;
ИначеЕсли ТипЗнч(Параметры.Ссылка) = Тип("ДокументСсылка.ВозвратТоваровМеждуОрганизациями")
ИЛИ ТипЗнч(Параметры.Ссылка) = Тип("ДокументСсылка.ДвижениеПрочихАктивовПассивов")
ИЛИ ТипЗнч(Параметры.Ссылка) = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациями")
ИЛИ ТипЗнч(Параметры.Ссылка) = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациямиОСписании")
ИЛИ ТипЗнч(Параметры.Ссылка) = Тип("ДокументСсылка.ПередачаТоваровМеждуОрганизациями")
ИЛИ ТипЗнч(Параметры.Ссылка) = Тип("ДокументСсылка.ПересортицаТоваров")
ИЛИ ТипЗнч(Параметры.Ссылка) = Тип("ДокументСсылка.ПрочиеДоходыРасходы")
ИЛИ ТипЗнч(Параметры.Ссылка) = Тип("СправочникСсылка.ДоговорыМеждуОрганизациями") Тогда
СтрокаОтбора = СтрокаОтбора + " И (НаправленияДеятельности.УчетДоходов = ИСТИНА
| ИЛИ НаправленияДеятельности.УчетЗатрат = ИСТИНА
| ИЛИ НаправленияДеятельности.УчетРасчетовСПоставщиками = ИСТИНА)";
КонецЕсли;
КонецЕсли;
СтрокаПоиска = ?(Параметры.СтрокаПоиска = Неопределено, "", Параметры.СтрокаПоиска);
Запрос.УстановитьПараметр("СтрокаВвода", ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе(СтрокаПоиска) + "%" );
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 50
| НаправленияДеятельности.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(НаправленияДеятельности.Ссылка) КАК Представление,
| НаправленияДеятельности.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Справочник.НаправленияДеятельности КАК НаправленияДеятельности
|ГДЕ
| НаправленияДеятельности.Наименование ПОДОБНО &СтрокаВвода СПЕЦСИМВОЛ ""~""" + СтрокаОтбора;
Выборка = Запрос.Выполнить().Выбрать();
ДанныеВыбора = Новый СписокЗначений;
Пока Выборка.Следующий() Цикл
ТекстПредставление = Выборка.Представление;
Если Выборка.ПометкаУдаления Тогда
СтруктураЗначение = Новый Структура("Значение, ПометкаУдаления", Выборка.Ссылка, Выборка.ПометкаУдаления);
ДанныеВыбора.Добавить(СтруктураЗначение, ТекстПредставление,, БиблиотекаКартинок.ПомеченныйНаУдалениеЭлемент);
Иначе
ДанныеВыбора.Добавить(Выборка.Ссылка, ТекстПредставление);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Назначения
Функция ШаблонНазначения(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Если Объект.УчетЗатрат Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.Ссылка;
КонецЕсли;
Возврат ШаблонНазначения;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли