|
Конечный остаток не равен начальному остатку следующего периода | ☑ | ||
---|---|---|---|---|
0
программистище
28.07.14
✎
10:42
|
Всем добрый день
Отчет и запрос простой Остатки в ценах номенклатуры в разрезе организаций по периодам Но не пойму в чем загвоздка, конечный остаток не равен начальному остатку. Левое соединение не должно влиять на результат, если нет дополнительных условий. xml СКД: http://fls-host.rusfolder.net/files/41308642 |
|||
1
Сияющий Асинхраль
28.07.14
✎
11:15
|
Замечал. Самому надо вылечить этот глюк. Прослеживается на УТ11. Вообще работы с ценами у УТ11 мягко говоря очень странная. Привожу краткий анализ этого дела. Вообще, цены устанавливаются в УТ11 с точностью до секунды, а не как в УТ11 с привязкой к регистратору. Что странно, еще более странно, когда обратишь внимание, что ВСЕ установленные цены несмотря на то, что в конфигураторе указано, что они задаются с точностью до секунды сваливаются на НАЧАЛО ДНЯ, т.е. на время 00:00:00. Похоже именно из-за этого часть установленных цен при определении цен на начало дня не видятся, по крайней мере даже типовой отчет по ценам номенклатуры не видит некоторые документы установки цен :-(. Я сильно предполагаю (но не экспериментировал еще), что если установить цены нормально, т.е. не в начале дня, а именно в момент их установки, то остатки на конец дня и начало следующего должны будут совпадать. Иными словами пока можно либо допилить установку цен руками, либо ждать когда 1С проснется и сделает установку цен нормально с привязкой к регистратору как это было в УТ10.3...
|
|||
2
Сияющий Асинхраль
28.07.14
✎
11:16
|
+(1) Фразу ", а не как в УТ11 с привязкой к регистратору" следует читать ", а не как в УТ10.3 с привязкой к регистратору"
|
|||
3
программистище
28.07.14
✎
11:29
|
(1) может это вообще тогда глюк платформы 8.2
сейчас буду проверять (1) предположение и кстати да 11.1 ут на 8.2 |
|||
4
Сияющий Асинхраль
28.07.14
✎
11:38
|
(3) Думаю, это не глюк платформы - это криво написанная конфа :-(. Зачем надо было делать цены с точностью до секунды и сваливать все эти цены в одну единственную секунду в течении дня, боюсь, это даже 1С не сможет объяснить :-(. Обрати внимание, установленные сегодня цены, в типовой УТ в ценниках видятся только завтрашним днем :-( - это еще одна кривизна установки цен от 1С, кстати тоже, похоже, по той же причине - ценники видят цены опять таки на начало дня :-(, вместо того, чтобы видеть цены на текущий момент или, лучше, на конец дня...
|
|||
5
программистище
28.07.14
✎
11:43
|
но остатки соединяются левым соединением с ценами
я пробовал и вложенным запросом и виртуальной таблицей результат одинаковый при этом условия накладываются только на выборку внутри разве это должно влиять на сами остатки |
|||
6
Сияющий Асинхраль
28.07.14
✎
11:52
|
Я же говорю - я не пробовал, хотя попробую, как только до базы доберусь, если сама база и конфа перед тобой поменяй движения по регистру цен так, чтобы сами цены сваливались на время документа, а не на начало дня. Думаю, глюк уйдет. Как только доберусь до базы сам это сделаю...
|
|||
7
программистище
28.07.14
✎
12:39
|
а главное чудный запрос у них в типовом ВедомостьПоТоварамОрганизацийВЦенахНоменклатуры
может у меня что не так, в моем запросе? |
|||
8
m-serg74
28.07.14
✎
12:43
|
(7) да чето слишком замудреный какой то, попроще не можно было сделать?
|
|||
9
m-serg74
28.07.14
✎
12:45
|
+(8) и что то не видно Остаток чего получаешь то?
ВЫБРАТЬ СУММА(ТоварыОрганизацийОстаткиИОбороты.КоличествоКонечныйОстаток * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК ОстатокСумма, СУММА(ТоварыОрганизацийОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток, ТоварыОрганизацийОстаткиИОбороты.ПериодМесяц, ТоварыОрганизацийОстаткиИОбороты.ПериодГод, ТоварыОрганизацийОстаткиИОбороты.Организация, СУММА(ТоварыОрганизацийОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход, СУММА(ТоварыОрганизацийОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход, СУММА(ТоварыОрганизацийОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток |
|||
10
программистище
28.07.14
✎
12:46
|
ну как
1) получаю номенклатуру с периодами (месяц) 2) получаю максимальную цену номенклатуры на этот период 3) соединяю остатки с ценами по периоду |
|||
11
программистище
28.07.14
✎
12:47
|
(9) там соединение по номенклатуре,
а вывожу обобщенно по организации |
|||
12
программистище
28.07.14
✎
12:48
|
(11) но даже если добавить номенклатуру, все так же будет
|
|||
13
m-serg74
28.07.14
✎
12:52
|
(12) сли убрать из отчета цены тогда все правильно работает?
|
|||
14
программистище
28.07.14
✎
12:54
|
да, проверено
|
|||
15
программистище
28.07.14
✎
12:55
|
и главное не важно какое соединение делаешь
начальные остатки не совпадают с конечными |
|||
16
m-serg74
28.07.14
✎
12:59
|
(15) значит соединение задваивает где то
|
|||
17
программистище
28.07.14
✎
13:02
|
(16) важно, если бы задваивало, то реальный остаток был бы меньше, чем получаемый в моем отчете
но в моем отчете получается меньше как будто записи наоборот отсеиваются |
|||
18
m-serg74
28.07.14
✎
13:04
|
(17) не факт, может двоить и Расход
|
|||
19
m-serg74
28.07.14
✎
13:04
|
(17) в консоли проверь получение цен, и посмотри что там
|
|||
20
программистище
28.07.14
✎
13:06
|
(19) да вот в консоли и сижу
|
|||
21
m-serg74
28.07.14
✎
13:10
|
(20) вот здесь рупь за сто будут двойники
ВЫБРАТЬ ТоварыОрганизацийОстаткиИОбороты.ПериодМесяц, ТоварыОрганизацийОстаткиИОбороты.Номенклатура ПОМЕСТИТЬ ВтНоменклатура ИЗ РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, Авто, , ) КАК ТоварыОрганизацийОстаткиИОбороты |
|||
22
m-serg74
28.07.14
✎
13:11
|
+(21) сделай хотя б ВЫБРАТЬ РАЗЛИЧНЫЕ
|
|||
23
m-serg74
28.07.14
✎
13:11
|
а вообще не понимаю назначение этой ВТ
|
|||
24
floody
28.07.14
✎
13:11
|
остатки и обороты так и работают, в проф. разработке целая глава
|
|||
25
m-serg74
28.07.14
✎
13:12
|
(24) как так?
|
|||
26
m-serg74
28.07.14
✎
13:14
|
(22) сторно :)
|
|||
27
Сияющий Асинхраль
29.07.14
✎
14:10
|
Увы, я был неправ. Они ставят документ установки цен начиная с 00:00:00 через секунду. Тем не менее остатки начальные и конечные все равно не совпадают даже в типовом отчете :-(
|
|||
28
Сияющий Асинхраль
29.07.14
✎
14:17
|
Похоже типовой отчет по остаткам в ценах номенклатуры просто тупо хватает первую установку цен :-( (которая не должна бы сваливаться на начало периода), ту самая которая идет со временем 00:00:00 - прикольно...
|
|||
29
Сияющий Асинхраль
29.07.14
✎
14:33
|
Итого, получается, что отчет по остаткам в ценах номенклатуры видит остатки в ценах на конец дня, а вот остатки в на начало видятся в ценах, которые уже изменены первым документом установки цен номенклатуры в этом дне :-(. Именно поэтому и не совпадают остатки. Поправить это можно, похоже, только если сдвинуть время первого документа установки цен со времени 00:00:00 хотя бы на одну секунду, соответственно сдвигая на одну секунду и остальные документы...
|
|||
30
RomanYS
29.07.14
✎
14:51
|
Запрос к таблице ОстаткиИОбороты возвращает выборку только по тем периодам, где есть обороты.
Когда обращаешься просто к этой таблице СКД дополняет отсутствующие периоды и все получается красиво. Для более сложного запроса в СКД надо указывать в ролях полей "НачальныОстаток", "КонечныйОстаток" |
|||
31
Сияющий Асинхраль
29.07.14
✎
15:02
|
(30) Все ты правильно говоришь, но по любому типовой отчет работает неправильно :-(, т.е. менять либо типовой отчет, либо документ установки цен. Думаю, что проще отчет поменять...
|
|||
32
программистище
29.07.14
✎
16:03
|
(30) т.е. если мы сделаем простой запрос к остаткам оборотам и поместим в виртуальную таблицу
а потом соединим его уже с другой виртуальной таблицей, то все правильно получится? |
|||
33
RomanYS
29.07.14
✎
16:13
|
(32) нет
простой запрос (без СКД и построителя) уже возвращает "неправильно": если у тебя в месяце не было оборотов по элементу номенклатуры (но был начальный остаток = конечному остатку), то в выборке не будет записи по этой номенклатуре за этот месяц, и будет разрыв с предыдущим месяцем. СКД умеет это исправлять - для этого необходимо как минимум указать роли полей (возможно нужны ещё какие-то танцы с бубнами) Для простого запроса констуктор СКД делает это автоматически |
|||
34
программистище
29.07.14
✎
16:48
|
(33) та дело то не в том что в месяце не было оборотов, а в том что даже если обороты и есть то остаток на конец месяца не равен остатку на начало следующего месяца
даже если в обоих месяцах есть обороты |
|||
35
Сияющий Асинхраль
29.07.14
✎
16:53
|
Я же сказал почему... Отчет остатки товаров в ценах номенклатуры в начальные остатки хватают первый документ установки цен, который стоит на 00:00:00 на дату начала :-(, попытался на секунду сдвинуть период начала
ДобавитьКДате(&ПериодОтчета.ДатаНачала,"Секунда",-1) Не воспринимает... падла... |
|||
36
программистище
29.07.14
✎
16:56
|
(35) результат не изменился в отчете или что не воспринимает?
|
|||
37
программистище
29.07.14
✎
17:00
|
(36) я переделал отчет
получаю два периода начало месяца и окончание и цены выбираю на конец месяца результат такой же |
|||
38
Сияющий Асинхраль
29.07.14
✎
17:10
|
(36) Нет, он падла воспринимает то, что не нужно :-(, смысл такой 1С записывает все документы установки цен через секунду начиная с 00:00:00 и в отчете самый первый документ тот самый, что на 00 учитывается при расчете начальных остатков, т.е. на конец предыдущего дня он не учитывается, а на начало текущего - учитывается :-(. Вот и лезет разница в отчете, т.е. получается, что данные на конец предыдущего дня не равны данным на начало текущего...
|
|||
39
Сияющий Асинхраль
29.07.14
✎
18:27
|
Победил!!!
|
|||
40
программистище
30.07.14
✎
09:17
|
(39) чем? изменением проведения установок цен?
|
|||
41
программистище
30.07.14
✎
15:43
|
короче, я сформировал остатки обычной таблицей
медленно, но цифры реальные :( |
|||
42
Сияющий Асинхраль
30.07.14
✎
16:14
|
(40) Ну я уже несколько раз сказал, что надо сделать: либо убрать установку цен со времени 00:00:00, либо время начала отчета сдвинуть назад хотя бы на одну секунду. Я сдвинул время начала отчета...
|
|||
43
программистище
30.07.14
✎
16:22
|
(42) спасибо, проверю
|
|||
44
Сияющий Асинхраль
30.07.14
✎
16:32
|
Касательно отчета ведомость по остаткам в ценах номенклатуры достаточно значение функции определяющее начало периода:
&ПериодОтчета.ДатаНачала заменить на: ДобавитьКДате(&ПериодОтчета.ДатаНачала,"Секунда",-1) Вчера не сразу заметил, что заменял в другом отчете :-(, и чертыхался поэтому, что не работает. На самом деле работает, все в норме... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |