Загрузка данных


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