Не обработанные задания к распределению расчетов с клиентами
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Тогда у меня вот напрашивается другой вопрос:
Почему разработчики сделали так:
Почему нельзя было сделать, чтобы начало периода рассчета бралась по самому раннему заданию из регистра
Почему разработчики сделали так:
#Область ГраницыАналитикКРасчету
Функция НачалоРасчета(ИмяРегистраЗаданий, ОкончаниеРасчета, АналитикиРасчета, НомерЗадания = 0)
ТекстЗапроса = "
|ВЫБРАТЬ
| МИНИМУМ(Задания.Месяц) КАК НачалоПериодаРасчета
|ИЗ
| ИмяРегистраЗаданий КАК Задания
|ГДЕ
| Задания.Месяц <= &ОкончаниеРасчета
| И (Задания.АналитикаУчетаПоПартнерам В (&АналитикиУчетаПоПартнерам)
| ИЛИ &ПоВсемАналитикам)
| И (Задания.Организация В (&Организации)
| ИЛИ &ПоВсемОрганизациям)
| И (Задания.НомерЗадания <= &НомерЗадания
| ИЛИ &ПоВсемНомерамЗаданий)
|ИМЕЮЩИЕ
| НЕ (МИНИМУМ(Задания.Месяц) ЕСТЬ NULL)
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"ИмяРегистраЗаданий", "РегистрСведений."+ИмяРегистраЗаданий);
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ОкончаниеРасчета", ОкончаниеРасчета);
Запрос.УстановитьПараметр("АналитикиУчетаПоПартнерам", АналитикиРасчета.АналитикиУчетаПоПартнерам);
Запрос.УстановитьПараметр("ПоВсемАналитикам", Не ЗначениеЗаполнено(АналитикиРасчета.АналитикиУчетаПоПартнерам));
Запрос.УстановитьПараметр("Организации", АналитикиРасчета.Организации);
Запрос.УстановитьПараметр("ПоВсемОрганизациям", Не ЗначениеЗаполнено(АналитикиРасчета.Организации));
Запрос.УстановитьПараметр("НомерЗадания", НомерЗадания);
Запрос.УстановитьПараметр("ПоВсемНомерамЗаданий", НомерЗадания = 0);
Выборка = Запрос.Выполнить().Выбрать();
Возврат ?(Выборка.Следующий(), Выборка.НачалоПериодаРасчета, КонецМесяца(ОкончаниеРасчета) + 1);
КонецФункции
ПоказатьПочему нельзя было сделать, чтобы начало периода рассчета бралась по самому раннему заданию из регистра
Ща попробую сделать чтобы выполнялось и посмотрю что будет:
//ИЗМ+ А.А. 02.04.2019
Если НомерЗадания = 0 И ИмяРегистраЗаданий = "ЗаданияКРаспределениюРасчетовСКлиентами" Тогда
ЗапросНЗ = Новый Запрос;
ЗапросНЗ.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ЗаданияКРаспределениюРасчетовСКлиентами.НомерЗадания) КАК НомерЗадания
|ИЗ
| РегистрСведений.ЗаданияКРаспределениюРасчетовСКлиентами КАК ЗаданияКРаспределениюРасчетовСКлиентами";
РезультатЗапроса = ЗапросНЗ.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НомерЗадания = ВыборкаДетальныеЗаписи.НомерЗадания;
КонецЦикла;
КонецЕсли;
//ИЗМ- А.А. 02.04.2019
//ИЗМ+ А.А. 02.04.2019
Если НомерЗадания = 0 И ИмяРегистраЗаданий = "ЗаданияКРаспределениюРасчетовСКлиентами" Тогда
ЗапросНЗ = Новый Запрос;
ЗапросНЗ.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ЗаданияКРаспределениюРасчетовСКлиентами.НомерЗадания) КАК НомерЗадания
|ИЗ
| РегистрСведений.ЗаданияКРаспределениюРасчетовСКлиентами КАК ЗаданияКРаспределениюРасчетовСКлиентами";
РезультатЗапроса = ЗапросНЗ.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НомерЗадания = ВыборкаДетальныеЗаписи.НомерЗадания;
КонецЦикла;
КонецЕсли;
//ИЗМ- А.А. 02.04.2019
ПервыйПроход = Истина;
Пока НачалоПериода < ОкончаниеПериодаРасчета Цикл
ОписаниеЗамера = ОценкаПроизводительности.НачатьЗамерДлительнойОперации(КлючеваяОперация);
КоличествоПовторяющихсяДанных = 0;
Если ПервыйПроход Тогда
НомерЗаданияДоРасчета = ЗакрытиеМесяцаСервер.УвеличитьНомерЗадания(ИспользуемыеМетаданные.ИмяКонстантыЗаданий);
ПервыйПроход = Ложь;
КонецЕсли;
ОкончаниеПериода = КонецМесяца(НачалоПериода);
Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
НачатьТранзакцию();
Попытка
ЗаблокироватьРегистрЗаданий(ИспользуемыеМетаданные.ИмяРегистраЗаданий, НомерЗаданияДоРасчета, АналитикиРасчета);
ДанныеКРасчетуСКлиентамиЗаМесяц = ДанныеКРасчетуСКлиентамиЗаМесяц(НачалоПериода, ОкончаниеПериода, АналитикиРасчета, ИспользуемыеМетаданные, НомерЗаданияДоРасчета);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Не удалось заблокировать регистр заданий'", КодЯзыка), УровеньЖурналаРегистрации.Ошибка);
ВызватьИсключение;
КонецПопытки;
Иначе
ДанныеКРасчетуСКлиентамиЗаМесяц = ДанныеКРасчетуСКлиентамиЗаМесяц(НачалоПериода, ОкончаниеПериода, АналитикиРасчета, ИспользуемыеМетаданные, НомерЗаданияДоРасчета);
КонецЕсли;
СписокОрганизаций = ДанныеКРасчетуСКлиентамиЗаМесяц.Организации;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот