Направления деятельности / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

// Возвращает имена блокируемых реквизитов для механизма блокирования реквизитов БСП.
//
// Возвращаемое значение:
//  Массив - имена блокируемых реквизитов.
//
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
	
	Результат = Новый Массив;
	Результат.Добавить("УчетДоходов");
	Результат.Добавить("УчетЗатрат");
	Результат.Добавить("ДопускаетсяОбособлениеСверхПотребности");
	Результат.Добавить("УчетРасчетовСПоставщиками");
	Результат.Добавить("УчетВнеоборотныхАктивов");
	Результат.Добавить("УчетДенежныхСредств;ГруппаУчетДС");
	Результат.Добавить("НалогообложениеНДС;НалогообложениеНДС");
	Результат.Добавить("НалогообложениеНДСОпределяетсяВДокументе;РежимНалогообложенияОпределяетсяЗначением,РежимНалогообложенияОпределяетсяВДокументе");
	Результат.Добавить("ИсполнениеГосударственныхКонтрактов");
	
	НаправленияДеятельностиЛокализация.ДополнитьБлокируемыеРеквизитыОбъекта(Результат);
	
	Возврат Результат;
	
КонецФункции

// Возвращеат признак ведения учета по направлениям деятельности
//
// 
// Возвращаемое значение:
//  Булево - Используется учет по направлениям
//
Функция ИспользуетсяУчетПоНаправлениям() Экспорт
	Возврат ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности")
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетРасчетовСПоставщикамиПоНаправлениямДеятельности")
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности")
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДСпоНаправлениямДеятельностиРаздельно")
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДСпоНаправлениямДеятельностиПоКорреспонденции");
КонецФункции

// Возвращает параметры заполнения реквизита НалогообложениеНДСПродажи
//
// 
// Возвращаемое значение:
//  См. УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи
//
Функция ПараметрыЗаполненияНалогообложениеНДСПродажи() Экспорт
	
	ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
	
	ПараметрыЗаполнения.Дата = ТекущаяДатаСеанса();
	ПараметрыЗаполнения.РеализацияТоваров = Истина;
	ПараметрыЗаполнения.РеализацияРаботУслуг = Истина;
	ПараметрыЗаполнения.ЭтоЗаказ = Истина;
	
	Возврат ПараметрыЗаполнения;
	
КонецФункции

#КонецОбласти

#Область ОбработчикиСобытий

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область Назначения

// Возвращает шаблон для генерации назначения товаров в документе.
//
// Параметры:
// 	Объект - СправочникОбъект.НаправленияДеятельности, ДанныеФормыСтруктура - направление деятельности, по которому необходимо получить шаблон назначения.
//
// Возвращаемое значение:
// 	См. Справочники.Назначения.ШаблонНового
//
Функция ШаблонНазначения(Объект) Экспорт
	
	ШаблонНазначения = Справочники.Назначения.ШаблонНового();
	
	Если Объект.УчетЗатрат Тогда
		
		ШаблонНазначения.НаправлениеДеятельности = Объект.Ссылка;
		
	КонецЕсли;
	
	Возврат ШаблонНазначения;
	
КонецФункции

#КонецОбласти

#КонецОбласти

#КонецЕсли

Связанные материалы