Счет-фактура выданный / Форма списка документов / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	УстановитьУсловноеОформление();
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии()
	
	МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
	
КонецПроцедуры

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

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

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

#Область ОбработчикиКомандФормы

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

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

// ЭлектронноеВзаимодействие.ОбменСКонтрагентами

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
	
	ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Элементы.СписокСчетовФактурыНаОформление);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
	
	ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
	
КонецПроцедуры

// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

&НаКлиенте
Процедура ГиперссылкаЖурналПродажиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;

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

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

#Область ОбработчикиСобытийЭлементовФормы

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

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

&НаКлиенте
Процедура ТекстГруппировкаСчетовФактурыНажатие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	СтруктураПараметров = Новый Структура;
	СтруктураПараметров.Вставить("ГруппировкаСпискаКОформлению", ГруппировкаСпискаКОформлению);
	
	Оповещение = Новый ОписаниеОповещения("ОбработкаНастройкиГруппировкиСчетовФактуры", ЭтотОбъект);
	
	ОткрытьФорму(
		"Документ.СчетФактураВыданный.Форма.НастройкиГруппировкиОснованийКОформлению",
		СтруктураПараметров,
		ЭтаФорма, , , ,
		Оповещение,
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокСчетовФактурыНаОформлениеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	ТекДанные = Элемент.ТекущиеДанные;
	
	Если ТипЗнч(ГруппировкаСпискаКОформлению) = Тип("Структура") И ГруппировкаСпискаКОформлению.Количество() > 0 Тогда
		
		ОтборыСписка = ПараметрыОтбораОснованийСчетаФактуры(ЭтаФорма);
		ЗаполнитьЗначенияСвойств(ОтборыСписка, ТекДанные);
		
		СписокОснований = ПолучитьОснованияСчетаФактурыКОформлению(ОтборыСписка);
		Если СписокОснований.Количество() = 1 Тогда
			ПоказатьЗначение(, СписокОснований[0].Значение);
		Иначе
			
			ОткрытьФорму(
				"ОбщаяФорма.ПросмотрСпискаДокументов",
				Новый Структура("СписокДокументов, Заголовок",
					СписокОснований,
					НСтр("ru = 'Документы-основания счета-фактуры (%КоличествоДокументов%)'")
					),
				ЭтаФорма
				,,,,,
				РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
			
		КонецЕсли;

	Иначе
		
		ПоказатьЗначение(, ТекДанные.Ссылка);
		
	КонецЕсли;
	
КонецПроцедуры

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

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

#Область ШтрихкодыИТорговоеОборудование

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

&НаКлиенте
Процедура ОбработатьШтрихкоды(Данные)

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
	СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "СписокСчетовФактурыНаОформление.ДатаПродажи");
	
	// Просроченный документ.
	
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокСчетовФактурыНаОформлениеСрок.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокСчетовФактурыНаОформление.Срок");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
	ОтборЭлемента.ПравоеЗначение = Константы.СрокВыставленияСчетаФактуры.Получить();
	
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныйДокумент);
	
КонецПроцедуры

&НаСервере
Процедура УправлениеЭлементамиСтраницыСчетаФактурыКОформлению()
	
	НетГруппировки = ГруппировкаСпискаКОформлению = Неопределено Или ГруппировкаСпискаКОформлению.Количество()= 0;
	
	Элементы.СписокСчетовФактурыНаОформлениеНомер.Видимость                 = НетГруппировки;
	Элементы.СписокСчетовФактурыНаОформлениеВидОснования.Видимость          = НетГруппировки;
	Элементы.СписокСчетовФактурыНаОформлениеКоличествоДокументов.Видимость = Не НетГруппировки;
	
	ВидимостьЭлемента = НетГруппировки И Не ИспользоватьПартнеровКакКонтрагентов;
	Элементы.СписокСчетовФактурыНаОформлениеПартнер.Видимость = ВидимостьЭлемента;
	
	ВидимостьЭлемента = (НетГруппировки Или ГруппировкаСпискаКОформлению.Свойство("Договор"))
		И ИспользоватьДоговорыСКлиентами;
	Элементы.СписокСчетовФактурыНаОформлениеДоговор.Видимость = ВидимостьЭлемента;
	
	ВидимостьЭлемента = НетГруппировки Или ГруппировкаСпискаКОформлению.Свойство("Менеджер");
	Элементы.СписокСчетовФактурыНаОформлениеМенеджер.Видимость = ВидимостьЭлемента;
	
	ВидимостьЭлемента = НетГруппировки Или ГруппировкаСпискаКОформлению.Свойство("Месяц");
	Элементы.СписокСчетовФактурыНаОформлениеМесяц.Видимость = ВидимостьЭлемента;
	
	Элементы.СписокСчетовФактурыНаОформлениеОрганизация.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
	Элементы.СписокСчетовФактурыНаОформлениеВалюта.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют");
	
	Элементы.СписокСчетовФактурыНаОформлениеРеализацияЧерезКомиссионера.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах");
	
	Если Не НетГруппировки Тогда
		Элементы.СписокСчетовФактурыНаОформлениеСсылка.Видимость = Ложь;
	КонецЕсли;
	
	ТекстГруппировкаСчетовФактуры = "";
	
	Если НетГруппировки Тогда
		ТекстГруппировкаСчетовФактуры = НСтр("ru = 'Настройка группировки документов-оснований'");
	Иначе
		
		ТекстГруппируемыхПолей = "";
		
		Для Каждого ПолеГруппировки Из ГруппировкаСпискаКОформлению Цикл
			ТекстГруппируемыхПолей = ТекстГруппируемыхПолей + ПолеГруппировки.Значение + ", ";
		КонецЦикла;
		
		ТекстГруппируемыхПолей = Лев(ТекстГруппируемыхПолей, СтрДлина(ТекстГруппируемыхПолей) - 2);
		
		ТекстГруппировкаСчетовФактуры = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Документы-основания сгруппированы по: %1'"), ТекстГруппируемыхПолей);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСписокСчетаФактурыКОформлению()
	
	УстановитьТекстЗапросаСчетаФактурыКОформлению();
	
	УправлениеЭлементамиСтраницыСчетаФактурыКОформлению();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ОбработкаНастройкиГруппировкиСчетовФактуры(Результат, ДополнительныеПараметры) Экспорт
	
	Если ТипЗнч(Результат) = Тип("Структура") Тогда
		
		ГруппировкаСпискаКОформлению = Результат;
		ЗаполнитьСписокСчетаФактурыКОформлению();
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьДокументыСчетФактура(Основания, ДополнительныеПараметры)
	
	СтруктураЗаполнения = Новый Структура;
	Если Основания.Количество() = 1 Тогда
		СтруктураЗаполнения.Вставить("ДокументОснование", Основания[0]);
	Иначе
		СтруктураЗаполнения.Вставить("ДокументОснование", Основания);
		СтруктураЗаполнения.Вставить("Дата", ДополнительныеПараметры.ДатаПродажи);
	КонецЕсли;
	
	СтруктураЗаполнения.Вставить("Корректировочный", ДополнительныеПараметры.Корректировка);
	СтруктураЗаполнения.Вставить("Исправление",      ДополнительныеПараметры.Исправление);
	
	РеализацияЧерезКомиссионера = Неопределено;
	ДополнительныеПараметры.Свойство("РеализацияЧерезКомиссионера", РеализацияЧерезКомиссионера);
	СтруктураЗаполнения.Вставить("РеализацияЧерезКомиссионера", РеализацияЧерезКомиссионера);
	
	СтруктураЗаполнения.Вставить("НачислениеНДСПриОтгрузке", ТипЗнч(СтруктураЗаполнения.ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту"));
	
	ПараметрыФормы = Новый Структура("Основание", СтруктураЗаполнения);
	
	ПараметрыОткрытия = Новый Структура;
	ПараметрыОткрытия.Вставить("ДокументОснование", СтруктураЗаполнения.ДокументОснование);
	ПараметрыОткрытия.Вставить("Организация",       ДополнительныеПараметры.Организация);
	ПараметрыОткрытия.Вставить("Контрагент",        ДополнительныеПараметры.Контрагент);
	ПараметрыОткрытия.Вставить("Исправление",       ДополнительныеПараметры.Исправление);
	ПараметрыОткрытия.Вставить("Корректировочный",  ДополнительныеПараметры.Корректировка);
	ПараметрыОткрытия.Вставить("РеализацияЧерезКомиссионера",
													РеализацияЧерезКомиссионера);

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыОтбораОснованийСчетаФактуры(Форма)
	
	СтруктураОтбора = Новый Структура("Организация, Контрагент, Валюта, Исправление, Корректировка, РеализацияЧерезКомиссионера");
	Для Каждого ПолеГруппировки Из Форма.ГруппировкаСпискаКОформлению Цикл
		СтруктураОтбора.Вставить(ПолеГруппировки.Ключ);
	КонецЦикла;
	
	Возврат СтруктураОтбора;
	
КонецФункции

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

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

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

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

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