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