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


Процедура кор_ПриЗаписиПриобретениеТоваровУслуг(Источник, Отказ) Экспорт
	
	Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли; 
	
	//++ Варнин А.А. - проверка на проведение. Если это запись, то процедура не выполняется 07.07.2026
	Проведение = Неопределено;
	Если НЕ Источник.ДополнительныеСвойства.Свойство("ПроведениеДокументов", Проведение) Тогда
		Возврат;
	КонецЕсли;
	
	СвойстваДокумента = Проведение.СвойстваДокумента;
	РежимЗаписи = СвойстваДокумента.РежимЗаписи;
	Если РежимЗаписи <> РежимЗаписиДокумента.Проведение
		И РежимЗаписи <> РежимЗаписиДокумента.ОтменаПроведения Тогда
		Возврат;
	КонецЕсли;
	//++ Варнин А.А. -  07.07.2026
	
	Если Источник.Дата > Дата(2025,12,31,23,59,59) Тогда 
		Попытка

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

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

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

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