Статьи движения денежных средств / Модуль менеджера

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

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

// Получает статью движения денежных средств для выбранной хозяйственной операции.
//
// Параметры:
//	ХозяйственнаяОперация - ПеречислениеСсылка.ХозяйственныеОперации - Хозяйственная операция документа.
//
// Возвращаемое значение:
// 	СправочникСсылка.СтатьиДвиженияДенежныхСредств - Найденная статья ДДС.
//
Функция СтатьяДвиженияДенежныхСредствПоХозяйственнойОперации(ХозяйственнаяОперация) Экспорт
	
	Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 2
		|	СтатьиДвиженияДенежныхСредств.Ссылка КАК СтатьяДвиженияДенежныхСредств
		|ИЗ
		|	Справочник.СтатьиДвиженияДенежныхСредств.ХозяйственныеОперации КАК СтатьиДвиженияДенежныхСредствХозяйственныеОперации
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтатьиДвиженияДенежныхСредств КАК СтатьиДвиженияДенежныхСредств
		|		ПО СтатьиДвиженияДенежныхСредствХозяйственныеОперации.Ссылка = СтатьиДвиженияДенежныхСредств.Ссылка
		|			И (НЕ СтатьиДвиженияДенежныхСредств.ПометкаУдаления)
		|			И (СтатьиДвиженияДенежныхСредствХозяйственныеОперации.ХозяйственнаяОперация = &ХозяйственнаяОперация)");
	
	Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперация);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Если РезультатЗапроса.Пустой() Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Если Выборка.Количество() = 1 Тогда
		Выборка.Следующий();
		СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
	Иначе
		СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка();
	КонецЕсли;
	
	Возврат СтатьяДвиженияДенежныхСредств;

КонецФункции

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

		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ПеречислениеДенежныхСредствНаДругойСчет,
			Справочники.СтатьиДвиженияДенежныхСредств.ПеречислениеДенежныхСредствНаДругойСчет);

		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойКассы,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыдачаДенежныхСредствВДругуюКассу);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации,
			Справочники.СтатьиДвиженияДенежныхСредств.ОплатаДенежныхСредствВДругуюОрганизацию);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзКассыККМ,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыдачаДенежныхСредствВДругуюКассу);

		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствВКассуККМ,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыдачаДенежныхСредствВКассуККМ);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзКассыККМ,
			Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствИзКассыККМ);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ВыплатаЗарплаты,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыплатаЗаработнойПлаты);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыплатаЗаработнойПлаты);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыплатаЗаработнойПлаты);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыЧерезКассу,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыплатаЗаработнойПлаты);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыРаздатчиком,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыплатаЗаработнойПлаты);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыРаботнику,
			Справочники.СтатьиДвиженияДенежныхСредств.ВыплатаЗаработнойПлаты);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.КурсовыеРазницыДСПрибыль,
			Справочники.СтатьиДвиженияДенежныхСредств.КурсовыеРазницыПрибыль);
			
		Соответствие.Вставить(Перечисления.ХозяйственныеОперации.КурсовыеРазницыДСУбыток,
			Справочники.СтатьиДвиженияДенежныхСредств.КурсовыеРазницыУбыток);
		
		СтатьяДвиженияДенежныхСредств = Соответствие.Получить(ХозяйственнаяОперация);
	КонецЕсли; 
	
	Если СтатьяДвиженияДенежныхСредств = Неопределено Тогда
		СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка();
	КонецЕсли;
	
	Возврат СтатьяДвиженияДенежныхСредств;
	
КонецФункции

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

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

// Определяет настройки начального заполнения элементов
//
// Параметры:
//  Настройки - Структура - настройки заполнения:
//   * ПриНачальномЗаполненииЭлемента - Булево - Если Истина, то для каждого элемента будет
//      вызвана процедура индивидуального заполнения ПриНачальномЗаполненииЭлемента.
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
	
	Настройки.ПриНачальномЗаполненииЭлемента = Истина;
	
КонецПроцедуры

// Вызывается при начальном заполнении справочника.
//
// Параметры:
//  КодыЯзыков - Массив - список языков конфигурации. Актуально для мультиязычных конфигураций.
//  Элементы   - ТаблицаЗначений - данные заполнения. Состав колонок соответствует набору реквизитов
//                                 справочника.
//  ТабличныеЧасти - Структура - Ключ - имя табличной части объекта
//                               Значение - Выгрузка в таблицу значений пустой табличной части
//
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт

	#Область ИнвестиционнаяДеятельность
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ИнвестиционнаяДеятельность";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Инвестиционная деятельность'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ОперационнаяДеятельность
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ОперационнаяДеятельность";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Операционная деятельность'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ФинансоваяДеятельность
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ФинансоваяДеятельность";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Финансовая деятельность'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ВозвратДенежныхСредствОтДругойОрганизации
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ВозвратДенежныхСредствОтДругойОрганизации";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Возврат денежных средств от другой организации'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ВозвратДенежныхСредствОтПоставщика
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ВозвратДенежныхСредствОтПоставщика";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Возврат оплаты поставщиком (товары, работы, услуги)'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ВозвратОплатыКлиенту
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ВозвратОплатыКлиенту";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Возврат оплаты клиенту (продажа товаров, работ, услуг)'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ВыдачаДенежныхСредствВДругуюКассу
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ВыдачаДенежныхСредствВДругуюКассу";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Выдача денежных средств в другую кассу'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ВыдачаДенежныхСредствВКассуККМ
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ВыдачаДенежныхСредствВКассуККМ";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Выдача денежных средств в кассу ККМ'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ВыплатаЗаработнойПлаты
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ВыплатаЗаработнойПлаты";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Выплата заработной платы по ведомостям'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область КурсовыеРазницыПрибыль
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "КурсовыеРазницыПрибыль";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Прибыль от курсовых разниц'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область КурсовыеРазницыУбыток
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "КурсовыеРазницыУбыток";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Убыток от курсовых разниц'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ОплатаДенежныхСредствВДругуюОрганизацию
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ОплатаДенежныхСредствВДругуюОрганизацию";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Оплата денежных средств в другую организацию'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ОплатаПоставщику
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ОплатаПоставщику";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Оплата поставщику (товары, работы, услуги)'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ПеречислениеДенежныхСредствНаДругойСчет
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ПеречислениеДенежныхСредствНаДругойСчет";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Перечисление денежных средств на другой счет'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ПоступлениеДенежныхСредствИзБанка
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ПоступлениеДенежныхСредствИзБанка";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Поступление денежных средств из банка'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ПоступлениеДенежныхСредствИзБанкаВИностраннойВалюте
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ПоступлениеДенежныхСредствИзБанкаВИностраннойВалюте";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Поступление денежных средств из банка (в иностранной валюте)'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ПоступлениеДенежныхСредствИзКассыККМ
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ПоступлениеДенежныхСредствИзКассыККМ";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Поступление денежных средств из кассы ККМ'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ПоступлениеДенежныхСредствОтДругойОрганизации
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ПоступлениеДенежныхСредствОтДругойОрганизации";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Поступление денежных средств от другой организации'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область ПоступлениеОплатыОтКлиента
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "ПоступлениеОплатыОтКлиента";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Поступление оплаты от клиента (продажа товаров, работ, услуг)'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область СдачаДенежныхСредствВБанк
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "СдачаДенежныхСредствВБанк";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Сдача денежных средств в банк'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

	#Область СдачаДенежныхСредствВБанкВИностраннойВалюте
	Элемент = Элементы.Добавить();
	Элемент.ИмяПредопределенныхДанных = "СдачаДенежныхСредствВБанкВИностраннойВалюте";
	МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Сдача денежных средств в банк (в иностранной валюте)'", КодыЯзыков); // @НСтр-2
	#КонецОбласти

КонецПроцедуры

// Вызывается при начальном заполнении создаваемого элемента.
//
// Параметры:
//  Объект                  - СправочникОбъект.СтатьиДвиженияДенежныхСредств - заполняемый объект.
//  Данные                  - СтрокаТаблицыЗначений - данные заполнения.
//  ДополнительныеПараметры - Структура - Дополнительные параметры.
//
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
	
КонецПроцедуры

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

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

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
	
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	Если Параметры.Свойство("ТолькоРасходДенежныхСредств") Тогда
		
		СтандартнаяОбработка = Ложь;
		
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	НастройкиХозяйственныхОпераций.ХозяйственнаяОперация КАК Ссылка
		|ПОМЕСТИТЬ ХозяйственныеОперацииРасхода 
		|ИЗ
		|	Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
		|ГДЕ
		|	НастройкиХозяйственныхОпераций.Расход = ЗНАЧЕНИЕ(Перечисление.ТипыДанныхУчета.ДенежныеСредства)
		|	И НастройкиХозяйственныхОпераций.Приход <> ЗНАЧЕНИЕ(Перечисление.ТипыДанныхУчета.ПустаяСсылка)
		|	
		|ИНДЕКСИРОВАТЬ ПО
		|	Ссылка
		|;
		|
		|/////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	СтатьиДвиженияДенежныхСредствХозОперации.Ссылка
		|ИЗ
		|	Справочник.СтатьиДвиженияДенежныхСредств.ХозяйственныеОперации КАК СтатьиДвиженияДенежныхСредствХозОперации
		|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|		ХозяйственныеОперацииРасхода КАК ХозяйственныеОперацииРасхода
		|	ПО
		|		СтатьиДвиженияДенежныхСредствХозОперации.ХозяйственнаяОперация = ХозяйственныеОперацииРасхода.Ссылка");
		
		ДанныеВыбора = Новый СписокЗначений;
		ДанныеВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
		
	ИначеЕсли Параметры.Свойство("Отбор") И Параметры.Отбор.Свойство("ХозяйственнаяОперация") Тогда
		
		СтандартнаяОбработка = Ложь;
		
		Запрос = Новый Запрос;
		Запрос.Текст = "
		|ВЫБРАТЬ
		|	ДанныеСправочника.Ссылка
		|ИЗ
		|	Справочник.СтатьиДвиженияДенежныхСредств.ХозяйственныеОперации КАК ДанныеСправочника
		|ГДЕ
		|	ДанныеСправочника.ХозяйственнаяОперация В (&ХозяйственнаяОперация)
		|	И (ДанныеСправочника.Ссылка.Наименование ПОДОБНО &СтрокаПоиска
		|		ИЛИ ДанныеСправочника.Ссылка.НаименованиеЯзык1 ПОДОБНО &СтрокаПоиска
		|		ИЛИ ДанныеСправочника.Ссылка.НаименованиеЯзык2 ПОДОБНО &СтрокаПоиска
		|		ИЛИ ДанныеСправочника.Ссылка.Код ПОДОБНО &СтрокаПоиска
		|		ИЛИ &СтрокаПоискаНеЗадана)
		|";
		
		Запрос.УстановитьПараметр("ХозяйственнаяОперация", Параметры.Отбор.ХозяйственнаяОперация);
		
		СтрокаПоиска = "";
		Если Параметры.Свойство("СтрокаПоиска") Тогда
			СтрокаПоиска = Параметры.СтрокаПоиска;
		КонецЕсли;
		
		Запрос.УстановитьПараметр("СтрокаПоиска", "%" + СтрокаПоиска + "%");
		Запрос.УстановитьПараметр("СтрокаПоискаНеЗадана", Не ЗначениеЗаполнено(СтрокаПоиска));
		
		ДанныеВыбора = Новый СписокЗначений;
		ДанныеВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
	КонецЕсли;
КонецПроцедуры

#КонецЕсли

Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
	
	Если ВидФормы = "ФормаВыбора" Тогда
		Если Параметры.Свойство("Отбор")
			И Параметры.Отбор.Свойство("ХозяйственнаяОперация")
			И ТипЗнч(Параметры.Отбор.ХозяйственнаяОперация) = Тип("ПеречислениеСсылка.ХозяйственныеОперации") Тогда
			ВыбраннаяФорма = "ФормаВыбораПоХозяйственнойОперации";
			СтандартнаяОбработка = Ложь;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	// СтандартныеПодсистемы.БазоваяФункциональность
	МультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка);
	// Конец СтандартныеПодсистемы.БазоваяФункциональность
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	// СтандартныеПодсистемы.БазоваяФункциональность
	МультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
	// Конец СтандартныеПодсистемы.БазоваяФункциональность
КонецПроцедуры

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

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

#Область ОбновлениеИнформационнойБазы

Процедура ЗаполнитьПредопределенныеСтатьиДвиженияДенежныхСредств(СтатьяДДС = Неопределено) Экспорт
	
	Соответствие = Новый Соответствие;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ВыдачаДенежныхСредствВДругуюКассу ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ВыдачаДенежныхСредствВДругуюКассу,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствВДругуюКассу,
				"50.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ОплатаПоставщику ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ОплатаПоставщику,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ОплатаПоставщику,
				"60.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ПеречислениеДенежныхСредствНаДругойСчет ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ПеречислениеДенежныхСредствНаДругойСчет,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ПеречислениеДенежныхСредствНаДругойСчет,
				"51",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствИзБанка ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствИзБанка,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзБанка,
				"51",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствИзБанкаВИностраннойВалюте ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствИзБанкаВИностраннойВалюте,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзБанка,
				"52",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеОплатыОтКлиента ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеОплатыОтКлиента,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента,
				"62.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.СдачаДенежныхСредствВБанк ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.СдачаДенежныхСредствВБанк,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.СдачаДенежныхСредствВБанк,
				"51",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.СдачаДенежныхСредствВБанкВИностраннойВалюте ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.СдачаДенежныхСредствВБанкВИностраннойВалюте,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.СдачаДенежныхСредствВБанк,
				"52",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ОплатаДенежныхСредствВДругуюОрганизацию ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ОплатаДенежныхСредствВДругуюОрганизацию,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию,
				"60.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ВыдачаДенежныхСредствВКассуККМ ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ВыдачаДенежныхСредствВКассуККМ,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствВКассуККМ,
				"50.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствИзКассыККМ ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствИзКассыККМ,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзКассыККМ,
				"50.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ВыплатаЗаработнойПлаты ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ВыплатаЗаработнойПлаты,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ВыплатаЗарплаты,
				"70",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ВозвратДенежныхСредствОтПоставщика ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ВозвратДенежныхСредствОтПоставщика,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика,
				"60.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ВозвратОплатыКлиенту ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ВозвратОплатыКлиенту,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту,
				"62.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.КурсовыеРазницыПрибыль ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.КурсовыеРазницыПрибыль,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.КурсовыеРазницыДСПрибыль,
				"91.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.КурсовыеРазницыУбыток ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.КурсовыеРазницыУбыток,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.КурсовыеРазницыДСУбыток,
				"91.02",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствОтДругойОрганизации ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ПоступлениеДенежныхСредствОтДругойОрганизации,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации,
				"62.01",));
	КонецЕсли;
	Если СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ВозвратДенежныхСредствОтДругойОрганизации ИЛИ НЕ ЗначениеЗаполнено(СтатьяДДС) Тогда
		Соответствие.Вставить(Справочники.СтатьиДвиженияДенежныхСредств.ВозвратДенежныхСредствОтДругойОрганизации ,
			Новый Структура("ХозяйственнаяОперация, КорреспондирующийСчет",
				Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтДругойОрганизации,
				"60.01",));
	КонецЕсли;
	
	Для Каждого Элемент Из Соответствие Цикл
	
		СтатьяДДСОбъект = Элемент.Ключ.ПолучитьОбъект();
		Элемент.Значение.Вставить("Родитель", ОперационнаяДеятельность);
		ЗаполнитьЗначенияСвойств(СтатьяДДСОбъект, Элемент.Значение);
		Если СтатьяДДСОбъект.ХозяйственныеОперации.Найти(Элемент.Значение.ХозяйственнаяОперация) = Неопределено Тогда
			СтатьяДДСОбъект.ХозяйственныеОперации.Добавить().ХозяйственнаяОперация = Элемент.Значение.ХозяйственнаяОперация;
		КонецЕсли;
		Попытка
			ОбновлениеИнформационнойБазы.ЗаписатьДанные(СтатьяДДСОбъект);
		Исключение
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Справочник %1 не записан, произошли ошибки при записи!'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
				СтатьяДДСОбъект);
			ОписаниеОшибки = ИнформацияОбОшибке();
			ЗаписьЖурналаРегистрации(ТекстСообщения, УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки.Описание);
		КонецПопытки;
	КонецЦикла;
	
	Попытка
		
		Объект = ОперационнаяДеятельность.ПолучитьОбъект();
		Объект.РеквизитДопУпорядочивания = 1;
		ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
		
		Объект = ИнвестиционнаяДеятельность.ПолучитьОбъект();
		Объект.РеквизитДопУпорядочивания = 2;
		ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
		
		Объект = ФинансоваяДеятельность.ПолучитьОбъект();
		Объект.РеквизитДопУпорядочивания = 3;
		ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
		
	Исключение
		
		ТекстСообщения = СтрШаблон(
			НСтр("ru = 'Справочник %1 не записан, произошли ошибки при записи!'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
			Объект);
		ОписаниеОшибки = ИнформацияОбОшибке();
		ЗаписьЖурналаРегистрации(ТекстСообщения, УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки.Описание);
	КонецПопытки;
	
КонецПроцедуры

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

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

#КонецЕсли


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