Первичный документ / Модуль менеджера

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

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

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	
КонецПроцедуры

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

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

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

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

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

	Если ЭтоДоговорСКонтрагентом И ПараметрыРегистрации.РеализацияЧерезКомиссионера Тогда
		ПараметрыРегистрации.Контрагент = ДоговорСтруктура.КомиссионерКонтрагент;
	КонецЕсли;

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

// Возвращает массив допустимых наименований входящих документов.
// 
// Возвращаемое значение:
// 	Массив из Строка - массив наименований.
Функция НаименованияВходящихДокументов() Экспорт
	МассивНаименований = Новый Массив();
	МассивНаименований.Добавить(НСтр("ru='Первичный документ'"));
	Возврат МассивНаименований
КонецФункции

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

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.УправлениеДоступом

// Описание логики ограничений прав доступа
//
// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)";

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

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

// СтандартныеПодсистемы.ВерсионированиеОбъектов
// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
// Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

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

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

#Область Проведение

// Описывает учетные механизмы используемые в документе для регистрации в механизме проведения.
//
// Параметры:
//  МеханизмыДокумента - Массив из Строка - список имен учетных механизмов, для которых будет выполнена
//              регистрация в механизме проведения.
//
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
	
	МеханизмыДокумента.Добавить("РеестрДокументов");
	МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
	
КонецПроцедуры

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

Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
	
	Запрос = Новый Запрос;
	ТекстыЗапроса = Новый СписокЗначений;
	
	ПолноеИмяДокумента           = "Документ.ПервичныйДокумент";

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

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

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

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

Функция СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
	
	ИнициализироватьВтСуммыДокументовВВалютахУчета(Запрос, ТекстыЗапроса);

	ИмяРегистра = "СуммыДокументовВВалютахУчета";
	
	Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат "";
	КонецЕсли;
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	Таблица.Ссылка КАК Регистратор,
	|	Таблица.Дата КАК Период,
	|	Таблица.ВалютаДокумента КАК ВалютаДокумента,
	|	Таблица.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
	|	Таблица.ИдентификаторСтроки КАК ИдентификаторСтроки,
	|	Таблица.СтавкаНДС КАК СтавкаНДС,
	|	Таблица.СуммаСНДС КАК СуммаСНДС,
	|	Таблица.СуммаНДС КАК СуммаНДС,
	|	Таблица.СуммаБезНДС КАК СуммаБезНДС,
	|	Таблица.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
	|	Таблица.СуммаНДСВзаиморасчетов КАК СуммаНДСВзаиморасчетов,
	|	Таблица.СуммаСНДСУпр КАК СуммаСНДСУпр,
	|	Таблица.СуммаНДСУпр КАК СуммаНДСУпр,
	|	Таблица.СуммаБезНДСУпр КАК СуммаБезНДСУпр,
	|	Таблица.СуммаСНДСРегл КАК СуммаСНДСРегл,
	|	Таблица.СуммаНДСРегл КАК СуммаНДСРегл,
	|	Таблица.БазаНДСРегл КАК БазаНДСРегл,
	|	Таблица.СуммаБезНДСРегл КАК СуммаБезНДСРегл,
	|	Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
	|	Таблица.ТипРасчетов КАК ТипРасчетов,
	|	Таблица.ОтражаетсяВРасчетах КАК ОтражаетсяВРасчетах,
	|	ДАТАВРЕМЯ(1,1,1) КАК ПериодБазыНДС,
	|	ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
	|ИЗ
	|	ВтСуммыДокументовВВалютахУчета КАК Таблица";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

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

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

#Область Прочее

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

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

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

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

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

#КонецЕсли

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

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Поля.Добавить("Ссылка");
	Поля.Добавить("ТипПервичногоДокумента");
	Поля.Добавить("Номер");
	Поля.Добавить("Дата");
	Поля.Добавить("НаименованиеВходящегоДокумента");
	Поля.Добавить("НомерВходящегоДокумента");
	Поля.Добавить("ДатаВходящегоДокумента");
	
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Если ЗначениеЗаполнено(Данные.Номер) Тогда
		Представление = СтрШаблон(НСтр("ru = '%1 %2 от %3'"), Данные.ТипПервичногоДокумента, СокрЛП(Данные.Номер), Данные.Дата);
	Иначе
		Представление = СтрШаблон(НСтр("ru = '%1 (создание)'"), Данные.ТипПервичногоДокумента);
	КонецЕсли;
	
	ОбщегоНазначенияУТКлиентСервер.ОбработкаПолученияПредставленияВходящегоДокумента(
		Данные, Представление, СтандартнаяОбработка, "ПервичныйДокумент");
	
КонецПроцедуры

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

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