Ввод начальных остатков / Модуль объекта

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

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

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

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

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

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

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

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

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

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

	Если ((ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковСобственныхТоваров 
				ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковТоваровПолученныхНаКомиссию
				ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковВозвратнойТарыПринятойОтПоставщиков)
			И ИспользоватьАдресноеХранение
			И ОтражатьВОперативномУчете)
		ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковПриПереходеНаИспользованиеАдресногоХраненияОстатков Тогда
		НоменклатураСервер.ПроверитьЗаполнениеУпаковок(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ);
	Иначе
		МассивНепроверяемыхРеквизитов.Добавить("ЗонаПриемки");
		МассивНепроверяемыхРеквизитов.Добавить("Товары.Упаковка");
		МассивНепроверяемыхРеквизитов.Добавить("ОптовыеПродажи.Упаковка");
		МассивНепроверяемыхРеквизитов.Добавить("РозничныеПродажи.Упаковка");
	КонецЕсли;
	
	ПараметрыПроверки = НоменклатураСервер.ПараметрыПроверкиЗаполненияКоличества();
	Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковМатериаловПереданныхВПроизводство Тогда
		ПараметрыПроверки.ПроверитьВозможностьОкругления = Ложь;
	КонецЕсли;
	НоменклатураСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ, ПараметрыПроверки);
	
	Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковПриПереходеНаИспользованиеАдресногоХраненияОстатков
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковПриПереходеНаИспользованиеСкладскихПомещений Тогда
		МассивНепроверяемыхРеквизитов.Добавить("Организация");
	КонецЕсли;
	
	Если ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковСобственныхТоваров
		И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковТоваровПолученныхНаКомиссию
		И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковТоваровПереданныхНаКомиссию
		И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковВозвратнойТарыПереданнойКлиентам
		И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковВозвратнойТарыПринятойОтПоставщиков
		И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковПриПереходеНаИспользованиеАдресногоХраненияОстатков
		И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковПриПереходеНаИспользованиеСкладскихПомещений
		//++ Устарело_Переработка24
		И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковМатериаловПереданныхПереработчикам
		//-- Устарело_Переработка24
		И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВводОстатковМатериаловПереданныхВПроизводство Тогда
		МассивНепроверяемыхРеквизитов.Добавить("Товары");
	ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковТоваровПолученныхНаКомиссию
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковВозвратнойТарыПринятойОтПоставщиков
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковПриПереходеНаИспользованиеАдресногоХраненияОстатков
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковПриПереходеНаИспользованиеСкладскихПомещений Тогда
		МассивНепроверяемыхРеквизитов.Добавить("Товары.Цена");
		МассивНепроверяемыхРеквизитов.Добавить("Товары.Сумма");
		МассивНепроверяемыхРеквизитов.Добавить("Товары.СуммаРегл");
	КонецЕсли;
	
	Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковВозвратнойТарыПринятойОтПоставщиков Тогда
			Для ТекИндекс = 0 По Товары.Количество()-1 Цикл
				Если Товары[ТекИндекс].ПредусмотренЗалогЗаТару Тогда
					Если НЕ ЗначениеЗаполнено(Товары[ТекИндекс].Цена) Тогда
						ТекстОшибки = НСтр("ru='Не заполнена колонка ""Цена"" в строке %НомерСтроки% табличной части ""Товары""'");
						ТекстОшибки =  СтрЗаменить(ТекстОшибки, "%НомерСтроки%", Товары.Получить(ТекИндекс).НомерСтроки);
						ОбщегоНазначения.СообщитьПользователю(
							ТекстОшибки,
							ЭтотОбъект,
							ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Товары.Получить(ТекИндекс).НомерСтроки, "Цена"),
							,
							Отказ);
					КонецЕсли;
					Если НЕ ЗначениеЗаполнено(Товары[ТекИндекс].Сумма) Тогда
						ТекстОшибки = НСтр("ru='Не заполнена колонка ""Сумма"" в строке %НомерСтроки% табличной части ""Товары""'");
						ТекстОшибки =  СтрЗаменить(ТекстОшибки, "%НомерСтроки%", Товары.Получить(ТекИндекс).НомерСтроки);
						ОбщегоНазначения.СообщитьПользователю(
							ТекстОшибки,
							ЭтотОбъект,
							ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Товары.Получить(ТекИндекс).НомерСтроки, "Сумма"),
							,
							Отказ);
					КонецЕсли;
					Если НЕ ЗначениеЗаполнено(Товары[ТекИндекс].СуммаРегл) Тогда
						ТекстОшибки = НСтр("ru='Не заполнена колонка ""Сумма(регл)"" в строке %НомерСтроки% табличной части ""Товары""'");
						ТекстОшибки =  СтрЗаменить(ТекстОшибки, "%НомерСтроки%", Товары.Получить(ТекИндекс).НомерСтроки);
						ОбщегоНазначения.СообщитьПользователю(
							ТекстОшибки,
							ЭтотОбъект,
							ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Товары.Получить(ТекИндекс).НомерСтроки, "СуммаРегл"),
							,
							Отказ);
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
	КонецЕсли;

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

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

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

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

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

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

Процедура ПриЗаписи(Отказ)

	Если ОбменДанными.Загрузка Тогда
		Возврат
	КонецЕсли;
	
	ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
	
	ВводОстатковЛокализация.ВводОстатковПриЗаписи(ЭтотОбъект, Отказ);
	
КонецПроцедуры

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

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

#Область ИнициализацияИЗаполнение

Процедура ЗаполнитьДанныеЭквайринга() Экспорт

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

	Запрос.УстановитьПараметр("Организация", Организация);
	РасчетыПоЭквайрингу.Загрузить(Запрос.Выполнить().Выгрузить());

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

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

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

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

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

#Область ВидыЗапасов

Процедура ЗаполнитьВидыЗапасов()

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

	МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

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

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

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

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

Процедура ПроверитьЗаполнениеТабличнойЧастиРасчетыСПартнерами(Отказ, ХозяйственнаяОперация)

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

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

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

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

Процедура СоздатьДокументыРасчетов(ИмяТЧ, Отказ)

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

	Если Отказ Тогда
		Для Каждого СтрМас из МассивСтрокСНовымиРасчетнымиДокументами Цикл
			СтрМас.ОбъектРасчетов = Неопределено;
		КонецЦикла;
	КонецЕсли;

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

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

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

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

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

				Если НовыйОбъект.ТипДоговора = Перечисления.ТипыДоговоровМеждуОрганизациями.КупляПродажа Тогда
					ТипДоговораСтрокой = НСтр("ru = 'купли-продажи'");
				ИначеЕсли НовыйОбъект.ТипДоговора = Перечисления.ТипыДоговоровМеждуОрганизациями.Комиссионный Тогда
					ТипДоговораСтрокой = НСтр("ru = 'комиссии'");
				Иначе
					ТипДоговораСтрокой = "";
				КонецЕсли;

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

				НовыйОбъект.Наименование			= ТекстНаименования;
				НовыйОбъект.НаименованиеДляПечати	= ТекстНаименования;

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

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

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

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

Функция ХозяйственнаяОперацияПоТипуДоговора(ТипДоговора)

	Если ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем Тогда
		Возврат Перечисления.ХозяйственныеОперации.РеализацияКлиенту;
	//++ Устарело_Переработка24
	ИначеЕсли ТипДоговора = Перечисления.ТипыДоговоров.СДавальцем Тогда
		Возврат Перечисления.ХозяйственныеОперации.ПроизводствоИзДавальческогоСырья;
	//-- Устарело_Переработка24
	ИначеЕсли ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером Тогда
		Возврат Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию;
	ИначеЕсли ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком Тогда
		Возврат Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика;
	ИначеЕсли ТипДоговора = Перечисления.ТипыДоговоров.СКомитентом Тогда
		Возврат Перечисления.ХозяйственныеОперации.ПриемНаКомиссию;
	ИначеЕсли ТипДоговора = Перечисления.ТипыДоговоров.Импорт Тогда
		Возврат Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту
	КонецЕсли;

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

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

Процедура ПроверитьРазрядностьНомеровОбъектовРасчета(Отказ)
	
	ШаблонСообщения = НСтр("ru='Длина номера объекта расчетов превышает допустимую длину (%Длина%) для выбранного объекта расчетов в строке %НомерСтроки%.'");
	ТабЧасть = "";
	Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковЗадолженностиКлиентов
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковЗадолженностиПоставщикам
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковАвансовКлиентов
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковАвансовПоставщикам Тогда
		ТабЧасть = "РасчетыСПартнерами";
	ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковРасчетовМеждуОрганизациямиПоАвансам
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковРасчетовМеждуОрганизациямиПоРеализациям Тогда
		ТабЧасть = "РасчетыМеждуОрганизациями";
	КонецЕсли;
	
	ТабличнаяЧасть = ЭтотОбъект[ТабЧасть]; // ТабличнаяЧасть
	
	Для ИндексСтроки = 0 По ТабличнаяЧасть.Количество() -1 Цикл
			
		СтрокаТаблицы = ТабличнаяЧасть.Получить(ИндексСтроки);
		
		Если СтрокаТаблицы.ОбъектРасчетов <> Неопределено Тогда
			ТипОбъектаРасчетов = ТипЗнч(СтрокаТаблицы.ОбъектРасчетов);
			ЭтоСправочник = Справочники.ТипВсеСсылки().СодержитТип(ТипОбъектаРасчетов);
			ЭтоДокумент = Документы.ТипВсеСсылки().СодержитТип(ТипОбъектаРасчетов);
			ДлинаНомера = 0;
			МетаданныеОбъектаРасчетов = Метаданные.НайтиПоТипу(ТипОбъектаРасчетов);
			Если ЭтоСправочник И МетаданныеОбъектаРасчетов <> Неопределено Тогда
				ДлинаНомера = МетаданныеОбъектаРасчетов.ДлинаКода;
			ИначеЕсли ЭтоДокумент И МетаданныеОбъектаРасчетов <> Неопределено Тогда
				ДлинаНомера = МетаданныеОбъектаРасчетов.ДлинаНомера;
			Иначе
				Возврат;
			КонецЕсли;
			Если (СтрДлина(СтрокаТаблицы.НомерРасчетногоДокумента) > ДлинаНомера)
				И ДлинаНомера > 0 Тогда
			ТекстСообщения = СтрЗаменить(ШаблонСообщения, "%Длина%", ДлинаНомера);
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НомерСтроки%", СтрокаТаблицы.НомерСтроки);
			ОбщегоНазначения.СообщитьПользователю(
				ТекстСообщения,
				ЭтотОбъект,
				ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти(ТабЧасть, СтрокаТаблицы.НомерСтроки, "НомерРасчетногоДокумента"),
				,
				Отказ);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

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


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

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

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

Функция КоэффициентПересчетаИзВалютыУпрВРегл()
	ВалютаРегламентированногоУчета            = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
	ВалютаУправленческогоУчета                = Константы.ВалютаУправленческогоУчета.Получить();
	Возврат РаботаСКурсамиВалютУТ.ПолучитьКоэффициентПересчетаИзВалютыВВалюту(
									ВалютаУправленческогоУчета,
									ВалютаРегламентированногоУчета,
									?(Дата = Дата(1,1,1), ТекущаяДатаСеанса(), Дата));
КонецФункции

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

#КонецЕсли
//-- Локализация

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