Форум Кладовочки АЛьФ`а

Общие вопросы => 7.7 => Тема начата: Злоп от 07 июня 2026, 10:15

Название: Определить актуальность ТА...?
Отправлено: Злоп от 07 июня 2026, 10:15
Рассмотрим случай когда ТА <= ТекущаяДата()
Как определить КРАСИВО что ТА - актуальная, то есть после ТА нет проведенных оперативных документов?
Перебирать в обратном направлении оперативные доки - ну, это как-то неаккуратненько...
Название: Re: Определить актуальность ТА...?
Отправлено: Ветер в поле от 07 июня 2026, 12:18
Примерно такая функция может ответить на вопрос актуальности ТА
//*****************************************************************************
Функция глЕстьПроведенныеДокПослеТА() Экспорт

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

Возврат 0;

КонецФункции //глЕстьПроведенныеДокПослеТА

Тут только не учитывается ТекущаяДата, не совсем понятна зачем она тут
Будет выполнено максимум две итерации цикла, смысла в использовании ПрямогоЗапроса тут не вижу
Название: Re: Определить актуальность ТА...?
Отправлено: Злоп от 07 июня 2026, 13:33
Ну, мы тут из одного инкубатора, поэтому это очевидно, но "некрасиво".
.
у меня так написано

Док = СоздатьОбъект("Документ");
Док.УстановитьФильтр(1,0,0,2,1,1); // проведенные, оперативные
Док.ОбратныйПорядок(1);
Док.ВыбратьДокументы(ПозицияТА,);
Если Док.ПолучитьДокумент() = 1 Тогда
Если Док.ПолучитьПозицию() > ПозицияТА
Тогда // есть проведенные доки после ТА, остатки по базе не соответствуют реальным
УстановитьРезультат(0,"типяБяка");
Возврат;
КонецЕсли;
КонецЕсли;
Название: Re: Определить актуальность ТА...?
Отправлено: Злоп от 07 июня 2026, 13:35
Кстати, а что вернет ПолучитьДокументТА() если в ТА нет документа?
Название: Re: Определить актуальность ТА...?
Отправлено: Злоп от 07 июня 2026, 13:39
Ответ:
ТипЗначенияСтр(ПолучитьДокументТА()) = Документ
ПолучитьДокументТА().Выбран() = 0
ПолучитьДокументТА().ТекущийДокумент() =
Название: Re: Определить актуальность ТА...?
Отправлено: Ветер в поле от 07 июня 2026, 15:53
Все остальные методы определения наличия проведенных документов требуют прямого запроса. И это скорее костыль, чем красивое решение. Если бы стандартное решение было долгим, то прямой запрос имело бы смысл использовать. Но тут явно не тот случай.
Название: Re: Определить актуальность ТА...?
Отправлено: Злоп от 07 июня 2026, 23:47
Тогда на том и порешу.
Закрыто.