Не обработанные задания к распределению расчетов с клиентами

1. AntonH851 86 02.04.19 10:14 Сейчас в теме
Добрый день
Подскажите пожалуйста, если у меня в регистре ЗаданияКРаспределениюРасчетовСКлиентами висят старые не обработанные задания, на фоне того что у нас бывают проблемы с регистра расчеты с клиентами по документам, это нормально?
Или по хорошему их не должно быть?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user633533_encantado 11 02.04.19 10:16 Сейчас в теме
3. AntonH851 86 02.04.19 11:05 Сейчас в теме
(2) Тогда у меня вот напрашивается другой вопрос:
Почему разработчики сделали так:

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

	Выборка = Запрос.Выполнить().Выбрать();
	Возврат ?(Выборка.Следующий(), Выборка.НачалоПериодаРасчета, КонецМесяца(ОкончаниеРасчета) + 1);
КонецФункции
Показать


Почему нельзя было сделать, чтобы начало периода рассчета бралась по самому раннему заданию из регистра
4. user633533_encantado 11 02.04.19 11:22 Сейчас в теме
(3)
МИНИМУМ(Задания.Месяц) КАК НачалоПериодаРасчета
Разве не возьмет самый ранний месяц ?
5. AntonH851 86 02.04.19 11:23 Сейчас в теме
(4) Да, я потом более внимательно эту функцию почитал и подумал что должна вроде взять, а по факту не берет, но это уже я в отладчике посмотрю и отпишусь
6. AntonH851 86 02.04.19 12:12 Сейчас в теме
(4) Понял почему, потому что если распределение запускать просто через фоновое задание, то Номер задания = 0, и условие
И (Задания.НомерЗадания <= &НомерЗадания
| ИЛИ &ПоВсемНомерамЗаданий)
не выполняется
7. AntonH851 86 02.04.19 12:13 Сейчас в теме
Ща попробую сделать чтобы выполнялось и посмотрю что будет:


//ИЗМ+ А.А. 02.04.2019
Если НомерЗадания = 0 И ИмяРегистраЗаданий = "ЗаданияКРаспределениюРасчетовСКлиентами" Тогда
ЗапросНЗ = Новый Запрос;
ЗапросНЗ.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ЗаданияКРаспределениюРасчетовСКлиентами.НомерЗадания) КАК НомерЗадания
|ИЗ
| РегистрСведений.ЗаданияКРаспределениюРасчетовСКлиентами КАК ЗаданияКРаспределениюРасчетовСКлиентами";
РезультатЗапроса = ЗапросНЗ.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НомерЗадания = ВыборкаДетальныеЗаписи.НомерЗадания;
КонецЦикла;
КонецЕсли;
//ИЗМ- А.А. 02.04.2019
8. AntonH851 86 02.04.19 14:46 Сейчас в теме
Вот что определил, что у меня ОкончаниеПериодаРасчета - Это 01.05.2019 и Начало периода 01.05.2019
9. AntonH851 86 02.04.19 14:47 Сейчас в теме
(8) Получается что цикл по периоду не разу не отрабатывает
10. AntonH851 86 02.04.19 14:47 Сейчас в теме
ПервыйПроход = Истина;
	Пока НачалоПериода < ОкончаниеПериодаРасчета Цикл
		ОписаниеЗамера = ОценкаПроизводительности.НачатьЗамерДлительнойОперации(КлючеваяОперация);
		КоличествоПовторяющихсяДанных = 0;
		
		Если ПервыйПроход Тогда
			НомерЗаданияДоРасчета = ЗакрытиеМесяцаСервер.УвеличитьНомерЗадания(ИспользуемыеМетаданные.ИмяКонстантыЗаданий);
			ПервыйПроход = Ложь;
		КонецЕсли;
		
		ОкончаниеПериода = КонецМесяца(НачалоПериода);
		Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
			НачатьТранзакцию();
			Попытка
				ЗаблокироватьРегистрЗаданий(ИспользуемыеМетаданные.ИмяРегистраЗаданий, НомерЗаданияДоРасчета, АналитикиРасчета);
				ДанныеКРасчетуСКлиентамиЗаМесяц = ДанныеКРасчетуСКлиентамиЗаМесяц(НачалоПериода, ОкончаниеПериода, АналитикиРасчета, ИспользуемыеМетаданные, НомерЗаданияДоРасчета);
				ЗафиксироватьТранзакцию();
			Исключение
				ОтменитьТранзакцию();
				ЗаписьЖурналаРегистрации(
					НСтр("ru = 'Не удалось заблокировать регистр заданий'", КодЯзыка), УровеньЖурналаРегистрации.Ошибка);
				ВызватьИсключение;
			КонецПопытки;
		Иначе
			ДанныеКРасчетуСКлиентамиЗаМесяц = ДанныеКРасчетуСКлиентамиЗаМесяц(НачалоПериода, ОкончаниеПериода, АналитикиРасчета, ИспользуемыеМетаданные, НомерЗаданияДоРасчета);
		КонецЕсли;
		СписокОрганизаций = ДанныеКРасчетуСКлиентамиЗаМесяц.Организации;
Показать
11. Al-77 73 24.10.19 10:38 Сейчас в теме
(10) а как победил что то я так и не уловил.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот