Конечный остаток не равен начальному остатку следующего периода #715567


#0 by программистище
Всем добрый день Отчет и запрос простой Остатки в ценах номенклатуры в разрезе организаций по периодам Но не пойму в чем загвоздка, конечный остаток не равен начальному остатку. Левое соединение не должно влиять на результат, если нет дополнительных условий. xml СКД:
#1 by Сияющий Асинхраль
Замечал. Самому надо вылечить этот глюк. Прослеживается на УТ11. Вообще работы с ценами у УТ11 мягко говоря очень странная. Привожу краткий анализ этого дела. Вообще, цены устанавливаются в УТ11 с точностью до секунды, а не как в УТ11 с привязкой к регистратору. Что странно, еще более странно, когда обратишь внимание, что ВСЕ установленные цены несмотря на то, что в конфигураторе указано, что они задаются с точностью до секунды сваливаются на НАЧАЛО ДНЯ, т.е. на время 00:00:00. Похоже именно из-за этого часть установленных цен при определении цен на начало дня не видятся, по крайней мере даже типовой отчет по ценам номенклатуры не видит некоторые документы установки цен :-(. Я сильно предполагаю (но не экспериментировал еще), что если установить цены нормально, т.е. не в начале дня, а именно в момент их установки, то остатки на конец дня и начало следующего должны будут совпадать. Иными словами пока можно либо допилить установку цен руками, либо ждать когда 1С проснется и сделает установку цен нормально с привязкой к регистратору как это было в УТ10.3...
#2 by Сияющий Асинхраль
+ Фразу ", а не как в УТ11 с привязкой к регистратору" следует читать ", а не как в УТ10.3 с привязкой к регистратору"
#3 by программистище
может это вообще тогда глюк платформы 8.2 сейчас буду проверять предположение и кстати да 11.1 ут на 8.2
#4 by Сияющий Асинхраль
Думаю, это не глюк платформы - это криво написанная конфа :-(. Зачем надо было делать цены с точностью до секунды и сваливать все эти цены в одну единственную секунду в течении дня, боюсь, это даже 1С не сможет объяснить :-(. Обрати внимание, установленные сегодня цены, в типовой УТ в ценниках видятся только завтрашним днем :-( - это еще одна кривизна установки цен от 1С, кстати тоже, похоже, по той же причине - ценники видят цены опять таки на начало дня :-(, вместо того, чтобы видеть цены на текущий момент или, лучше, на конец дня...
#5 by программистище
но остатки соединяются левым соединением с ценами я пробовал и вложенным запросом и виртуальной таблицей результат одинаковый при этом условия накладываются только на выборку внутри разве это должно влиять на сами остатки
#6 by Сияющий Асинхраль
Я же говорю - я не пробовал, хотя попробую, как только до базы доберусь, если сама база и конфа перед тобой поменяй движения по регистру цен так, чтобы сами цены сваливались на время документа, а не на начало дня. Думаю, глюк уйдет. Как только доберусь до базы сам это сделаю...
#7 by программистище
а главное чудный запрос у них в типовом ВедомостьПоТоварамОрганизацийВЦенахНоменклатуры может у меня что не так, в моем запросе?
#8 by m-serg74
да чето слишком замудреный какой то, попроще не можно было сделать?
#9 by m-serg74
+  и что то не видно Остаток чего получаешь то?
#10 by программистище
ну как 1) получаю номенклатуру с периодами (месяц) 2) получаю максимальную цену номенклатуры на этот период 3) соединяю остатки с ценами по периоду
#11 by программистище
там соединение по номенклатуре, а вывожу обобщенно по организации
#12 by программистище
но даже если добавить номенклатуру, все так же будет
#13 by m-serg74
сли убрать из отчета цены тогда все правильно работает?
#14 by программистище
да, проверено
#15 by программистище
и главное не важно какое соединение делаешь начальные остатки не совпадают с конечными
#16 by m-serg74
значит соединение задваивает где то
#17 by программистище
важно, если бы задваивало, то реальный остаток был бы меньше, чем получаемый в моем отчете но в моем отчете получается меньше как будто записи наоборот отсеиваются
#18 by m-serg74
не факт, может двоить и Расход
#19 by m-serg74
в консоли проверь получение цен, и посмотри что там
#20 by программистище
да вот в консоли и сижу
#21 by m-serg74
вот здесь рупь за сто будут двойники ВЫБРАТЬ     ТоварыОрганизацийОстаткиИОбороты.ПериодМесяц,     ТоварыОрганизацийОстаткиИОбороты.Номенклатура
#22 by m-serg74
+  сделай хотя б ВЫБРАТЬ РАЗЛИЧНЫЕ
#23 by m-serg74
а вообще не понимаю назначение этой ВТ
#24 by floody
остатки и обороты так и работают, в проф. разработке целая глава
#25 by m-serg74
как так?
#26 by m-serg74
сторно :)
#27 by Сияющий Асинхраль
Увы, я был неправ. Они ставят документ установки цен начиная с 00:00:00 через секунду. Тем не менее остатки начальные и конечные все равно не совпадают даже в типовом отчете :-(
#28 by Сияющий Асинхраль
Похоже типовой отчет по остаткам в ценах номенклатуры просто тупо хватает первую установку цен :-( (которая не должна бы сваливаться на начало периода), ту самая которая идет со временем 00:00:00 - прикольно...
#29 by Сияющий Асинхраль
Итого, получается, что отчет по остаткам в ценах номенклатуры видит остатки в ценах на конец дня, а вот остатки в на начало видятся в ценах, которые уже изменены первым документом установки цен номенклатуры в этом дне :-(. Именно поэтому и не совпадают остатки. Поправить это можно, похоже, только если сдвинуть время первого документа установки цен со времени 00:00:00 хотя бы на одну секунду, соответственно сдвигая на одну секунду и остальные документы...
#30 by RomanYS
Запрос к таблице ОстаткиИОбороты возвращает выборку только по тем периодам, где есть обороты. Когда обращаешься просто к этой таблице СКД дополняет отсутствующие периоды и все получается красиво. Для более сложного запроса в СКД надо указывать в ролях полей "НачальныОстаток", "КонечныйОстаток"
#31 by Сияющий Асинхраль
Все ты правильно говоришь, но по любому типовой отчет работает неправильно :-(, т.е. менять либо типовой отчет, либо документ установки цен. Думаю, что проще отчет поменять...
#32 by программистище
т.е. если мы сделаем простой запрос к остаткам оборотам и поместим в виртуальную таблицу а потом соединим его уже с другой виртуальной таблицей, то все правильно получится?
#33 by RomanYS
нет простой запрос (без СКД и построителя) уже возвращает "неправильно": если у тебя в месяце не было оборотов по элементу номенклатуры (но был начальный остаток = конечному остатку), то в выборке не будет записи по этой номенклатуре за этот месяц, и будет разрыв с предыдущим месяцем. СКД умеет это исправлять - для этого необходимо как минимум указать роли полей (возможно нужны ещё какие-то танцы с бубнами) Для простого запроса констуктор СКД делает это автоматически
#34 by программистище
та дело то не в том что в месяце не было оборотов, а в том что даже если обороты и есть то остаток на конец месяца не равен остатку на начало следующего месяца даже если в обоих месяцах есть обороты
#35 by Сияющий Асинхраль
Я же сказал почему... Отчет остатки товаров в ценах номенклатуры в начальные остатки хватают первый документ установки цен, который стоит на 00:00:00 на дату начала :-(, попытался на секунду сдвинуть период начала ДобавитьКДате(&ПериодОтчета.ДатаНачала,"Секунда",-1) Не воспринимает... падла...
#36 by программистище
результат не изменился в отчете или что не воспринимает?
#37 by программистище
я переделал отчет получаю два периода начало месяца и окончание и цены выбираю на конец месяца результат такой же
#38 by Сияющий Асинхраль
Нет, он падла воспринимает то, что не нужно :-(, смысл такой 1С записывает все документы установки цен через секунду начиная с 00:00:00 и в отчете самый первый документ тот самый, что на 00 учитывается при расчете начальных остатков, т.е. на конец предыдущего дня он не учитывается, а на начало текущего - учитывается :-(. Вот и лезет разница в отчете, т.е. получается, что данные на конец предыдущего дня не равны данным на начало текущего...
#39 by Сияющий Асинхраль
Победил!!!
#40 by программистище
чем? изменением проведения установок цен?
#41 by программистище
короче, я сформировал остатки обычной таблицей медленно, но цифры реальные :(
#42 by Сияющий Асинхраль
Ну я уже несколько раз сказал, что надо сделать: либо убрать установку цен со времени 00:00:00, либо время начала отчета сдвинуть назад хотя бы на одну секунду. Я сдвинул время начала отчета...
#43 by программистище
спасибо, проверю
#44 by Сияющий Асинхраль
Касательно отчета ведомость по остаткам в ценах номенклатуры достаточно значение функции определяющее начало периода: &ПериодОтчета.ДатаНачала заменить на: ДобавитьКДате(&ПериодОтчета.ДатаНачала,"Секунда",-1) Вчера не сразу заметил, что заменял в другом отчете :-(, и чертыхался поэтому, что не работает. На самом деле работает, все в норме...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С