Надеюсь кто нибудь из местных гуру по динамическим спискам сможет мне помочь.
Коротко суть проблемы:
УНФ, ПриходнаяНакладная, форма списка.
В динамическом запросе добавляю левое соединение с итогом по полю СуммаРасчета из таблицы документа Предоплаты.
И булево поле ПолныйРасчет, который принимает значение ИСТИНА в случае если СуммаРасчета+1 больше суммы документа.
Вывожу на форму.
Отбор по полю ПолныйРасчет работает идеально во всех случаях.
Отбор по полю СуммаРасчета работает идеально... НО ЛИШЬ ДО МОМЕНТА, когда выбираю СуммаРасчета=0.
Такой колбасни платформы я даже не мог себе представить. СуммаРасчета и ПолныйРасчет во всех полях исчезают.
Соответственно, в результат отбора выпадают все поля.
Пока отбор по полю=0, суммы нигде не появляются. Стоит убрать отбор и во всех полях проявляются и СуммаРасчета и ПолныйРасчет.
Если кому интересно, выбрасываю
полный код ДС
ВЫБРАТЬ
ДокументПриходнаяНакладная.ПометкаУдаления,
ДокументПриходнаяНакладная.Номер,
ДокументПриходнаяНакладная.Дата,
ДокументПриходнаяНакладная.Проведен,
ДокументПриходнаяНакладная.ВидОперации,
ДокументПриходнаяНакладная.Организация,
ДокументПриходнаяНакладная.Контрагент,
ДокументПриходнаяНакладная.Договор,
ДокументПриходнаяНакладная.ДокументОснование,
ДокументПриходнаяНакладная.Заказ,
ДокументПриходнаяНакладная.СтруктурнаяЕдиница,
ДокументПриходнаяНакладная.Ячейка,
ДокументПриходнаяНакладная.ВключатьРасходыВСебестоимость,
ДокументПриходнаяНакладная.ВалютаДокумента,
ДокументПриходнаяНакладная.НалогообложениеНДС,
ДокументПриходнаяНакладная.СуммаВключаетНДС,
ДокументПриходнаяНакладная.НДСВключатьВСтоимость,
ДокументПриходнаяНакладная.Курс,
ДокументПриходнаяНакладная.Кратность,
ДокументПриходнаяНакладная.СуммаДокумента,
ДокументПриходнаяНакладная.ВидЦенКонтрагента,
ДокументПриходнаяНакладная.РегистрироватьЦеныПоставщика,
ДокументПриходнаяНакладная.НомерВходящегоДокумента,
ДокументПриходнаяНакладная.ДатаВходящегоДокумента,
ДокументПриходнаяНакладная.Комментарий,
ДокументПриходнаяНакладная.Подразделение,
ДокументПриходнаяНакладная.Ответственный,
ДокументПриходнаяНакладная.Автор,
ДокументПриходнаяНакладная.ПоложениеЗаказаПоставщику,
ДокументПриходнаяНакладная.ДисконтнаяКарта,
ДокументПриходнаяНакладная.ЧекККМ,
ДокументПриходнаяНакладная.ХозяйственнаяОперация,
ДокументПриходнаяНакладная.Запасы,
ДокументПриходнаяНакладная.Расходы,
ДокументПриходнаяНакладная.Предоплата,
ДокументПриходнаяНакладная.ДополнительныеРеквизиты,
ДокументПриходнаяНакладная.МоментВремени,
СостоянияЭД.СостояниеВерсииЭД,
//ZDN 27.06.18 Добавим колонки для контроля
ЕСТЬNULL(Предоплаты.СуммаРасчетов, 0) КАК СуммаРасчетов,
ЕСТЬNULL(Предоплаты.СуммаРасчетов+1 > ДокументПриходнаяНакладная.СуммаДокумента, ЛОЖЬ) КАК ПолныйРасчет
ИЗ
Документ.ПриходнаяНакладная КАК ДокументПриходнаяНакладная
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД
ПО (СостоянияЭД.СсылкаНаОбъект = ДокументПриходнаяНакладная.Ссылка)
//ZDN 27.06.18 Добавим колонки для контроля
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Ссылка, СУММА(СуммаРасчетов) КАК СуммаРасчетов ИЗ Документ.ПриходнаяНакладная.Предоплата СГРУППИРОВАТЬ ПО ССЫЛКА) КАК Предоплаты
ПО ДокументПриходнаяНакладная.Ссылка=Предоплаты.Ссылка
(2) Друг, я очень ценю твою попытку помочь!
К сожалению, ты не до конца понял суть проблемы и делаешь попытку исправить то, что и так работает идеально.
Отбор по полю ПолныйРасчет работает идеально во всех случаях
Проблема связана с полем СуммаРасчета.
Поверь, я перебрал десяток различных конструкций и вариантов для модели этого динамического списка, в том числе для каждого из полей ПолныйРасчет и СуммаРасчета. И делал виртуальные таблицы предварительно... И делал несколько соединений... во всех случаях различается лишь время исполнения, ошибка (отбор по СуммаРасчета=0) не исчезает и стабильно, как черная полоса проявляется через все отражения...
или так:
ЕСТЬNULL(Предоплаты.СуммаРасчетов, -1)+1 > ДокументПриходнаяНакладная.СуммаДокумента КАК ПолныйРасчет
Если первая версия в принципе, по действию почти аналогична приведённой мною (за одним небольшим ньюансом, который тоже связан с особенностями отбора в форме), то вторая теряет свою основополагающую часть - разницы по оплате до гривны не должны проявляться, т.к. в большинстве случаев дело касается копеек, которые бухгалтерии точно не согласовали между собой. Плюс заказы, которые еще в процессе заполнения, могут иметь номенклатуру со стоимостью 0,01 грн... Для управленческого анализа они вообще не нужны, т.к. рассеивают внимание от более важных вопросов.
(2) Все предлагаемые варианты не верны и по арифметике и по логике заложенной автором в эту проверку. Вы явно не поняли чего он добивался.
По арифметике:
1) для ЕСТЬNULL(Предоплаты.СуммаРасчетов, 0)+1
тут, если нет предоплаты, Вы всегда будете получать 1.00 - а нафига ?? ... предоплаты-то нет
2) для ЕСТЬNULL(Предоплаты.СуммаРасчетов, -1)+1
тут, если нет предоплаты, Вы всегда будете получать 0.00 - вроде красиво ... но, вдруг у нас приходная с "минусом", тогда мы получим ИСТИНА - а нафига ?? ... предоплаты-то нет )))
а если предоплата все-таки была ... так тут Вы ее увеличите на целый рубль - а нафига ?? )))
Думаю, теперь яснее что хотел "поймать" автор, вернее скока это в гривнах )))))