KISS в отборах СКД

Принцип KISS никто не отменял.

Мне нужно было чтобы пользователь мог отбирать контрагентов по условию:

Причем это условие накладывалось только на контрагентов, не на детальные записи.

Я написал очень сложный отбор для группировки по контрагенту, но он все равно не работал:

Я уже хотел делать логическую декомпозицию, но вспомнил про вычисляемые поля. В итоге отбор стал выглядеть так:

А вычисляемое поле имело следующую формулу:

ВЫБОР КОГДА &НамДолжныПоСправкам ТОГДА ЕСТЬNULL(КонечныйОстатокПоСправкам, 0) > 0 ИНАЧЕ Истина КОНЕЦ
И ВЫБОР КОГДА &МыДолжныПоСправкам ТОГДА ЕСТЬNULL(КонечныйОстатокПоСправкам, 0) < 0 ИНАЧЕ Истина КОНЕЦ

И ВЫБОР КОГДА &НамДолжныПоСчетам ТОГДА ЕСТЬNULL(КонечныйОстатокПоСчетам, 0) > 0 ИНАЧЕ Истина КОНЕЦ
И ВЫБОР КОГДА &МыДолжныПоСчетам ТОГДА ЕСТЬNULL(КонечныйОстатокПоСчетам, 0) < 0 ИНАЧЕ Истина КОНЕЦ           

И ВЫБОР КОГДА &НамДолжныПоАктам ТОГДА ЕСТЬNULL(КонечныйОстатокПоАктам, 0) > 0 ИНАЧЕ Истина КОНЕЦ
И ВЫБОР КОГДА &МыДолжныПоАктам ТОГДА ЕСТЬNULL(КонечныйОстатокПоАктам, 0) < 0 ИНАЧЕ Истина КОНЕЦ

Но этого оказалось мало. Детальные записи все равно не выводились.

Потому что это поле рассчитывается и в детальных записях. Пришлось добавить его в ресурсы:

Только после этого отбор по полю начал действовать только на уровне контрагент.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *