1. AntonH851 63 02.04.19 10:14 Сейчас в теме

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

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

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

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


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


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

Вакансии

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
Полный день

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 120 000 руб. до 150 000 руб.
Полный день