чудеса с ИспользоватьКорСубконто v7.7

Новая тема
Показывать по 10 20 40 сообщений
"Релиз 7.70.027
конфигурация - любая на компоненте бухучет

Вот как вы думаете, почему не работает так:

СписокКонтрагентов=СоздатьОбъект("СписокЗначений");
СписокКонтрагентов.ДобавитьЗначение(ВыбДоговор.Владелец);
БухИт=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты,СписокКонтрагентов,2);
БухИт.ВыполнитьЗапрос(Дата("01.04.2009"),Дата("30.06.2009"),"51","62.1",,2);
Сообщить(БухИт.КорДО()); //выводится 0

но работает так:

СписокДоговоров=СоздатьОбъект("СписокЗначений");
СписокДоговоров.ДобавитьЗначение(ВыбДоговор);
БухИт=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьКорСубконто(ВидыСубконто.Договоры,СписокДоговоров,2);
БухИт.ВыполнитьЗапрос(Дата("01.04.2009"),Дата("30.06.2009"),"51","62.1",,2);
Сообщить(БухИт.КорДО()); //выводится нужная сумма

кстати, если фильтр - не список, а ссылка на элемент, то работает нормально. я не понимаю логику разработчика движка :("
Если бы это было единственное :)
БухИтогами надо работать осторожно, и часто устраивать "пляски с бубном" :)
Именно такое впечатление у меня от них осталось.
Вот сейчас и стану плясать с бубном да жезлом. Переставлять стану доминантную и дополняющую выборку местами, когда возможно возникновение проблемы. Это я наваял что то вроде "универсального отчета по бухитогам", который полностью настраивается пользователем. Задумка такая: пользователь имеет возможность насоздавать в программе кучу так называемых шаблонов, в которых может сам указать какие запросы к бухитогам выполнить, настроить фильтры и признаки разверток по субконто произвольным образом. При этом возможны обращения к остаткам и оборотам. Вот с оборотами то и заморочка. Когда указываются фильтры и в дебетовую и в кредитовую сторону, возникают грабли при применении ИспользоватьКорСубконто, когда они заданы списом по виду субконто не самого последнего уровня, которые есть на счете. Думается, что это в движке проблема, со своей стороны я ее поправить не могу, могу только минимизировать вероятность возникновения ситуации разными ухищрениями
"> Релиз 7.70.027
> конфигурация - любая на компоненте бухучет
>
> Вот как вы думаете, почему не работает так:
>
> СписокКонтрагентов=СоздатьОбъект("СписокЗначений");
> СписокКонтрагентов.ДобавитьЗначение(ВыбДоговор.Владелец);
> БухИт=СоздатьОбъект("БухгалтерскиеИтоги");
> БухИт.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты,СписокКонтрагентов,2);
> БухИт.ВыполнитьЗапрос(Дата("01.04.2009"),Дата("30.06.2009"),"51","62.1",,2);
> Сообщить(БухИт.КорДО()); //выводится 0
>

а так работает?

писокКонтрагентов=СоздатьОбъект("СписокЗначений");
СписокКонтрагентов.ДобавитьЗначение(ВыбДоговор.Владелец);
БухИт=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты,СписокКонтрагентов,1);
БухИт.ВыполнитьЗапрос(Дата("01.04.2009"),Дата("30.06.2009"),"51","62.1",,2);
Сообщить(БухИт.КорДО());"
Завтра попробую. Сейчас я не у того клиента, которому делал эту штуку. Но это не выход, так как возможен и фильтр и развертка. Пользователю дал возможность ставить "галочку" в признак "разворачивать по субконто" и по идее и тот и другой способ востребован
> Завтра попробую. Сейчас я не у того клиента, которому делал эту штуку. Но это не выход, так как возможен и фильтр и развертка. Пользователю дал возможность ставить "галочку" в признак "разворачивать по субконто" и по идее и тот и другой способ востребован

я думаю, что должно будет заработать т.к. с отбором - вечные проблемы были....
Хотя, в приницпе... да, это решение! Если с разверткой заработает, то я все время стану запросы к бухитогам в этом месте с разверткой и посылать, а пользователю показывать так как он хочет, либо свернуто, либо с разверткой. Завтра попробую, спасибо за наводку
Нет, так тоже не работает. В общем, пока вышел из ситуации дополнительным анализом описанного пользователем правила выборки данных и переставляю местами Счет и КорСчет, при этом вместо ИспользоватьКорСубконто() вызываю ИспользоватьСубконто() и оно работает. Но не факт, что пользователь не создаст сложное правило для выборки сведений бухитогов, проблема все равно возникнет, хотя это маловероятно
"а точно ПустоеЗначение(ВыбДоговор.Владелец) <> 0 ?
+
а так :

СписокКонтрагентов=СоздатьОбъект("СписокЗначений");
СписокКонтрагентов.ДобавитьЗначение(ВыбДоговор.Владелец);
БухИт=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьСубконто();
БухИт.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты,СписокКонтрагентов,2);
БухИт.ВыполнитьЗапрос(Дата("01.04.2009"),Дата("30.06.2009"),"51","62.1",,2);"
"> а точно ПустоеЗначение(ВыбДоговор.Владелец) <> 0 ?
Конечно точно :)
я когда пример писал, упростил до невозможности алгоритм, чтобы показать суть бага. Реально в моей программе такого места вовсе нет, мой алгоритм это 2842 строчки :))) не буду же я их сюда кидать и просить посмотреть чего это там глючит. В общем, могу дать точную описание бага, если это нужно. Кстати, надо бы, чтобы представители 1С перенаправили эту информацию тем, кто движок поддерживает (это для v7.7 еще делается?):

Итак, формулировка бага:
При использовании метода ИспользоватьКорСубконто() объекта БухгалтерскиеИтоги с применением в нем фильтра или развертки в виде списка значений по виду субконто, не являющимся самым глубоким по уровню на кор.счете, который участвует в запросе, результатом является 0.

Дополнение:
1. Все замечательно работает, если в ИспользоватьКорСубконто() указывать не список значений, а ссылку на элемент аналитики.
2. Все замечательно работает, если поменять местами Счет и КорСчет в запросе и вместо ИспользоватьКорСубконто() использовать ИспользоватьСубконто(), но такой прием не подходит если у меня стоит задача использовать фильтрацию и по прямой и по корреспондирующей стороне.

> БухИт.ИспользоватьСубконто();
не помогло

да ладно, я вроде уже обрулил этот баг, снизив вероятность его возникновения :)"
Читают тему
(гостей: 1)

Быстрый переход