Определить актуальность ТА...?

Автор Злоп, Вчера в 10:15

« назад - далее »

Злоп

Рассмотрим случай когда ТА <= ТекущаяДата()
Как определить КРАСИВО что ТА - актуальная, то есть после ТА нет проведенных оперативных документов?
Перебирать в обратном направлении оперативные доки - ну, это как-то неаккуратненько...

Ветер в поле

Примерно такая функция может ответить на вопрос актуальности ТА
//*****************************************************************************
Функция глЕстьПроведенныеДокПослеТА() Экспорт
	
	докВсе = СоздатьОбъект("Документ");
	докВсе.УстановитьФильтр(1, 0, 0, 2, 0); //только проведенные, только ОперУчет
	докВсе.ВыбратьДокументы(ПолучитьПозициюТА(), );
	Пока докВсе.ПолучитьДокумент() = 1 Цикл
		Если докВсе.ТекущийДокумент() <> ПолучитьДокументТА() Тогда
			Возврат 1;
		КонецЕсли;
	КонецЦикла;
	
	Возврат 0;
	
КонецФункции //глЕстьПроведенныеДокПослеТА

Тут только не учитывается ТекущаяДата, не совсем понятна зачем она тут
Будет выполнено максимум две итерации цикла, смысла в использовании ПрямогоЗапроса тут не вижу

Злоп

Ну, мы тут из одного инкубатора, поэтому это очевидно, но "некрасиво".
.
у меня так написано

Док = СоздатьОбъект("Документ"); 
		Док.УстановитьФильтр(1,0,0,2,1,1); // проведенные, оперативные
		Док.ОбратныйПорядок(1);
		Док.ВыбратьДокументы(ПозицияТА,);
		Если Док.ПолучитьДокумент() = 1 Тогда
			Если Док.ПолучитьПозицию() > ПозицияТА
			Тогда // есть проведенные доки после ТА, остатки по базе не соответствуют реальным
				УстановитьРезультат(0,"типяБяка");
				Возврат;
			КонецЕсли;
		КонецЕсли;

Злоп

Кстати, а что вернет ПолучитьДокументТА() если в ТА нет документа?

Злоп

Ответ:
ТипЗначенияСтр(ПолучитьДокументТА()) = Документ
ПолучитьДокументТА().Выбран() = 0
ПолучитьДокументТА().ТекущийДокумент() =

Ветер в поле

Все остальные методы определения наличия проведенных документов требуют прямого запроса. И это скорее костыль, чем красивое решение. Если бы стандартное решение было долгим, то прямой запрос имело бы смысл использовать. Но тут явно не тот случай.

Злоп

Тогда на том и порешу.
Закрыто.