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


Функция ДатаДобавитьДни(пДата, пКоличествоДней) Экспорт 
	мКоличествоСекундВСутках=60*60*24;
	Возврат пДата+пКоличествоДней*мКоличествоСекундВСутках;
КонецФункции

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

Функция ТекстЗапросаПолучить() Экспорт
	Возврат "ВЫБРАТЬ * ИЗ Справочник.ТсОбменПакеты КАК ИсточникДанных"; 
КонецФункции 

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