|
Контроль остатков. НЕ оперативный режим. | ☑ | ||
---|---|---|---|---|
0
e2e4
10.08.15
✎
19:51
|
С оперативным все разжевано и понятно. А НЕ оперативный?
Навскидку сделал так: в "контрольном" запросе (после записи движений) устанавливаю параметр Период виртуальной таблицы остатков в Дата+1. Т.е. проверяю появление отрицательных остатков через 1 секунду после даты дока. Вроде работает - но фэншуйно ли это? ...Или фигней маюсь и реальные пацаны контролируют остатки только оперативно??? |
|||
1
zak555
10.08.15
✎
19:52
|
в оперативном
|
|||
2
e2e4
10.08.15
✎
19:53
|
(1) и точка?
|
|||
3
zak555
10.08.15
✎
19:56
|
проверять отрицательные остатки нужно на Новый Граница(МоментВремени, ВидГраницы.Включая)
|
|||
4
Михаил Козлов
10.08.15
✎
19:59
|
Корректного контроля остатков не получится: отрицательные могут возникнуть позднее.
|
|||
5
floody
10.08.15
✎
20:03
|
(4) для этого можно проверять на отрицательные остатки в текущих итогах. а вообще - фигня конечно все это.
(0) сама неоперативность и отражает по сути ненужность контроля остатков |
|||
6
e2e4
10.08.15
✎
20:07
|
(4) ну, если доков немного и в каждом организовать полный контроль остатков (оперативный и неоперативный)?
кстати...немного оффтоп: а что вернет ЕСТЬNULL(Х,-1), когда Х == 0 ??? |
|||
7
shuhard_серый
10.08.15
✎
20:14
|
(6) 0 вернёт
|
|||
8
e2e4
10.08.15
✎
20:15
|
(7) и я так думал. А фигушки! -1.
...сам в шоке... |
|||
9
e2e4
10.08.15
✎
20:19
|
Вот мой извращенский контроль остатков (с учетом (3)):
//проверим отрицательные остатки Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ПередачаОбъектовВПрокат.ОбъектПроката, | СУММА(ПередачаОбъектовВПрокат.Количество) КАК Количество |ПОМЕСТИТЬ ОбъектыДляПередачи |ИЗ | Документ.ПередачаВПрокат.ПереченьОбъектовПроката КАК ПередачаОбъектовВПрокат |ГДЕ | ПередачаОбъектовВПрокат.Ссылка = &Ссылка |СГРУППИРОВАТЬ ПО | ПередачаОбъектовВПрокат.ОбъектПроката"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); ЗапросОстатки = Новый Запрос; ЗапросОстатки.МенеджерВременныхТаблиц = МенеджерВТ; ЗапросОстатки.Текст = "ВЫБРАТЬ | ОбъектыДляПередачи.ОбъектПроката, //запретим расход еще "несуществующих" объектов проката - сделаем остаток отрицательным | ЕстьNULL(ОстаткиОбъектовПрокатаПредприятияОстатки.КоличествоОстаток,-9) КАК Остаток |ИЗ | ОбъектыДляПередачи КАК ОбъектыДляПередачи | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиОбъектовПрокатаПредприятия.Остатки(&ДатаРасчета, | ОбъектПроката В (ВЫБРАТЬ ОбъектыДляПередачи.ОбъектПроката ИЗ ОбъектыДляПередачи) И ТочкаПроката = &ТочкаПроката) | КАК ОстаткиОбъектовПрокатаПредприятияОстатки | ПО ОбъектыДляПередачи.ОбъектПроката = ОстаткиОбъектовПрокатаПредприятияОстатки.ОбъектПроката"; ЧудноеМгновенье = Новый Граница(Дата, ВидГраницы.Включая); ЗапросОстатки.УстановитьПараметр("ДатаРасчета", ЧудноеМгновенье); ЗапросОстатки.УстановитьПараметр("ТочкаПроката", ТочкаПроката); РезультатЗапроса = ЗапросОстатки.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Остаток < 0 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "На "+ЧудноеМгновенье+" в <"+ТочкаПроката+"> нет в наличии достаточного количества объектов проката " + ВыборкаДетальныеЗаписи.ОбъектПроката; Сообщение.Сообщить(); Отказ = Истина; Возврат; КонецЕсли; КонецЦикла; |
|||
10
zak555
10.08.15
✎
20:19
|
||||
11
floody
10.08.15
✎
20:22
|
(9) ты вот что скажи: а если у тебя через 2 секунды уже есть проведенный документ, который предварительно списал эту номенклатуру, и теперь она ушла в минус. что делать-то будешь? брось эту бредовую затею
|
|||
12
e2e4
10.08.15
✎
20:24
|
(10) вчера как раз нашарил ее - пока niasililmnogabukaff))
...так вот, по поводу ЕстьНУЛЛ - если в (9) в остатке есть хоть объект, то все ок, проводится; увеличим в документе соответствующую позицию на 1 - все, фигушки, и ВыборкаДетальныеЗаписи.Остаток = -9! (еще раз извиняюсь за оффтоп, но как раз при ковырянии в этой теме сделал такое шокирующее открытие!) |
|||
13
e2e4
10.08.15
✎
20:28
|
(11) логично...
|
|||
14
H A D G E H O G s
10.08.15
✎
20:50
|
Сделать как в УТ11 - контролировать текущие остатки после проведения и откатывать транзакцию в случае недостатка.
|
|||
15
shuhard_серый
11.08.15
✎
08:13
|
(14) сделать как в ERP, не давать распроводить документы, если в будущем будут отрицательные остатки =)
|
|||
16
zak555
11.08.15
✎
08:19
|
(15) там проверяется остаток на каждую операцию вперёд ?
|
|||
17
shuhard_серый
11.08.15
✎
08:22
|
(16) зависит от учетной политики
- либо на конец каждого дня - либо на конец каждого месяца |
|||
18
hhhh
11.08.15
✎
08:26
|
(13) если не было движений, там не 0, а NULL. Открытие он сделал, открывальщик, блин.
|
|||
19
vvp91
11.08.15
✎
09:20
|
(17) только не на конец каждого дня/месяца, а просто на конец дня/месяца даты проведения.
|
|||
20
shuhard_серый
11.08.15
✎
09:32
|
(19) виноват, не проверил =)
|
|||
21
John83
12.08.15
✎
16:03
|
(15) а каким образом там сделано?
ведь может быть и отмена проведения и перепроведение |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |